URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 47255
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Управление десктоп приложениями из shell при помощи D-Bus"

Отправлено auto_tips , 26-Дек-08 11:19 
В качестве консольной утилиты для работы с 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


Содержание

Сообщения в этом обсуждении
"Управление десктоп приложениями из shell при помощи D-Bus"
Отправлено charon , 26-Дек-08 11:19 
org.freedesktop.Notifications
у меня на Федоре 9 такого нет.
А можно через эту штуку отображать уведомления на рабочем столе?

"Управление десктоп приложениями из shell при помощи D-Bus"
Отправлено fozz , 26-Дек-08 14:39 
send-notify(1)

"Управление десктоп приложениями из shell при помощи D-Bus"
Отправлено xasm , 27-Дек-08 14:34 
лучшеб CIM к линуксу нормально прикрутили, ведь уже есть стандарт чем он плох