Убунтариум

индекс
253,47

Простое управление Music Player Daemon на Панели Gnome

Disclaimer: эта статья — для чайников навроде меня.



Я использую MPD в качестве медиапроигрывателя, что очень удобно: демон очень маленький и экономный, а работает очень надёжно и быстро.

Чтобы не портить эти качества, хотелось, чтобы и управлять им из Gnome можно было столь же легко, просто и без накладных расходов. В репозитории имеется специальный апплет Панели Gnome music-applet, но он тянет за собой уйму зависимостей, не очень удобен и вообще отношения у меня с ним не сложились. В конце концов я остановился на самом прямолинейном решении.

Нужен MPC



MPC (Music Player Command) — крохотная утилита для управления MPD из командной строки. Если вы уже напряглись, можете выдохнуть, команды для управления мы выдавать вручную не будем.

Итак, ставим MPC:

sudo aptitude install mpc


Создаём кнопки на панели


Необходимо добавить несколько кнопок по вкусу, например, так, как на картинке 1 выше.

В моей конфигурации имеется один нюанс. Я использую вертикальную панель, поскольку на широком экране она позволяет задействовать экранное место более эффективно. Но по умолчанию кнопки-запускалки масштабируются под ширину панели, что нафиг ненужно совершенно не то, что мы хотели.

Я установил очень удобный апплет панели Launchers List, позволяющий скирдовать ярлыки вдоль и поперёк в требуемых количествах:

sudo aptitude install quick-lounge-applet

После этого делаем правый клик по свободному месту на панели и выбираем Add to Panel.... Потом правый клик по «рукоятке» свежедобавленного апплета и Preferences:



Итак, рекомендуемые команды таковы:
  • mpc prev — предыдущий трек.
  • mpc toggle — играть/пауза.
  • mpc next — следующий трек.
  • mpc random — воспроизведение вразброс вкл./выкл.
  • mpc update — повторно сканировать каталог с музыкальными файлами.

Обо всех возможностях mpc можно узнать обычным способом:

man mpc

В качестве иконок для кнопок я использовал стандартные значки, например, из каталога /usr/share/icons/Humanity/actions/16/.

Продвигаем


Для пущей красивости можно задействовать стандартные уведомления Убунту, чтобы после нажатия кнопки некоторое время выглядело так:



Для этого мы воспользуемся небезызвестной утилитой notify-send, входящей в состав пакета libnotify-bin:

sudo aptitude install libnotify-bin

а также небольшим скриптом, который нужно сохранить (скажем, под именем mpd-control) где-нибудь (например, в ~/bin), дать право на выполнение:

chmod +x mpd-control

и после этого запускать вместо mpc его. Он также поддерживает 5 вышеупомянутых команд (prev, next, toggle, random и update).

Обновл: для самых суровых — идею развили и сделали HTTP-сервер на Python для более продвинутого отображения подсказок.

Один раз увидеть?



Иногда бывает интересно, что же именно такое играет. Лично я использую для удовлетворения любопытства обычную conky, имеющую в своём обширном арсенале датчиков и данные о состоянии MPD. Выглядит это примерно так, как на рисунке 2 справа.

Последние штрихи



Ещё иногда хочется управлять вопроизведением без мыши и из любого приложения. Если вам этого захотелось и у вас установлен Compiz, вы можете назначить соответствующие команды в CompizConfig Settings Manager (sudo aptitude install compizconfig-settings-manager), в том числе и на мультимедийные кнопки на клавиатуре:


Пожалуй, всё.
+26
12 марта 2010, 19:43
38

комментарии (38)

+2
yktoo #
Интересно, за что топят пост?
0
ipfw #
Отличный пост, как раз хочу перейти с ритмбокса на mpd.
Если нетрудно, выложите куда-нибудь кофиг коньков, красиво выглядит.
+2
yktoo #
0
ipfw #
Спасибо.
0
Antigluk #
Спасибо! =)
0
Anghei #
У меня почему то он всегда распологается только слева. Параметр alignment top_right не срабатывает…
0
yktoo #
Да, это известный баг, который уже исправлен в 1.8.0.

Пока вроде бы помогает передавать положение параметром при запуске:

