neděle 4. října 2009

Conky podruhé - Rhythmbox

Dnes popíšu jak v Conky zobrazit Rhythmboxem právě přehrávanou skladbu i s možností zobrazení obrázku alba. Pro zobrazení názvu skladby, alba, délky, pozice právě přehrávané skladby je možno použít program rhythmbox-client, který je součástí Rhythmboxu. ...



Pro použití v Conky nás budou zajímat především jeho parametry:
--print-playing - zobrazí jméno interpreta a právě přehrávané skladby a
--print-playing-format %?? - umožnuje zobrazit krom předešlého i další údaje:

%at - název alba
%aa - interpret alba
%ay - rok vydání alba
%ag - žánr alba
%tn - číslo skladby
%tt - název skladby
%ta - interpret skladby
%td - délka skladby
%te - uplynulý čas skladby

Možností je více, příkaz man rhythmbox-client, zadaný v terminálu, vám je sdělí.
Tedy, pokud chci zobrazit jméno interpreta, název skladby a uplynulý a celkový čas skladby v Conky, může to vypadat třeba takto:

${exec rhythmbox-client --print-playing --no-start} 
${exec rhythmbox-client --print-playing-format '%te / %td' --no-start}

Parametr --no-start zamezí opětovnému stratu Rhythmboxu, jen se přečtou požadované informace.

Další možnosti přináší program conkyRhythmbox, který umí i zjistit cestu k obrázku právě přehrávaného alba. Je potřeba Conky zkompilované s podporou obrázků (od verze 1.7.1.1 by mělo být v Ubuntu splněno) a instalovaná knihovna libimlib2Pro naše použití je také třeba do konfiguračního souboru .conkyrc, dopsat na začátek řádek imlib_cache_size 0, aby se obrázky načítaly vždy z disku a ne z cache. Příkaz pro získání cesty k obrázku alba vypadá takto:

conkyRhythmbox --datatype=CA | sed -e 's/\\\//g'

Parametr --datatype=CA vypíše cestu k obrázku alba, který právě zobrazuje Rhythmbox, ale do cesty, která obsahuje mezery, zařadí escape znaky "\". Ty odstraní příkaz sed. Objekt $image v Conky není, prozatím, schopen následovat cestu k souboru, která obsahuje mezery a nepomohou ani escape znaky, proto je potřeba obrázek alba zkopírovat někam, kam povede cesta bez mezer. V mém minulém příspěvku jsem se zmíníl o složce /dev/shm/, jejíž obsah se standardně nachází v paměti RAM a je vhodná právě pro takovéto použití. Tedy kód pro Conky bude vypadat třeba takto:

${exec  n=`conkyRhythmbox --datatype=CA | sed -e 's/\\\//g'`; m=`cat /dev/shm/m`; if [ "$n" != "$m" ]; then if [ "$n" ]; then cp "$n" /dev/shm/album; else cp /home/gdh/Pictures/notes.jpg /dev/shm/album; fi; echo $n > /dev/shm/m; fi}${image /dev/shm/album -p 5,20 -s 64x64}

Kód je trochu  delší, protože nejprve testuje, zda se obrázek změnil a pokud ne, dále se problémem nezabývá. Pokud se změnil, testuje, zda obrázek opravdu existuje a pokud ne, zkopíruje do /dev/shm/album univerzální obrázek, který mám připravený ve složce ~/Pictures/, jinak zkopíruje aktuální obrázek alba, který právě zobrazuje Rhythmbox. Příkaz $image v Conky obsahuje cestu k obrázku a parametry -p, který určuje pozici a -s, který definuje velikost obrázku.

Conky také umí zobrazovat část kódu jen tehdy, pokud daná aplikace běží. Je založena na bash příkazu pidof a používá se takto:

${if_running rhythmbox} ............. $endif

Cokoliv je mezi těmito objekty na místě teček, zobrazí Conky pouze tehdy, pokud je spuštěna (v tomto případě) aplikace rhythmbox.
  

Žádné komentáře:

Okomentovat

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.