Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 21/12/2012, à 11:26

Sultan Rahi

[Script] Un papier peint avec une teinte qui varie, pour Xfce

Bonjour, bonsoir.

Voulant personnaliser ma toute nouvelle installation Trisquel (oui, je suis enfin passé chez les barbus, après une attente sans fin d’une mise à jour de Gnewsense), mais en gardant tout de même mon fidèle Xfce, j’ai mis en place un papier peint dynamique. Plutôt que d’opter pour un papier peint qui suit la météo ou l’horloge, j’ai décidé de rester avec quelque chose de sobre mais tout de même amusant. J’ai donc choisi une image toute simple dont la teinte varie continuellement sans que l’utilisateur ne s’en rende compte (un point de plus dans la teinte toute les cinq minutes sur une échelle de 200).

Pour cela, j’ai d’abord choisi une image simple que j’ai appelée simple.png pour ne pas faire compliqué.
Ensuite, dans un fichier nommé papier.sh, j’ai mis le code suivant :

#!/bin/bash
teinte=$(sed -n '1p' indice.txt)
if [ $teinte = 300 ]; then teinte=100; fi
convert simple.png -modulate 100,100,$teinte complexe.png
sed -i '1d' indice.txt
echo -n $((teinte + 1)) >> indice.txt
DISPLAY=:0.0 xfdesktop --reload > /dev/null 2>&1
exit 0;

Les lignes 5 et 6 peuvent sûrement être simplifiées mais je n’ai pas trouvé comment. Si un véritable pro du code pouvait me montrer comment refaire ça plus proprement — sans trop me taper sur les doigts — ça serait bien. Ou pas, vu que ça fonctionne très bien comme ça. Mais bon, je trouve que ça fait tout de même un peu lourd.

Explication : un fichier complexe.png est créé à partir de simple.png. La variable teinte est stocké dans le fichier indice.txt (qui doit être créé au départ avec, écrit dedans, un chiffre compris entre 100 et 300) jusqu’à l’appel suivant du code. Modifier directement simple.png était ma première idée mais l'image se détériore au fur et à mesure, comme une photocopie de photocopie.

Mais tout ceci ne sert à rien si cron n’est pas de la partie. Donc je lance dans un terminal :

crontab -e

et j’y ajoute :

*/5 * * * * /home/<nom d'utilisateur>/papier.sh

je relance cron et hop, c’est parti pour la magie. Bien entendu, pour que tout cela fonctionne, il faut choisir complexe.png comme papier peint pour le bureau via les options (le mieux est donc d’exécuter une fois le code avant, pour créer cette image). Il est évidemment possible de modifier légèrement le code pour le faire tourner dans un autre environnement de bureau.

Dernière modification par Sultan Rahi (Le 21/12/2012, à 14:36)


Il faut adapter la ville à l'automobile.

Hors ligne

#2 Le 21/12/2012, à 15:45

ljere

Re : [Script] Un papier peint avec une teinte qui varie, pour Xfce

je vois pas trop quoi améliorer sauf peut être le rendre autonome plus besoin de cron de cette façon

#!/bin/bash
while :; do
teinte=$(sed -n '1p' indice.txt)
if [ $teinte = 300 ]; then teinte=100; fi
convert Image026.jpg -modulate 100,100,$teinte complexe.png
sed -i '1d' indice.txt
echo -n $((teinte + 1)) >> indice.txt
DISPLAY=:0.0 xfdesktop --reload > /dev/null 2>&1
sleep 300
done

Modérateur d'ubuntu-fr.org
amd 3000+, nvidia FX5200 et 2 Go de ram sur voyager 12.04 en 32 bit
Toshiba satellite_c670d-11l sur openbox 14.04 en 64 bit
Mon Blog et Une découverte

Hors ligne

Haut de page ↑