Всем привет
Перехожу на mpd+"идеальный_клиент", пока остановился на ncmpcpp и возникает несколько вопросов:
1. Как сделать чтобы play и pause были на одном хоткее в зависимости от текущего состояния? ncmpcpp умеет play и pause, но это разные команды. А мне чтобы в xbindkeys засунуть и рулить глобально мультимедийными клавишами. Все современные проигрыватели давно умеют совмещать play/pause на одной клавише. Наверное тут можно скриптом, который бы проверял текущее состояние воспроизведения и в зависимости от этого говорил play или pause. Но как у mpd узнать текущее состояние воспроизведения? state_file не прокатывает ибо там "на ходу" ничего не меняется. Или как-то иначе с меньшими костылями можно?
2. Как убрать заголовки таблицы те что artist, album и т.д.? Есть параметр header_visibility, но он только убирает инфу о кол-ве песен в плейлисте.
3. Как отучить его намертво виснуть при обрыве коннекта с mpd? У меня вай-фай крайне глючный, часто рвется коннект. ncmpc проглатывал это без проблем регулярными попытками соединения. А ++ виснет намертво пока не убьёшь его и восстановишь коннект. Крутилка mpd_connection_timeout не помогает. Покупку нормальной вайфайной точки не предлагать ибо не панацея
1. toggle
2. не знаю, возможно ли это вообще
3. это баг самого ncmpcpp. Он исправлен в git-версии, но там появился баг с отображением позиции в треке, так что не советую пока на неё переходить.
Позвольте ещё один вопрос на смежную тему
Настроил хоткеи, всё путём с нетбука рулится музыкой на стационарном компе. В .ncmpcpp/config mpd_host= 'home" соответственно при запуске ncmpcpp он по умолчанию коннектицо к стационарному компу. Но фишка в том, что действия на хоткеях запускают ncmpcpp с соответсвующей опцией и отправляют команду на хост. По умолчанию, естественно, на указаный в конфиге "home". Теперь мне захотелось слушать музычку локально на нетбуке (шара смотнирована через nfs). Поставил mpd, поправил конфиг, запускаю ncmpcpp -h localhost и всё как-бы работает, но одна неприятность. Хоткеи по-прежнему работают для хоста "home" из конфига.
Собственно вопрос: как с минимальными костылями сделать чтобы оно проверяло на какой хост натравлен уже запущеный ncmpcpp и соответсвующим образом отправляло хоткейные команды? Т.е. примерно нужно чтобы когда ncmpcpp натравлен на удалённый mpd шли хоткейные команды "ncmpcpp stop", а когда на локальный, то "ncmpcpp -h localhost stop". Или как-то ещё может это можно. Нагугливается вариант с icecast, но это мега-костыль. Хитровыпуклый скрипт тоже в голову не приходит.
Заранее спасибо
Собственно вопрос: как с минимальными костылями сделать чтобы оно проверяло на какой хост натравлен уже запущеный ncmpcpp и соответсвующим образом отправляло хоткейные команды? Т.е. примерно нужно чтобы когда ncmpcpp натравлен на удалённый mpd шли хоткейные команды "ncmpcpp stop", а когда на локальный, то "ncmpcpp -h localhost stop".
Без костылей будет так: если ncmpcpp запущен, то и управляйте из него, а хоткеи используйте когда он не запущен.
Всё остальное - с костылями. Например:
$(cat /proc/$(pgrep ncmpcpp)/cmdline | tr '\0' ' ') toggle
(этот способ не будет работать, если ncmpcpp не запущен, нужно сначала проверить, запущен ли он)