Показаны сообщения с ярлыком cli. Показать все сообщения
Показаны сообщения с ярлыком cli. Показать все сообщения

воскресенье, 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 и можно управлять любым плеером одними и теми же комбинациями.

Управление VLC, Amarok, Kaffine, Clementine, qmmp, guayadeque из консоли


В этом поможет консольная утилита qdbus

Для VLC qdbus org.mpris.vlc /Player
Для Amarok qdbus org.kde.amarok
Для Kaffeine qdbus org.mpris.kaffeine
Для guayadeque qdbus org.mpris.guayadeque
Для Clementine qdbus org.mpris.clementine
Для qmmp qdbus org.mpris.qmmp
Для audacious qdbus org.mpris.audacious

Для xmms2 qdbus org.mpris.xmms2



Пишем в консоле qdbus org.mpris.vlc /Player и получаем:
$ qdbus org.mpris.vlc /Player
Service 'org.mpris.vlc' does not exist.

Ага, забыли запустить плеер, запускаем плеер, и повторяем
userhome@debian:~$ qdbus org.mpris.vlc /Player
method QString org.freedesktop.DBus.Introspectable.Introspect()
signal void org.freedesktop.MediaPlayer.CapsChange(int)
method int org.freedesktop.MediaPlayer.GetCaps()
method void org.freedesktop.MediaPlayer.Next()
method void org.freedesktop.MediaPlayer.Pause()
method void org.freedesktop.MediaPlayer.Play()
method int org.freedesktop.MediaPlayer.PositionGet()
method void org.freedesktop.MediaPlayer.PositionSet(int)
method void org.freedesktop.MediaPlayer.Prev()
method void org.freedesktop.MediaPlayer.Repeat(bool)
method void org.freedesktop.MediaPlayer.Stop()
method int org.freedesktop.MediaPlayer.VolumeGet()
method void org.freedesktop.MediaPlayer.VolumeSet(int)
Как видно есть все для управления. 

Как этот можно использовать?
Например привязать скрипт к комбинации клавиш, и управлять например громкостью в активном плеере:

Перемотка:

 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
fi
Или остановить проигрывание

 if ps aux | grep vlc | grep -v grep > /dev/null
then
qdbus org.mpris.xmms2 /Player org.freedesktop.MediaPlayer.Stop
fi


А может уменьшить громкость одним движением мыши ?
Написать скрипт ~/scripts/volume

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.clementine /Player org.freedesktop.MediaPlayer.VolumeSet $vol
fi

Установить brightside, и привязать этот скрипт к левому верхнему углу.
Теперь при перемещении курсора в левый верхний угол экрана, громкость уменьшится)

Также можно получать Метаданные проигрываемого трека
qdbus org.mpris.vlc /Player GetMetadata
Что можно использовать например в conky