2

У меня Xubuntu 11.10, XFCE. Я хочу посылать сигналы DBus игрокам, чтобы они работали так же, как в Gnome: вы нажимаете клавишу «play», она играет, «next» - она вперед и так далее.

Для этого мне нужно привязать к мультимедийным клавишам такой набор команд:

dbus-send --dest=org.gnome.Rhythmbox ...

Теперь я искал и не могу найти его: какие сигналы я должен отправить? Мне нужно только 3 события: игра, перемотка вперед и назад.

Вот что мне удалось сделать до сих пор:

culebron@vostro:~/Work/game$ dbus-send --print-reply --dest=org.gnome.Rhythmbox /org/gnome/Rhythmbox org.gnome.Rhythmbox.Play
Error org.freedesktop.DBus.Error.UnknownMethod: Method "Play" with signature "" on interface "org.gnome.Rhythmbox" doesn't exist

culebron@vostro:~/Work/game$ dbus-send --print-reply --dest=org.gnome.Rhythmbox /org/gnome/Rhythmbox org.mpris.MediaPlayer2.Play
Error org.freedesktop.DBus.Error.UnknownMethod: Method "Play" with signature "" on interface "org.mpris.MediaPlayer2" doesn't exist

1 ответ1

2

Отправленный сигнал - org.gnome.SettingsDaemon.MediaKeys.MediaPlayerKeyPressed на /org/gnome/SettingsDaemon/MediaKeys , с двумя аргументами - именем целевой программы, которое сама программа регистрирует, и нажатой клавишей ("Play", "Stop", "Next", "Previous").

signal sender=:1.3 -> dest=(null destination) serial=3047
 path=/org/gnome/SettingsDaemon/MediaKeys
 interface=org.gnome.SettingsDaemon.MediaKeys
 member=MediaPlayerKeyPressed
   string "gnome-mpris-keybind (mpd)"
   string "Play"

Тем не менее, это, вероятно, будет бесполезно, так как без gsd ваш плеер не сможет зарегистрироваться и фактически не сможет прослушивать этот сигнал.

В некоторых случаях вы можете пропустить этот слой и напрямую управлять музыкальным проигрывателем - большинство проигрывателей экспортируют интерфейс MPRIS2 в org.mpris.MediaPlayer2. playername, другие имеют свои пользовательские интерфейсы, которые можно исследовать с помощью D-Feet.

method call sender=:1.449 -> dest=org.mpris.MediaPlayer2.mpd serial=17
  path=/org/mpris/MediaPlayer2;
  interface=org.mpris.MediaPlayer2.Player;
  member=PlayPause

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .