вторник, 3 июня 2014 г.

Переключение трека в mpd через dmenu и mpc

Если вы пользуетесь MPD  и не хотите постоянно держать запущенным какой-нибудь клиент, типа Sonata, для переключения треков, то можно повесить на hotkey вот такой простой скрипт
mpc playlist | dmenu -l 10  | xargs -I '{}' sh -c "mpc playlist | grep -rne '{}' | awk -F:  '{print \$1}'"  | xargs -I '{}' sh -c "test -n '{}'&& mpc play '{}'"
получаем текущей playlist
mpc playlist
и выводим его с помощью dmenu(вертикально, 10 строчек)
dmenu -l 10
посылаем выбранный трек
xargs -I '{}' sh -c 
фильтруем playlist по выбранному треку и выставляем номер строки данного трека
mpc playlist | grep -rne '{}' 
оставляем только номер трека
awk -F:  '{print \$1}'"
проверяем что трек был выбран. В случае если нажали Esc, трек не надо переключать. Запускаем выбранные трек
xargs -I '{}' sh -c "test -n '{}'&& mpc play '{}'"

У меня в Qtile hotkey выглядит вот так:

Key(
        [mod], "m",
        lazy.spawn(
            """
            mpc playlist | dmenu -l 10  |\
            xargs -I '{}' sh -c "mpc playlist \
            | grep -rne '{}' | awk -F: '{print \$1}'" \
            | xargs -I '{}' sh -c "test -n '{}' && mpc play '{}'"
            """)
    ),
Переключение вперед/назад/стоп
Key([mod], "Home", lazy.spawn("mpc toggle")),
Key([mod], "End", lazy.spawn("mpc stop")),
Key([mod], "Page_Down", lazy.spawn("mpc next")),
Key([mod], "Delete", lazy.spawn("mpc prev")),




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