conky -a tr
0
Anghei #
Ок, спасибо!
А как исправить то что он поверх всех окон у меня становится?!
0
yktoo #
Сменить window type, наверное.
0
heXi1e #
Кроме размеров поглощаемых ресурсов в сравнении с ритмбоксом у мпд есть еще какой-нибудь профит?
0
Zharskiy #
+1
libre.fm/lastfm там есть?
медиа библиотеку с оценками и рейтингами можно прикрутить?
+2
heXi1e #
Ласт фм и библиотека есть. А насчёт рейтингов не в курсе.
0
yktoo #
Основные преимущества, как я понимаю — это используемая в статье возможность автоматизации и возможность работать stream-сервером.
0
yuretsz #
На сколько я понял в сути скрипта подобное можно для любого плеера организовать.
0
ciiccii #
тоже использую мпд, для тех, кто не желает тратить 10 минут на создание своей панели — устанавливают Music Applet. ;-) он поддерживает управление кучей разных проигрывателей. В том числе и мпд ;) Приятного прослушивания.
0
Meister #
Вставлю своё слово.
1) можно управление mpd интегрировать и в другие панели других графических окружений, а не только в гноме (в частности для xfce есть пакетик xfce4-mpc-plugin).
2) кроме того есть прекрасный gui-клиент Sonata (которым и пользуюсь), в интерфейсе которого ничего лишнего.
3) из фич mpd, которые мне нравятся, хочу отметить, что можно перезагружать иксы, а музыка будет играть; далее, после перезагрузки компа (или повторного включения) воспроизведение начнётся с того места, где оно закончилось при выключении без дополнительных усилий.
Собственно, enjoy it :)
+1
Antigluk #
Из клиентов мне больше нравится GMPC. Там есть все, что нужно.
А соната не понравилась сразу. Почему — незнаю. Может потому что при моих больших плейлистах (>3000) она тормозит.
0
DarkboodZed #
Пользуюсь mocp, подцепив управление на удобные мне хоткеи
moc.daper.net/
0
SpooNesT #
А можно сделать в mocp чтобы отображалась композиция с помощью conky, например, или обычными нотификациями?
0
Lordwind #
> Gnome music-applet, но он тянет за собой уйму зависимостей, не очень удобен

Ай, не соглашусь. Аплет висит на панели — управлять можно при любом нагромождении окон. ММ клавиши убунта к примеру уже понимает очень хорошо, если надо в гноме на Play, Stop и т.п. можно назначить что угодно. А в качестве плеера юзается старый добрый Audacious. Я понимаю что каждому свое, но убедительных причин «почему сабж» не увидел.
0
flaresun #
А как у MPD с поддержкой форматов? В частности ape и поддержка cue+ape/flac/wav…
У них в описании ни про ape, ни про cue не написано, отсюда вопрос :)
+1
tiandrey #
Все играет, на что найдет кодеки, вот с cue пока не очень — заявлена поддержка embedded cue; когда в одной папке лежат .flac и .cue с одинаковыми названиями — иногда дает flac-у название группы, трека, альбома, но не разбивает на отдельные треки
+1
tiandrey #
Для ape нужен Monkey's Audio Codecs aka mac (http://supermmx.org/linux/mac/, etree.org/shnutils/shntool/)
0
flaresun #
А как заставить mpd при проигрывании чего-либо оставлять возможность другим приложениям тоже воспроизводить звук?
У меня он что-то в монопольном что ли режиме звуком пользуется… Переключил его на PulseAudio (остальные приложения на нём работают нормально и друг другу не мешают без каких-либо доп. настроек) — всё равно либо играет только mpd, либо всё, кроме mpd…
0
tiandrey #
Не знаю, у меня чистая альса без пульсаудио, все нормально работает.
0
flaresun #
У меня по дефолту тоже была альса, но играло так же — либо только mpd, либо всё кроме mpd… Ну надо будет потом ещё поковыряться
0
yktoo #
У меня включен вывод на PulseAudio — никаких проблем, параллельно выводится звук от MPD, Totem, FireFox:

audio_output {
  type "pulse"
  name "MPD PulseAudio Output"
}
0
citius #
Управляемого плейлиста вообще нет чтоли?
0
yktoo #
Плейлисты есть, без проблем как раз.
0
tiandrey #
Чтобы использовать мультимедиа-клавиши не только в иксах, можно использовать actkbd (http://users.softlab.ece.ntua.gr/~thkala/projects/actkbd/). Удобно, когда какое-то приложение (гамы :-) ) работает в полноэкранном режиме — гном (*DE/WM) не обработает нажатие клавиш, а actkbd обработает.
0
Antigluk #
Всё круто, одно неудобно: перемешка вкл/выкл — невидна текущая позиция.
0
Antigluk #
Проблему решил: в grep при использовании регекспов нужно экранировать служебные символы!
random)
mpc --no-status random
notify_text="$(mpc status | grep -o -r 'random: (on|off)')"
notify_icon='media-playlist-shuffle'
;;


меняем на

random)
mpc --no-status random
notify_text="$(mpc status | grep -o -r 'random: \(on\|off\)')"
notify_icon='media-playlist-shuffle'
;;


В остальных местах всё экранировано.
0
yktoo #
А, да, верно. У меня ещё в conky иконка рисуется, когда shuffle включен.
0
yktoo #
mpc status | sed '2 ! d' | cut -d ' ' -f 3

Оно?
0
Antigluk #
Может и оно. Меня пока что и с грепом устраивает.
Пока что подпилил себе еще немного: при переключении статусов, песен и т.д. сообщения будут показываться через каждые 10 с.
из этой статьи для скайпа, переделал немного скрипты для универсальности: antigluk.habrahabr.ru/blog/87471/
0
yktoo #
Вставил упоминание в статью.
0
MegafonUral #
выглядит конечно интересно, но простым это решение я бы все-равно не назвал…

Имхо, куда быстрее поставить Qmmp (sudo apt-get install qmmp), который выглядит 1 в 1 как винамп-классик и даже поддерживает скины от него. А все переключения треков делать через глобальные хоткеи (Ctrl+PageUp = next, например).
И libnotify там уже прикручен.
0
yktoo #
Ну, фронт-эндов для MPD есть масса. Мне приглянулся, например, Ario — для задач, где упомянутых средств мало.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.