Янв 19

Разбирая старые непрочитанные заметки в Google Reader, нашёл ещё несколько советов с использованием D-Bus за авторством Dennis Nienhüser. Например, вот так можно заблокировать экран:

qdbus org.kde.krunner /ScreenSaver Lock

(можно также ввести «заблокировать экран» или «lock screen» в KRunner)

Более интересная команда

qdbus org.kde.krunner /ScreenSaver SimulateUserActivity

Не позволит запуститься хранителю экрана. Правда, в этом случае X-сервер может в зависимости от настроек экран потушить. Чтобы это обойти, необходимо запустить команду

xset dpms 0 0 0

Первый аргумент xset dpms указывает время в секундах до гашения монитора без его выключения (фактически — просто «чёрный скринсейвер»), второй — до перехода в ждущий режим и третий — до выключения монитора (на практике третье действие обычно аналогично второму). Ноль, соответственно, означает выключение этих функций. К слову, эти же параметры можно настроить и в xorg.conf, но у меня эти настройки почему-то не работают.

Вот этот скрипт позволит отключить запуск скринсейвера или выключение монитора на время выполнения команды, переданной в параметрах:

#!/bin/bash
xset dpms 0 0 0
$* &
while jobs | grep -q Running
do
    qdbus org.kde.krunner /ScreenSaver SimulateUserActivity
    sleep 30
done
xset dpms 0 0 3600 # выключение монитора через час простоя
мая 08

Во времена KDE3 продвинутые пользователи владели скрытым знанием, имя которому было DCOP. DCOP расшифровывается как Desktop COmmunication Protocol. Если верить русской Википедии, то цель DCOP — обеспечивать межпроцессное взаимодействие и распределять сложные задачи. Для нас важно, что используя этот интерфейс, можно было управлять поведением KDE-приложений извне: из своих скриптов или повесив нужное действие на сочетание клавиш.

К примеру, поводом для написания этой статьи стал вот этот комментарий к заметке о Yakuake:

C yakuake уже больше года. В kde3 с помощью DCOP автоматически при заходе на определенный хост называл вкладки: dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "host_xx"

Пользователи других оконных оболочек на самом деле страшно завидовали, что в KDE можно хоть из командной строки “сказать” KMail’у запустить проверку почты, или Amarok’у переключиться на следующий трек, или рабочему столу сменить фоновую картинку… Поэтому в рамках проекта freedesktop.org разработчики KDE и Gnome совместно разработали межпрограммный интерфейс D-Bus, который стал стандартом для различных оконных сред, а для KDE4 — наследником DCOP.

По информации из всё той же Википедии, D-Bus-интерфейсы есть для Glib, Java (GCJ), Mono, Qt и Python. В наших примерах мы будем использовать консольную утилиту qdbus.

Читать далее »