вызов функции другой программы выглядит следующим образом:
dbus-send --dest=org.freedesktop.ExampleName /org/freedesktop/sample/object/name org.freedesktop.ExampleInterface.ExampleMethod
Где:
org.freedesktop.ExampleName — это имя «пункта назначения», т.е. идентификатор программы;
/org/freedesktop/sample/object/name — путь к объекту в программе, у которого мы будем вызывать функцию;
org.freedesktop.ExampleInterface.ExampleMethod — собственно, имя функции, которую мы вызываем.
Пример для audacious
воспроизведение/пауза:
dbus-send --dest=org.mpris.audacious /org/atheme/audacious org.atheme.audacious.PlayPauseстоп:
dbus-send --dest=org.mpris.audacious /Player org.freedesktop.MediaPlayer.Stopпредыдущая в списке композиция:
dbus-send --dest=org.mpris.audacious /Player org.freedesktop.MediaPlayer.Prevследующая в списке композиция:
dbus-send --dest=org.mpris.audacious /Player org.freedesktop.MediaPlayer.Next
Второй вариант - использование audtool
Список всего что может audtool можно получить из справки, а может он много)
Например:
audtool playback-playpauseЯ использую оба плеера, и мне удобно управлять ими с клавиатуры, поэтому написал мини-скрипты, и привязал их к клавишам в rc.xml
audtool playback-stop
Пример:
Управление громкостью плеера.
Здесь скрипт проверяет какой плеер сейчас активен, и изменяет его громкость.
#!/bin/bashВ rc.xml прописал следующее:
if ps aux | grep audacious | grep -v grep > /dev/null
then
volume=`audtool get-volume`
let "vol=$volume $1";
audtool set-volume $vol;
else
if `mpc | grep ' - '`
then
mpc volume $1
fi
fi
<keybind key="C-Up">И теперь при нажатии на Ctrl + Up или Ctrl + Down громкость проигрывателя увеличится или уменьшится на 10.
<action name="execute">
<execute>/home/userhome/scripts/player/volume +10</execute>
</action>
</keybind>
<keybind key="C-Down">
<action name="execute">
<execute>/home/userhome/scripts/player/volume -10</execute>
</action>
</keybind>
По анологии привязал к клавишам скрипты play/pause, stop, next, prev, seek+, seek-
#!/bin/bashДля управления общей громкостью системы, т.е. Master
if ps aux | grep audacious | grep -v grep > /dev/null
then
audtool playback-playpause
else
if `mpc | grep ' - '`
then
mpc play
fi
fi
использую также скрипт на хоткее:
#!/bin/bashПараметр $1 также передаю вызывая скрипт из rc.xml
volume=`amixer sget Master | grep "Mono: Playback" | cut -d [ -f 2 | cut -d % -f 1`
let "vol=$volume $1";
amixer sset Master $vol%;
Комментариев нет:
Отправить комментарий