Skip to Content

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

Posted on One min read

Если вы пользуетесь 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")),

comments powered by Disqus