В качестве консольной утилиты для работы с D-Bus можно использовать "qdbus" из состава Qt4.При выполнении без аргументов, утилита qdbus выведет список активных шин:
qdbus
org.freedesktop.ScreenSaver
org.freedesktop.Notifications
org.freedesktop.PowerManagement
org.freedesktop.DBus
Отобразим список объектов для шины ScreenSaver:
qdbus org.freedesktop.ScreenSaver
/
/App
/Interface
/KBookmarkManager
/KBookmarkManager/konqueror
/KDebug
/MainApplication
/ManagerIface_contact
/ScreenSaver
Просмотрим методы объекта "/ScreenSaver":
qdbus org.freedesktop.ScreenSaver /ScreenSaver
signal void org.freedesktop.ScreenSaver.ActiveChanged(bool)
method bool org.freedesktop.ScreenSaver.GetActive()
method uint org.freedesktop.ScreenSaver.GetActiveTime()
method bool org.freedesktop.ScreenSaver.SetActive(bool e)
method void org.freedesktop.ScreenSaver.Lock()
method uint org.freedesktop.ScreenSaver.Inhibit(QString application_name, QString reason_for_inhibit)
...
Посмотрим значение текущего счетчика времени неактивности, после которого
активируется хранитель экрана. Просмотрим текущее значение:
qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetSessionIdleTime
0
С момента последнего нажатия клавиши прошло 0 сек. Попробуем ничего не нажимать:
sleep 5 ; qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetSessionIdleTime
4
Попробуем активировать хранитель экрана через метод org.freedesktop.ScreenSaver.SetActive:
qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.SetActive True
true
Блокируем экран:
qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock
В случае когда нужно предотвратить запуск хранителя экрана, например, во время просмотра видео, можно использовать:
qdbus org.freedesktop.ScreenSaver /ScreenSaver \
org.freedesktop.ScreenSaver.Inhibit "$$" "Testing D-Bus Interface"
5822
где, "$$" - имя приложения запретившего активацию хранителя экрана,
в нашем случае это PID текущего shell (5822).
второй аргумент - причина сдерживания хранителя экрана.
После того как хранитель экрана можно опять активировать, выполняем:
qdbus org.freedesktop.ScreenSaver /ScreenSaver \
org.freedesktop.ScreenSaver.UnInhibit 5822
Другие примеры.
Просмотрим список заметок из Tomboy.
qdbus org.gnome.Tomboy /org/gnome/Tomboy/RemoteControl org.gnome.Tomboy.RemoteControl.ListAllNotes
note://tomboy/5e900d91-bd77-4f41-89d8-e71baaafd364
note://tomboy/f647c681-b1b9-4eca-bdab-fd4b04cb37f6
Отобразим содержимое одной из них:
qdbus org.gnome.Tomboy /org/gnome/Tomboy/RemoteControl \
org.gnome.Tomboy.RemoteControl.GetNoteContents note://tomboy/5e900d91-bd77-4f41-89d8-e71baaafd364
URL: http://foss-boss.blogspot.com/2008/11/ride-d-bus-control-you...
Обсуждается: http://www.opennet.me/tips/info/1859.shtml