The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Управление десктоп приложениями из shell при помощи D-Bus
В качестве консольной утилиты для работы с 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
 
24.12.2008 , Источник: http://foss-boss.blogspot.com/2008/...
Ключи: dbus, desktop, screen / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Файлы, копирование, архивация

Обсуждение [ RSS ]
  • 1, charon (ok), 11:19, 26/12/2008 [ответить]  
  • +/
    org.freedesktop.Notifications
    у меня на Федоре 9 такого нет.
    А можно через эту штуку отображать уведомления на рабочем столе?
     
  • 2, fozz (?), 14:39, 26/12/2008 [ответить]  
  • +/
    send-notify(1)
     
  • 3, xasm (??), 14:34, 27/12/2008 [ответить]  
  • +/
    лучшеб CIM к линуксу нормально прикрутили, ведь уже есть стандарт чем он плох
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру