Старожилы помнят, как легко и просто было во времена 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

Вуаля.

P.S. Думаете, гнома это не касается? :)

qdbus org.gnome.Listen /org/gnome/listen org.gnome.Listen.play_pause

:)

Originally published at Aceler online. You can comment here or there.