Я могу сохранить сеанс KDE с помощью меню запуска KDE. Но как мне сохранить мой сеанс командой shell?
3 ответа
Если вы хотите сохранить то, что модуль управления Session Management называет «сессией, сохраненной вручную»:
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.saveCurrentSession
Если вы хотите перезаписать сеанс, который обычно сохраняется при выходе из системы:
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.saveCurrentSessionAs "saved at previous logout"
Получить список существующих сессий:
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.sessionList
(Известные имена сеансов "сохраняются пользователем" и "сохраняются при предыдущем выходе из системы")
Вы можете найти более интересные команды, если пропустите метод из команды как таковой:
qdbus org.kde.ksmserver /KSMServer
Данные сеанса хранятся в: ~/.kde4/share/config/ksmserverrc
Кнопка меню "Пуск" KDE сохраняет сеанс с именем "сохранено пользователем", и он восстанавливается при входе в систему, если и только если вы выбрали восстановление вручную сохраненного сеанса в настройках.
Чтобы сохранить сеанс этого типа из командной строки, введите команду DISPLAY=:0.0 qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.saveCurrentSession
подойдет (поиск правильного сеанса dbus - более сложная уловка для этого ответа).
Однако выше не сохраняет сессию при выходе из системы. С возможностью восстановления сеанса, сохраненного при выходе из системы, можно предположить команду qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.saveCurrentSessionAs "saved at previous logout"
будет работать, но это не так. Ksmserver не позволяет перезаписывать этот специальный сеанс (см. Эту строку в исходном коде).
Существует ошибка kde, связанная с этим более поздним случаем, которая предоставляет подсказки для обходного пути, пока ошибка не будет устранена (это может занять много времени).
dbus-send --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.saveCurrentSession
сохранит ваш сеанс. Если вы хотите восстановить его, запустите ksmserver
, который должен автоматически загрузить сеанс.
(Обратите внимание, что между \KSMServer
и org.kde.KSMServerInterface.saveCurrentSession
, они все должны быть в одной и той же терминальной команде)
Более подробная информация здесь: http://raetsel.wordpress.com/2008/04/25/kde4-save-current-session-dbus-to-the-rescue/