Conky - Pragha, Quodlibet e la canzone in riproduzione
Di recente mi sono interessato in particolare alla visualizzazione di artista e titolo della canzone in riproduzione. Ho trovato una soluzione, un po' artigianale (e che non richiede plugin esterni), per Pragha e Quodlibet.
L'idea di fondo
Entrambi i player possono essere lanciati da terminale con una particolare opzione, che mostra lo stato di riproduzione.Pragha
«mattux@artemide:~»$ pragha -c
state: Playing
file: /home/mattux/Musica/Fabrizio De André (1967-2003)/1999 - In concerto Live/09 - Il testamento di Tito.mp3
title: Il testamento di Tito
artist: Fabrizio De André
album: In Concerto
genre: Other
year: 1999
track_no: 9
comment:
length: 498
bitrate: 252
channels: 2
samplerate: 44100
Quodlibet
«mattux@artemide:~»$ quodlibet --print-playingL'idea di fondo è filtrare l'output di questi comandi e visualizzare solo quello che ci interessa, cioè Artista - Titolo.
Fabrizio De André - In Concerto - 9 - Il testamento di Tito
Pragha
Estrapoliamo l'artista:pragha -c | grep artist | sed s/artist://Estrapoliamo il titolo della canzone:
pragha -c | grep title | sed s/title://In sostanza quello che stiamo facendo è dire a grep di selezionare solo la riga contenete la parola "artist" e a sed di eliminare, da quella riga, la stringa "artist:".
Per il titolo della canzone agiamo in maniera analoga.
E in Conky come lo inseriamo? Così:
${if_running pragha}Possiamo anche inserire un controllo per fare eseguire il comando a Conky soltanto se il player è in esecuzione.
${exec pragha -c | grep artist | sed s/artist://} -${exec pragha -c | grep title | sed s/title://}
${endif}
Quodlibet
nota: In fondo al post (paragrafo "update" ) ho aggiunto un modo più semplice. Questo metodo rimane comunque valido.Possiamo estrapolare tutto con un solo comando:
quodlibet --print-playing | awk 'BEGIN { FS = " - " } ; { print $1,$4 }'Il problema è il trattino da visualizzare a schermo, che io onestamente non saprei come inserire in un comando del genere. Perciò...
Estrapoliamo l'artista:
quodlibet --print-playing | awk 'BEGIN { FS = " - " } ; { print $1 }'Estrapoliamo il titolo della canzone:
quodlibet --print-playing | awk 'BEGIN { FS = " - " } ; { print $4 }'Qui ci stiamo affidando ad awk, facendogli stampare rispettivamente la prima e la quarta colonna, usando il trattino come separatore (FS = " - ").
In Conky diventa:
${if_running quodlibet}
${exec quodlibet --print-playing | awk 'BEGIN { FS = " - " } ; { print $1 }'} - ${exec quodlibet --print-playing | awk 'BEGIN { FS = " - " } ; { print $4 }' }
${endif}
Il risultato
Se non abbiamo sbagliato nulla, a schermo dovremmo avere qualcosa del tipoCon entrambi i player.
Update
Riguardo a Quodlibet, ho appena scoperto che l'opzione --print-playing supporta come parametro dei tag. La sintassi è piuttosto semplice:
quodlibet --print-playing "Si possono anche usare più tag, unendoli con una tilde (~):"
quodlibet --print-playing "Ad esempio:"
«mattux@artemide:~»$ quodlibet --print-playing "<artist~title>"Perciò in Conky diventa, molto più semplicemente:
Fabrizio De André - Il testamento di Tito
${if_running quodlibet}
${exec quodlibet --print-playing "<artist~title>" }
${endif}