Управление конфигурацией KDE5 из скрипта или коммандной строки

Изображение пользователя lord_i.

Всем привет.
Хочу на маленьком примере разобрать способ управления конфигурацией KDE5 из скрипта или коммандной строки.
Итак, задача - включать или отключать блокировку экрана паролем после выхода из ждущего режима.

Все интересующие нас конфигурационные файлы в KDE5 хранятся по пути ~/.config
Изменяем настройку блокировки, жмем "применить" и наблюдаем какой файл обновился (поменялась дата и время).
В нашем случае это файл kscreenlockerrc, в котором при включении/отключении блокировки экрана
меняется зачение в секции Daemon:
[Daemon]
Autolock=true
LockOnResume=true
на
[Daemon]
Autolock=true
LockOnResume=false
Вносить изменения в данный файл возможно любым удобным способом. Разработчики KDE5 предлагают для этого
специальную утилиту kwriteconfig5. Примеров ее использования достаточно много в сети.
В нашем случае, коммандная строка будет иметь такой вид:
kwriteconfig5 --file kscreenlockerrc --group Daemon --key LockOnResume --type bool true (включаем блокировку)
kwriteconfig5 --file kscreenlockerrc --group Daemon --key LockOnResume --type bool false (отключаем блокировку)

Но если просто отредактировать этот файл система считает настройки только после полного перезапуска, что в подавляющем большинстве задач теряет всякий смысл. Всегда хочется чтоб настройки вступили в силу немедленно :)
Для воплощения задуманного придется провести небольшое исследование, используя замечательную утилиту dbus-monitor
Запускаем ее в терминале из под текущего пользователя. В выдаче получаем полный лог обмена по dbus. В окне настройки блокировщика экрана переключаем настройку блокировки, жмем "применить" и после этого останавливаем dbus-monitor в терминале по ^C.
Таким образом, в терминальном окне осталась запись через какой модуль система активировала данную настройку:
method call time=1526371071.086713 sender=:1.517 -> destination=org.kde.screensaver serial=56 path=/ScreenSaver; interface=org.kde.screensaver; member=configure
Осталось возпроизвести ее, используя утилиту qdbus:
qdbus org.kde.screensaver /ScreenSaver configure
Вот собственно и все - нужная настройка прописана в текущую конфигурацию системы.
Рад буду, если кому-то поможет в нестандартной ситуации. Если у кого-то есть подобные наработки в пятых кедах - не ленитесь сюда выложить на радость людям :)
Всем удачи, ставьте лайки и подписывайтесь на канал https://t.me/kubuntu_ru_botfree

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры