lomereiter 13.06.2011 20:34
Coding — conky & clementine
Пересел я вчера с mpd+ario на Clementine и столкнулся с необходимостью переписывать конфиг коньков. Нагуглить удалось только костыльные решения в духе "qdbus org.mpris.clementine /Player GetMetadata | awk '/artist/{print substr($0,9)}'". Но мне это показалось каким-то убогим, и я сел ковыряться с DBus-ом на Vala.В конечном счёте я пришёл к следующему решению: на вход программе подаётся строка, элементы вида #{parameter} заменяются на то, что нужно, остальное остаётся неизменным. Преимущества подхода в том, что Metadata запрашивается единожды и к тому же в конфиге не возникает нагромождения ${exec bla-bla-bla}.
В итоге кусок конфигурации коньков будет иметь какой-то такой вид:
${execp clem_conky '
${alignc} ${color yellow} #{artist} ${color white}
${alignc} #{tracknumber} - #{title}
${alignc} #{album} (#{year})
${alignc} Bitrate: #{bitrate} kbps | Frequency: #{samplerate} Hz
${alignc} Volume: #{volume}%
${alignc} #{percent}% (#{elapsed} / #{totaltime})
${alignc} Shuffle: #{shuffle} | Status: #{status}
${alignc} #{progressbar}
'}
Если кто не в курсе — execp отличается от exec тем, что conky рассматривает вывод команды не как тупо строку, а как полноценный кусок конфигурации.
Примечания:
1) #{progressbar} отрисовывает через коньковский execibar, так что настроить его длину/ширину можно только через default_bar_size.
2) Кроме того, в конфиге наверняка придётся увеличить text_buffer_size, который по дефолту 128 — в данном случае хватило 512.
3) Поскольку Clementine соответствует спецификации MPRIS, код лёгким движением руки можно переделать под другие плееры. Например, существует MPRIS-плагин для Exaile — всё отличие в "org.mpris.exaile" вместо "org.mpris.clementine" (впрочем, не проверял).
4) UPD: ещё можно обложку отрисовывать. Например, #{cover -s 100x100 -p 20, 50} — всё, кроме слова 'cover', передаётся команде $image.
Как заинсталлить (нужен установленный не слишком старый Vala — для дебиана из testing):
wget https://raw.github.com/lomereiter/clem_conky/master/clem_conky.vala
valac --pkg gio-2.0 clem_conky.vala
sudo cp clem_conky /usr/local/bin # (опционально)
Список переменных читайте в исходном коде: выше показаны не все, да и у некоторых есть синонимы (вот до чего кодинг на Ruby доводит).
Предложения по улучшению приветствуются)
Картинка:
nk 14.06.2011 11:30 #
+ 1 -
Скриншот бы и было бы в обще замечательно
Сам коньки и клементинку не пользую, но жЫрный плюс за вала и красивый код. Прям сердце порадовалось.
На Vala сложновато писать некрасиво) Жаль, документация куцая: в API reference зачастую одни заголовки методов без всякого описания.
У меня какое-то двоякое впечатление от elementary.
Программистское: "охохо, сколько недопиленных велосипедов! это ж как скилл можно прокачать!"
Пользовательское: "ну и на кой мне эти ваши Marlin-ы да BeatBox-ы, если есть Nautilus и DeadBeef?"
Короче, не заразился энтузиазмом.
Программистское: "охохо, сколько недопиленных велосипедов! это ж как скилл можно прокачать!"
Пользовательское: "ну и на кой мне эти ваши Marlin-ы да BeatBox-ы, если есть Nautilus и DeadBeef?"
Короче, не заразился энтузиазмом.