#1 Le 21/09/2006, à 17:35
- samfr95
[Astuce] Script pour changer de papier peint au démarrage
Je sais que des solutions ont déjà été proposées mais j'apporte ma petit pierre à l'édifice en proposant un script qui a l'avantage de ne pas avoir de dépendances. Par contre, il est moins puissant puisqu'il se contente d'écraser le fichier sélectionné sous gnome (ou KDE d'ailleurs) et donc ne change qu'au démarrage.
Le principe est de définir comme papier peint un fichier sur lequel on copie un fichier aléatoire tiré d'un répertoire contenant tous les papiers peints.
Il suffit alors de le lancer au démarrage.
1. Copier le code dans un éditeur de texte
#!/bin/sh
#merci à Yoann Aubineau sur le forum linux-fr.org
COMMAND="cp --force"
# Indiquer le fichier qui sera défini comme papier peint
CIBLE="$HOME/WallPaper.jpg"
# Indiquer le répertoire contenant les images
SELECT="$HOME/Papier_peints/*.jpg"
FILES=( $( ls -1 ${SELECT} ) )
RANDOM=$( date +%s )
NEW=$(( ${RANDOM} % ${#FILES[*]} ))
${COMMAND} ${FILES[${NEW}]} ${CIBLE}
Ne pas oublier de changer le nom du répertoire par exemple
SELECT="/home/toto/wallpapers/*.jpg"
2. Enregistrer le fichier
On peut lui donner comme nom wallpaper par exemple.
3. le rendre exécutable
Sous nautilus, clic droit -> propriétés -> onglet permissions
Cocher exécution pour propriétaire.
4. Automatiser le lancement au démarrage
Système -> Préférences -> Sessions -> onglet programmes au démarrage
Cliquer sur ajouter.
Taper le nom du fichier enregistré et valider.
Ex : "/home/toto/wallpaper"
5. Lancer le script pour créer le fichier
Ctrl + F2 (ou en console)
/home/toto/wallpaper
Remplacer le chemin par votre vrai home bien sûr !
6. Changer le papier peint de gnome
Clic droit sur le bureau -> Changer l'arrière plan du bureau -> Ajouter un papier peint
Sélectionner Wallpaper.jpg
et...
Surprise !
Il a choisi lequel ?
Autres solutions sur ce forum :
Petit script nécessitant randomize-lines
http://forum.ubuntu-fr.org/viewtopic.php?id=15655
Installer Drapes
http://forum.ubuntu-fr.org/viewtopic.php?id=56334
Dernière modification par samfr95 (Le 02/12/2008, à 06:55)
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#2 Le 21/09/2006, à 18:34
- histerik pigeonfou
Re : [Astuce] Script pour changer de papier peint au démarrage
cool dés que j'ai le courage je vire mon script python !! Merrciii
A Bord de l'ExcaliTux ( Inspiron 6400 )
Hors ligne
#3 Le 04/11/2006, à 13:32
- samfr95
Re : [Astuce] Script pour changer de papier peint au démarrage
Sous Edgy, il faut modifier la première ligne et mettre :
#!/bin/bash
Dernière modification par samfr95 (Le 05/12/2006, à 19:49)
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#4 Le 04/11/2006, à 15:08
- The_Tito
Re : [Astuce] Script pour changer de papier peint au démarrage
sympa comme script merci
Hors ligne
#5 Le 14/08/2007, à 21:49
- Epy
Re : [Astuce] Script pour changer de papier peint au démarrage
Je me permet de remonter ce topic pour donner un script que j'ai trouvé sur le net, surement grâce à un lien trouvé ici d'ailleurs:
http://www.labo-linux.org/tips/gnome-changer-votre-fond-d-ecran-avec-un-script
Il marche très bien et gère tout format d'image
Edit: Il existe aussi gbackground pour gnome apparement
Dernière modification par Epy (Le 19/08/2007, à 15:30)
Hors ligne
#6 Le 22/12/2008, à 02:12
- samfr95
Re : [Astuce] Script pour changer de papier peint au démarrage
Depuis mon passage à Intrepid ce script ne marchait plus. J'ai donc dû le modifier un peu.
En particulier, il faut appeler explicitement bash, car le lien sh ne permet pas l'usage des tableaux (si quelqu'un sait pourquoi cette différence...).
Au passage j'ai été obligé de comprendre un peu mieux le script (le passage fourni par Yoann Aubineau). J'explique, pour ceux qui, comme moi, avaient du mal : on crée un tableau $FILES avec la liste des fichiers et on récupère un nombre aléatoire $NEW2 qui sert d'index au tableau. $SOURCE est donc l'entrée de la colonne n°$NEW2, donc un nom de fichier...
Bref, ça marche et ça ne demande toujours aucune installation particulière ! (trois ans d'utilisation déjà !)
La nouvelle version de bash installée sur Intrepid comprend donc cette nouvelle syntaxe (pas l'ancienne et j'ignore pourquoi...)).
#!/bin/bash
# Change le Papier peint aléatoirement
# merci à Yoann Aubineau sur le forum linux-fr.org
COMMAND="cp --force"
# Indiquer le fichier qui sera défini comme papier peint
CIBLE="$HOME/bin/WallPaper.jpg"
# Indiquer le répertoire contenant les images
SELECT="$HOME/Docs/Photos/Papier_peints/*.jpg"
FILES=( $( ls -1 ${SELECT} ) )
RANDOM=$( date +%N )
RANDOM2=$(( ${RANDOM} / $(date +%W) ))
NEW2=$(( ${RANDOM2} % ${#FILES[*]} ))
NEW=$(( ${RANDOM} % ${#FILES[*]} ))
SOURCE=${FILES[${NEW}]}
${COMMAND} ${SOURCE} ${CIBLE}
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#7 Le 27/09/2009, à 18:25
- terib.nunu
Re : [Astuce] Script pour changer de papier peint au démarrage
merci beaucoup ^^
Si ça marche touches à rien !!!!!
Hors ligne
#8 Le 27/09/2009, à 18:32
- breakolami
Re : [Astuce] Script pour changer de papier peint au démarrage
Wallpapoz fait ça très bien et est paramétrable
http://wallpapoz.akbarhome.com/
Ajout de fichier ou de dossier, réglage du temps entre les changements
Kubuntu 24.04.1 sur MSI Katana 17, Intel i7 12ème génération, 1 Nvme M.2 P5 500Go, 1 Nvme M.2 P2 1000Go, 16Go de mémoire, Nvidia GeForce RTX 4060
https://www.youtube.com/@FrenchBusTransit
Hors ligne
#9 Le 27/09/2009, à 21:50
- samfr95
Re : [Astuce] Script pour changer de papier peint au démarrage
Quelques modifs, si ça vous tente :
#!/bin/bash
# Change le Papier peint aléatoirement
# merci à Yoann Aubineau sur le forum linux-fr.org
# Indiquer le fichier qui sera défini comme papier peint dans GNOME (ou autre)
CIBLE="$HOME/bin/WallPaper.jpg"
# Indiquer le répertoire contenant les images
DIR="$HOME/Docs/Photos/Papier_peints"
JOURNAL="$HOME/bin/WallPaper.log"
change()
{
COMMAND="cp --force"
SELECT="$DIR/*.jpg"
FILES=( $( ls -1 -b ${SELECT} ) )
RANDOM=$( date +%N )
RANDOM2=$(( ${RANDOM} / $(( $(date +%w%w) +1 )) ))
NEW2=$(( ${RANDOM2} % ${#FILES[*]} ))
NEW=$(( ${RANDOM} % ${#FILES[*]} ))
SOURCE=${FILES[${NEW2}]}
# Commande pour sauver le nom de la source dans un fichier appelé journal
EXPORTER="echo"
${COMMAND} "${SOURCE}" ${CIBLE}
echo "Fond d'écran modifié."
echo "Le journal est enregistré."
${EXPORTER} ${SOURCE} >${JOURNAL}
exit 0
}
aide()
{
echo "Erreur : la fonction $1 n'existe pas"
echo "Rappel : taper"
echo "$0 del"
echo "pour supprimer l'image du fond d'écran sans récupération possible"
echo "$0"
echo "pour changer l'image de fond d'écran aléatoirement"
exit 3
}
del()
{
DELME=$(cat $JOURNAL)
echo "Effacement du fichier $DELME"
echo -n "Confirmer ? (Y/n)"
read yesno
case "$yesno" in
oui | o | O | Oui | OUI | yes| y | Y | Yes | YES )
rm ${DELME}
;;
non | n | N | Non | NON | no | No | NO )
echo "Opération annulée..."
;;
* ) echo " Taper O/N Y/N o/n y/n pour confirmer et pas " $yesno " !";;
esac
}
dev_info()
{
DELME=$(cat $JOURNAL)
echo $DELME
}
if [ -n "$1" ]
then
case "$1" in
del | Del | dEL | deL | DeL | DEl | dEL| DEL )
del
;;
dev_info )
dev_info
;;
* )
aide $1
;;
esac
else
change
fi
Le gros plus est l'ajout de l'option del qui permet d'effacer définitivement et sans retour possible le fichier affiché.
Le script est prévu pour utiliser un répertoire contenant des liens plutôt que des images...
Comme toujours, assurez-vous de comprendre un peu le code avant de lancer un script (surtout quand, comme ici, une ligne comprend un rm), c'est plus prudent et ça permet d'apprendre !
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#10 Le 25/10/2009, à 12:04
- EricG
Re : [Astuce] Script pour changer de papier peint au démarrage
Bonjour,
j'utilise ce script, mais avec quelques modifications : les lignes $HOME/bin/ qui contiennent la CIBLE et le JOURNAL me semblent fausses : il n'y a pas de dossiers bin dans les dossiers d'users, mais à la racine. En tant que novice, on m'a bien dit de lire le script, ce que j'ai fait Personnellement, j'ai tout mis dans un dossier Images/Wallpapers. J'ai trouvé quelques fonds sur GlooGLoo en précisant HD et la taille dans les préférences avancées, ce qui donne cette requête : wallpapers HD imagesize:1680x1050
Pour le changement automatique tous les x minutes, je me suis appuyé sur ce tutoriel : http://www.math-linux.com/spip.php?article16
Hors ligne
#11 Le 25/10/2009, à 12:37
- n3o51
Re : [Astuce] Script pour changer de papier peint au démarrage
Bonjour
Sympa cette astuce je propose une idée d'amélioration au script pour permettre en fonction du type de walpaper un conky différent en fonction de celui-ci
Welcome to the real world
________________________________
Hors ligne
#12 Le 25/10/2009, à 18:23
- samfr95
Re : [Astuce] Script pour changer de papier peint au démarrage
@EricG
Effectivement, $HOME/bin n'existe pas par défaut mais on peut le créer pour y ranger ses scripts et pouvoir les appeler directement depuis n'importe quel dossier en ajoutant dans ~/.bashrc
export PATH=$PATH:$HOME/bin
En effet, le script ne fonctionnerait pas dans /bin car il a besoin des droits d'écriture.
@n3o51
Cela change beaucoup l'idée d'origine car il s'agit d'associer deux données. Pour ma part, j'ai plus de 10000 images dans mon dossier donc c'est mal barré. Cela dit, en utilisant le système des tableaux c'est faisable mais tu devras associer une image à un conky manuellement... Ça peut être très long et très fastidieux... Si tu as beaucoup d'images, on peut imaginer de les classer par thème dans des dossiers différents et d'associer ensuite les dossiers à des conky différents...
Dans tous les cas, je ne le ferai pas parce que je n'en ai pas l'utilité (je n'utilise pas conky de toute façon !) mais si tu veux te lancer dans une telle modif, je peux t'expliquer comment faire.
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#13 Le 25/10/2009, à 21:43
- n3o51
Re : [Astuce] Script pour changer de papier peint au démarrage
Ouai effectivement mais je penser pas a une base aussi grande d'imaage je penser genre a 4 image 4 saison quoi
Welcome to the real world
________________________________
Hors ligne
#14 Le 26/10/2009, à 08:29
- EricG
Re : [Astuce] Script pour changer de papier peint au démarrage
Bonjour,
J'avais pensé aussi au dossier bin dans le home mais il y a déjà beaucoup de dossiers... Peu importe. Ce que j'aimerais changer c'est de rendre impossible de remettre le même fond d'écran. Peut être que je saurais faire la modif mais ce n'est pas certain. L'idée de changer aussi le conky m'intéresse : j'en ai fait un minimaliste, il tient sur une ligne en bas de l'écran. Par exemple, je pourrais afficher chaque heure la météo (même si sur une ligne de texte... ) ou autre chose qui ne me vient pas à l'esprit.
Hors ligne
#15 Le 27/10/2009, à 20:04
- samfr95
Re : [Astuce] Script pour changer de papier peint au démarrage
On peut cacher $HOME/bin en ajoutant son nom dans $HOME/.hidden
Pour ce qui est de changer les conky, il s'agirait, si j'ai bien compris, d'associer des fichiers .conkyrc différents à des images déterminées.
Si tel est le cas, on peut utiliser les tableaux, en bash toujours (et pas en sh parce que dash ne comprend rien à tout ça !) :
jpg_saison=( [1]="Eté.jpg" [2]="Hiver.jpg" ) #etc...
conky_saison=( [1]="Été.conky" [2]="Hiver.conky" ) #etc...
Ensuite en suivant la même méthode que dans le script précédent, on écrase le fichier configuré.
Pour ce qui est du nombre aléatoire compris entre 1 et 4, j'utiliserais
sec=$(date +%S) # date mais uniquement les secondes, donc 0<$sec<60
entre1et4=$(( ($sec%4)+1 )) #le reste de la division de $sec par 4 auquel on ajoute 1
On utilise ensuite pour les commandes d'écrasement :
${jpg_saison[${entre1et4}]} pour désigner l'image
${conky_saison[${entre1et4}]} pour désigner .conkyrc
Ça va aller ?
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#16 Le 27/10/2009, à 20:21
- n3o51
Re : [Astuce] Script pour changer de papier peint au démarrage
EricG je vais y travailler a ce script je pense me baser sur 4 image et 4 conky en fonction de l'image.
Je crois qu'il me reste celui que j'avais fait pour un ami d'ailleurs je l'avais couplé a une parti en fonction du moment de la journée.Donc je pense aussi par exemple ajouter la possibilité de mettre toute les heures la météo
Par contre ne t'attend pas a l'avoir demain ou aprés demain.
Certainement pour ce week end car boulot et enfant ca aide pas beaucoup
Welcome to the real world
________________________________
Hors ligne
#17 Le 28/10/2009, à 08:18
- EricG
Re : [Astuce] Script pour changer de papier peint au démarrage
Merci,
En fait, je réagissais aux posts précédents ; associer conkys et images ne m'intéresse pas spécialement.
Par contre, mon conky minimaliste ne contenant pas tout, je pourrais faire un cron qui change, par exemple, la capacité de mon Home par celui de mon Root car ce n'est pas la peine d'avoir l'oeil constamment dessus pour savoir ce qu'il reste comme place. La météo, c'était un exemple ; il y aussi un bloc-notes, etc. Je vais m'y atteler un jour, je me débrouillerais.
Par ailleurs, il arrive que le fond d'écran revient derrière lui-même, et je ne suis pas doué.
Vos posts serviront aux autres visiteurs, ne vous emballez pas.
Hors ligne
#18 Le 28/10/2009, à 08:41
- Geoffrey35
Re : [Astuce] Script pour changer de papier peint au démarrage
#!/bin/bash
src=/usr/share/backgrounds/
echo "<background>"
echo "<starttime>"
echo "<year>2009</year>"
echo "<month>10</month>"
echo "<day>26</day>"
echo "<hour>00</hour>"
echo "<minute>00</minute>"
echo "<second>00</second>"
echo "</starttime>"
fich1=`ls /usr/share/backgrounds/ | grep -E ".jpg|.png|.jpeg" | head -n 1`
echo "<static>"
echo "<duration>600.0</duration>"
echo "<file>$src$fich1</file>"
echo "</static>"
echo '<transition type="overlay">'
echo "<duration>5.0</duration>"
echo "<from>$src$fich1</from>"
for fich in `ls /usr/share/backgrounds/ | grep -E ".jpg|.png.jpeg" | xargs`
do
echo "<to>$src$fich</to>"
echo "</transition>"
echo "<static>"
echo "<duration>600.0</duration>"
echo "<file>$src$fich</file>"
echo "</static>"
echo '<transition type="overlay">'
echo "<duration>5.0</duration>"
echo "<from>$src$fich</from>"
done
echo "<to>$src$fich</to>"
echo "</transition>"
echo "</background>"
Un petit script qui s'execute vers un fichier xml. qui choist alternativement un fond d'ecran different toutes les 10mn.
Ubuntu, c'est pas non plus...
Hors ligne