Pochettes MPD avec Conky et LibNotify
Il y a de nombreuse façons d'écouter sa grande collection de musique sous linux, et personnellement celle que je trouve la meilleur est MPD. C'est un player pas vraiment comme les autres puisqu'il est codé sur la base Client/Serveur. Cela offre beaucoup de possibilité, comme par exemple le contrôle a distance ou pouvoir lire de la musique sans serveur X de lancé. Si vous ne connaissait pas MPD je vous invite fortement à lire la page Wikipédia à son sujet.
Du fait qu'il tourne en arrière plan, il n'y a pas d'interface. C'est la qu'intervient votre imagination pour le contrôler votre musique. Il existe de nombreux frontend, GTK, Qt, ncurse et j'en passe bref les possibilité sont infini.
MAJ: J'ai mis à jour les scripts, il n'y en a maintenant plus qu'un c'est plus simple :)
Sur mon laptop, j'utilise le greffon mpc pour XFCE4, il est dans un tableau de bord et c'est très pratique!
Avec Conky
J'utilise également Conky qui est très pratique pour afficher des informations sur MPD, et par la même occasion afficher les pochettes des albums. Cependant MPD ne prend pas en charge les pochettes des albums nativement. J'ai donc créé un petit script pour résoudre ce problème:
updatestatus.sh
#!/bin/bash
cover_dir="$HOME/Musique/"
default="$HOME/.icons/nocover.webp"
cover_name="cover"
cover_tmp_name="conky_cover"
for (( ; ; ))
do
old=$(mpc | head -n 1)
sleep 2
new=$(mpc | head -n 1)
a=$(mpc | head -n 1 | grep random)
if [-z "$a"]; then
if ["$old" != "$new"] ; then
a=$(mpc --format '%albumartist%'/'%album%'/ | head -n 1)
cover=$(ls "$cover_dir$a" 2> /dev/null | egrep '\.webp$|\.jpeg$|\.webp$' | grep $cover_name | head -n 1)
if [-z "$cover"]
then
cp $default /tmp/$cover_tmp_name.webp
else
cover=$cover_dir$a$cover
cp -fr "$cover" /tmp/$cover_tmp_name
convert /tmp/$cover_tmp_name /tmp/$cover_tmp_name.webp
rm /tmp/$cover_tmp_name
mogrify -resize 100x100 /tmp/$cover_tmp_name.webp
fi
title=$(mpc --format '%title%' | head -n 1)
artist=$(mpc --format '%artist%' | head -n 1)
album=$(mpc --format '%album%' | head -n 1)
notify-send -t 500 -i /tmp/$cover_tmp_name.webp "$title" "$album \n $artist"
fi
old="$new"
fi
done
Ce script récupère la pochette dans le dossier de musiques, bien évidement il faut avoir une bibliothèque de musique bien rangé du style Artiste/Album/. S'il trouve une pochette, elle est copié dans le dossier /tmp et retaillé à la bonne taille, si non on prend la pochette par défaut. Je vous recommande d'ailleurs le magnifique utilitaire beet pour garder ça bibliothèque saine et propre.
Le script tourne en boucle, il faut donc le lancer au démarrage du serveur X, ou dans les applications de démarrage d'XFCE (avec un & pour le laisser en arrière plans.)
Grace à notify-send à la ligne 31, on affiche une petite notification sympa, c'est peut être pas parfait, mais ça marche plutôt bien
Maintenant que la pochette est dans le dossier /tmp, Conky peut la récupérer facilement! Voila ce que donne mon .conkyrc après TEXT
.conkyrc
${if_running mpd}
${if_mpd_playing}${image /tmp/conky_cover.webp -p 0,10 -s 100x100 -n}
${offset 110}${font Arial:bold:size=11}${color white}${mpd_title 25}
${offset 110}${font Arial:size=9}${color grey}${mpd_album 25} - ${mpd_artist}
${color 8f8f8f}
${offset 110}${mpd_elapsed} ${mpd_bar 3,150} ${mpd_length} - ${mpd_percent}%
${offset 110}Volume ${mpd_vol}% - ${mpd_status}
${endif}
${endif}