воскресенье, 6 ноября 2011 г.

Одни комбинации клавиш для управления разными плеерами


Часто пользуюсь разными плеерами, vlc для видео, audacious и mpd для музыки, и хочется управлять ими с клавиатуры одинаковыми комбинациями клавиш.

Используя утилиту qdbus, (примеры для разных плееров описал здесь ) можно написать скрипты управления, и привязать их к комбинациям клавиш.

Для плеера audacious можно использовать audtool, описанный в этой статье

Пример скрипта управления громкостью плееров (mpd, audacious, vlc). остальные объединяются аналогично:
#!/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 ps aux | grep vlc | grep -v grep > /dev/null
then
volume=`qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.VolumeGet`
let "vol=$volume $1"
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.VolumeSet $vol
else
if `mpc | grep ' - '` | cut -d '-' -f1 > /dev/null
then
mpc volume $1
fi
fi
fi
Пример управление перемоткой:
#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
audtool playback-seek-relative 10
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
pos=`qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.PositionGet`
let pos1=$pos +10000
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.PositionSet $pos1
else
if `mpc | grep ' - '` | cut -d '-' -f1 > /dev/null
then
mpc seek +10
fi
fi
fi
Следующий трек:

#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
dbus-send --dest=org.mpris.audacious /Player org.freedesktop.MediaPlayer.Next
else
if ps aux | grep foobnix | grep -v grep > /dev/null
then
foobnix --next
else
if ps aux | grep banshee | grep -v grep > /dev/null
then
banshee --next
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.Next
else
if `mpc | grep ' - '` | cut -d '-' -f1 > /dev/null
then
mpc next
fi
fi
fi
fi
fi
Пример Плей/Пауза:

 #!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
audtool playback-playpause
else
if ps aux | grep foobnix | grep -v grep > /dev/null
then
foobnix --play-pause
else
if ps aux | grep banshee | grep -v grep > /dev/null
then
banshee --pause
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause
else
if `mpc | grep ' - '` | cut -d '-' -f1 >> /dev/null
then
mpc play
fi
fi
fi
fi
fi
Теперь вешаем эти скрипты на комбинации клавиш. Для openbox это делается так:
Открываем файл ~/.config/openbox/rc.xml
и в секцию  <keyboard>  пишем:

<keybind key="C-Up">
      <action name="execute">
        <execute>/home/user/scripts/player/volume +10</execute>
      </action>
    </keybind>
    <keybind key="C-Down">
      <action name="execute">
        <execute>/home/user/scripts/player/volume -10</execute>
      </action>
    </keybind>
<keybind key="C-A-N">
      <action name="execute">
        <execute>/home/user/scripts/player/next</execute>
      </action>
    </keybind>
    <keybind key="C-A-B">
      <action name="execute">
        <execute>/home/user/scripts/player/prev</execute>
      </action>
    </keybind>
    <keybind key="C-A-P">
      <action name="execute">
        <execute>/home/user/scripts/player/playpause</execute>
      </action>
    </keybind>
    <keybind key="C-S-Left">
      <action name="execute">
        <execute>/home/user/scripts/player/seek +10</execute>
      </action>
    </keybind>
    <keybind key="C-S-Right">
      <action name="execute">
        <execute>/home/user/scripts/player/seek -10</execute>
      </action>
    </keybind>

Сохраняем, перезапускаем  DE и можно управлять любым плеером одними и теми же комбинациями.

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