понедельник, 29 марта 2010 г.

Управление Audacity из консоли

Управление через D-Bus
вызов функции другой программы выглядит следующим образом:

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
audtool playback-stop
Я использую оба плеера, и мне удобно управлять ими с клавиатуры, поэтому написал мини-скрипты, и привязал их к клавишам в rc.xml

Пример:
Управление громкостью плеера.
Здесь скрипт проверяет какой плеер сейчас активен, и изменяет его громкость.
#!/bin/bash
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
В rc.xml прописал следующее:
<keybind key="C-Up">
<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>
И теперь при нажатии на Ctrl + Up или Ctrl + Down громкость проигрывателя увеличится или уменьшится на 10.

По анологии привязал к клавишам скрипты play/pause, stop, next, prev, seek+, seek-
#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
audtool playback-playpause
else
if `mpc | grep ' - '`
then
mpc play
fi
fi
Для управления общей громкостью системы, т.е. Master
использую также скрипт на хоткее:
#!/bin/bash
volume=`amixer sget Master | grep "Mono: Playback" | cut -d [ -f 2 | cut -d % -f 1`
let "vol=$volume $1";
amixer sset Master $vol%;
Параметр $1 также передаю вызывая скрипт из rc.xml

Комментариев нет: