Conky : Quelques retouches

Conky permet de faire apparaitre sur le fond d'écran une multitude d'informations : Calendrier, météo, utilisation CPU/mémoire, espace disque utilisé/libre et j'en passe… Cependant, à configurer, c'est pas top… Donc, pour simplifier la configuration de Conky, il existe un complément qui rend bien des services : CONKY-colors.Ce complément va permettre de mâcher un peu le travail d'installation. Disons que nous allons obtenir une bonne base pour travailler.

Conky

Son installation est très simple puisqu'il se trouve dans les dépôts :

sudo aptitude install conky

Une fois installé, ajoutez conky à "Système > Préférences > Applications au démarrage".
Pour fonctionner, conky utilise le fichier .conkyrc. CONKY-colors va générer ce fichier pour nous.

CONKY-colors

Il n'est pas dans les dépôts. Il faut le récupérer sur GNOME-Look à cette adresse. C'est une archive "tar.gz". Donc, dans un terminal,  vous la décompressez dans votre répertoire personnel, vous vous placez dans le répertoire conky_colors :

tar xvf conky_colors.tar.gz
cd conky_colors

Installation :

make
./conky-colors --help
./conky-colors
make install

Pour la prise en compte des nouvelles polices de caractères :

sudo fc-cache -v -f

Pour générer votre .conkyrc, utilisez les options de conky-colors. Exemple tiré du site de l'auteur :

./conky-colors --theme=gnome-noble --lang=pt --cpu=4 --network --hd=default --pidgin

Cette commande génère un fichier conkyrc dans le répertoire en cours. S'il vous convient, copiez le dans en ~/.conkyrc.

cp conkyrc ~/.conkyrc

Si vous utilisez conkyPhotoRandom, n'oubliez pas de changer la ligne "source=″…″" pour qu'elle corresponde au répertoire contenant vos images.

Ajustements

Maintenant que votre .conkyrc est généré, ouvrez le pour l'ajuster à votre goût. Vous trouverez toute l'aide nécessaire sur le site officiel.

Pour ma part, j'ai rencontré des petits problèmes : CONKY-colors fournit différents scripts (sous .conkycolors/bin) qui rendent de nombreux services mais certains ne fonctionnement pas bien.

Le script "conkyIp"

Etant derrière un proxy, conkyIp ne récupère pas la bonne adresse. J'ai donc remplacé la ligne :

wget http://checkip.dyndns.org/ -q -O - |  grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

Par :

wget http://whatismyipaddress.com/fr/mon-ip -q -O - |  grep -Eo -m 1 '[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}'

Le script "conkyPhotoRandom"

Ce script ne gère pas les espaces dans les noms de répertoires ni dans les noms de fichiers. De plus, je le trouve trop compliqué pour le résultat obtenu. L'original :

#!/bin/bash
#
# Photo in conky
# by helmuthdu and paulvictor
source="/home/helmuth/Imagens/Beauty/"
photo=/tmp/conkyPhoto.png

cd $source
number=$(ls -R | wc -l)
random=$RANDOM
random=${random}%${number}
lines=`echo ${random} + 2 | bc`
filename=`ls | head -n $lines | tail -n 1`

 cp $filename $photo

 picture_aspect=$(($(identify -format %w $photo) - $(identify -format %h $photo)))

 if [ "$picture_aspect" -lt "100" ] && [ "$picture_aspect" -gt "-100" ]; then
 convert $photo  -thumbnail 175x280 $photo
 convert $photo -crop 175x125+0+$(( ($(identify -format %h $photo) - 180) / 2))  +repage $photo
 elif [ "$picture_aspect" -gt "0" ]; then
 convert $photo  -thumbnail 280x175 $photo
 convert $photo -crop 175x125+$(( ($(identify -format %w $photo) - $picture_aspect*2) / 2))+0  +repage $photo
 else
 convert $photo  -thumbnail 175x280 $photo
 convert $photo -crop 175x125+0+$(( ($(identify -format %h $photo) - 180) / 2))  +repage $photo
 fi

 # Theme 1
 #convert $photo  \( +clone  -threshold -1 -draw 'fill black polygon 0,0 0,10 10,0 fill white circle 10,10 10,0' \( +clone -flip \) -compose Multiply -composite \( +clone -flop \) -compose Multiply -composite \) +matte -compose CopyOpacity -composite $photo
 #convert -page +2+3 $photo -matte \( +clone -background black  -shadow 50x3+0+0 \) +swap -background none -mosaic $photo

 # Theme 2
 convert -page +2+3 $photo -bordercolor black -border 1 -background  none -rotate 0 -background black  \( +clone -shadow 50x3+0+0 \) +swap -background none -flatten $photo

exit 0

je l'ai donc remplacé par :

#!/bin/bash
#
# Photo in conky
# by Sbskl
source="/home/monnom/Images/chemin/vers/mes/images"
photo=/tmp/conkyPhoto.png

cd "$source"
number=$(find . -iname "*.jpg" | wc -l)
random=$RANDOM
random=${random}%${number}
lines=`echo ${random} + 2 | bc`
filename=`find . -iname "*.jpg" | head -n $lines | tail -n 1`

angle=$RANDOM
let "angle%=9"
let "angle-=4"

cp "$filename" $photo

convert $photo -gravity center -resize 360x360^ -extent 360x360 -bordercolor snow -background black -polaroid $angle $photo
convert $photo -resize 180x180 -gravity center -background none -extent 180x180 $photo

exit 0

Suite à une conversation avec un ami — Merci Casey 😉 — voici une version permettant de gérer plusieurs photos simultanément (qui peuvent être dans des répertoires différents) et la liste des fichiers n'est pas reconstruite à chaque appel mais toutes les heures (paramétrable) . De plus, les photos ne changent pas en même temps :

#!/bin/bash
#
# Photo in conky
# by Sbskl

cd "$1"
let "expire = 60"
let "nombre = `ls /tmp/conkyPhoto*.png | wc -l`"

if [ $nombre -gt 1 ]
then
	let "minute = `date +%-M` % nombre + 1"
	if [ $minute != $2 ]
	then
		exit 0
	fi
fi
if [ -e /tmp/conkyPhoto$2 ] # La liste existe-t-elle ?
then
	# Nombre de minutes depuis la derniere création de la liste.
	let "temps=(`date +%s`-`stat -c%Y /tmp/conkyPhoto$2`)/60"
else
	let "temps=$expire" # Il n'existe pas donc périmé.
fi
if [ $temps -ge $expire ] # Est ce que ça fait plus d'une heure ?
then
	find . -iname "*.jpg" > /tmp/conkyPhoto$2
fi

let "ligne = $RANDOM % `cat /tmp/conkyPhoto$2 | wc -l` + 2" # Une ligne au hasard dans la liste
let "angle = $RANDOM % 9 - 4" # Un angle au hasard compris entre -4° et +4°

fichier="`cat /tmp/conkyPhoto$2 | head -n $ligne | tail -n 1`" # Fichier correspondant à la ligne choisie
photo=/tmp/conkyPhoto$2.png # Image obtenue après transformation

# Transformation...

# Taille de 360x360 pour ne pas avoir un effet polaroid trop présent
convert "$fichier" -gravity center -resize 360x360^ -extent 360x360 -bordercolor snow -background black -polaroid $angle "$photo"
# Taille de 180x180 pour ne pas prendre trop de place à l'écran
convert "$photo" -resize 180x180 -gravity center -background none -extent 180x180 "$photo"

exit 0

par :

${execi 60 ~/.conkycolors/bin/conkyPhotoRandom "/home/monnom/Images/chemin/vers/mes/images" 1}${image /tmp/conkyPhoto1.png -s 180x180 -p 0,295}

Le paramètre "-p" correspond à la position de l'image, adaptez le en fonction de votre configuration.
Si vous voulez une seconde image, ajoutez :

${execi 60 ~/.conkycolors/bin/conkyPhotoRandom "/home/monnom/Images/chemin/vers/dautres/images" 2}${image /tmp/conkyPhoto2.png -s 180x180 -p 0,295}

Notez bien la différence : C'est le numéro qui change. Numéro comme second paramètre de conkyPhotoRandom et comme numéro d'image (conkyPhoto2.png). Vous pouvez ainsi en mettre autant que vous le voulez et vous pouvez utiliser autre chose que des nombres : a, b, c, toto, titi, tata…

Tout est affaire de goût mais l'image que j'obtiens n'est pas nécessairement droite mais toujours carrée avec un bord blanc et légèrement cornée. On l'a croirait grossièrement collé sur une porte de frigo 😉 Merci ImageMagick 😛

Voila à quoi ressemble Conky sur mon système avec mon .conkyrc et les petits ajustements :

Et voici le détail concernant la photo qui change toutes les minutes sur mon système :

Elle n'a pas deux fois la même tête :mrgreen:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *