?

Log in

Christmas

aceler in ru_kde

Старожилы помнят, как легко и просто было во времена KDE 3.5, и как быстро писались однострочники вроде

dcop amarok Player pause

которая вызывала соответствующее действие в amarok.

В KDE 4 от старой системы DCOP отказались в пользу единой для всех DE и системы вообще шины DBUS. Главное преимущество этой шины перед DCOP состоит в том, что она, во-первых, нормально работает с несколькими объектами на шине, а во-вторых, умеет посылать сигналы нескольким объектам сразу. Плюс она теоретически может быть транслирована в удалённые вызовы XML-RPC, хотя я не видел приложений, которые бы этим пользовались на практике, разве что PulseAudio вроде этим занимается.

А как быть с полюбившимися однострочниками? Ничего страшного, DBUS предлагает несколько более сложный, но вполне удобный инструментарий для создания сообщений из командной строки. Команда зовётся qdbus. Запустив amarok, откройте терминал и выполните команду:

qdbus

Получите список объектов на вашей шине (выполните sudo qdbus — и получите другой список, рутовый). Найдите в нём org.kde.amarok — это и есть ваш amarok. Также, как и в случае dcop, запустим:

qdbus org.kde.amarok

Получим список интерфейсов, прямо почти как в dcop, только нотация другая. Ну и наконец, доберёмся до методов:

qdbus org.kde.amarok /Player

Получим список методов, который можно вызвать. Например, для вызова Пуск/Пауза, наберём:

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.PlayPause

Вуаля.

Comments

Спасибо за этот пост! Полезно.

Спасибо!!

Я вообще не знал, что такая возможность существует.
Ояебу. Покороче никак?
А зачем. Они же tab-completion тоже умеют :)
Круто! Спасибо за пост!
и правда интересно) нужно подумать как использовать для оптимизации
Ценно. Спасибо.
^_^ , aceler
KDE logo

Февраль 2012

Вс Пн Вт Ср Чт Пт Сб
   1234
567891011
12131415161718
19202122232425
26272829   

Метки

Разработано LiveJournal.com