Changer périodiquement le papier peint sous GNOME 3?


15

J'utilise Fedora 15 avec GNOME 3 et j'aimerais que mon fond d'écran change périodiquement comme c'est possible avec Windows 7. Ce serait le meilleur s'il pouvait utiliser RSS / Atom ou un répertoire spécifié.

Je n'ai trouvé aucun outil dans le référentiel. Je suppose que vous pouvez le changer avec un script et cron, mais je cherche quelque chose de plus élégant.

Réponses:



19

Enregistrez le script shell suivant quelque part:

#!/bin/bash

WP_DIR=/home/honeyp0t/wallpapers

cd $WP_DIR
while [ 1 ] 
  do
  set -- * 
  length=$#
  random_num=$((( $RANDOM % ($length) ) + 1)) 

  gsettings set org.gnome.desktop.background picture-uri "file://$WP_DIR/${!random_num}"

  sleep 600 
done

Ensuite, dans votre répertoire personnel dans .config / autostart, placez ce qui suit dans un fichier appelé wallpaper-changer.desktop

[Desktop Entry]
Name=wallpaper-changer
Exec=/home/sammhe/bin/setbg.sh
Comment=change wallpaper every so often
Hidden=false
Type=Application
X-GNOME-Autostart-enabled=true

Cela changera votre fond d'écran toutes les 10 minutes… ou quelle que soit la valeur que vous définissez dans le script…

J'ai initialement posté cela en tant que commentaire sur un article intitulé "Personnalisation du shell GNOME" sur Musings of a OS plumber.


Je ne trouve rien sur le changement de fond d'écran ou sur Hubert Samm sur votre lien. Pourriez-vous être plus précis?
KovBal

Ou vous pouvez simplement l'écrire ici :) (je n'ai pas vérifié votre nom, désolé :))
KovBal

1
Il convient de noter que vous pouvez également définir pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn le

cela ne fonctionne pas pour gnome 2 non?
Vicfred

Que fait exactement "set - *"?
SergioAraujo

3

Si vous préférez utiliser un travail cron au lieu d'un script init, voici ce que j'ai fait. Merci à Hubert pour l'inspiration!

#!/bin/bash

walls_dir=$HOME/.wallpapers
selection=$(find $walls_dir -type f -name "*.jpg" -o -name "*.png" | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$selection"

Enregistrez le script quelque part (par exemple $HOME/bin/rotate_bg), rendez-le exécutable ( chmod +x $HOME/bin/rotate_bg), puis ajoutez le crontravail pour l'exécuter aussi souvent que vous souhaitez que votre arrière-plan change. Exécutez crontab -epour modifier le crontableau pour votre utilisateur. Voici un lien décrivant le format crontab . L'entrée suivante fera pivoter votre arrière-plan toutes les 10 minutes:

*0 * * * * $HOME/bin/rotate_bg

Vous n'êtes pas correct ici. Le sommeil n'est pas une attente bien remplie
Art Gertner

si vous avez une citation, je changerai ma réponse
Nathan Wallace

de la même source que j'ai lié ci - dessus: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Par exemple, le processus n'est pas appelé et ne gaspille pas les cycles CPU. Aussi de Busy Waiting sur Wiki :Busy-waiting itself can be made much less wasteful by using a delay function (e.g., sleep()) found in most operating systems. This puts a thread to sleep for a specified time, during which the thread will waste no CPU time
Art Gertner

1

Pour une raison quelconque, je ne vois pas de moyen de répondre à Hubert Samm, mais j'ai trouvé son lien utile. Juste au cas où cela tomberait ou si vous ne voulez pas lire le tout pour obtenir cette réponse particulière, j'ai ajouté comment j'ai réussi à accomplir une mise à jour en direct dans Gnome 3.

En allant dans ~ / .cache / gnome-control / center / backgrounds, vous trouverez un fichier avec un nom long (quelque chose comme "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27") qui est la version en cache du fichier sur lequel vous avez défini votre arrière-plan. Si vous supprimez ce fichier et créez un lien symbolique du même nom pour le remplacer:

$ rm a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27 
$ ln -s /path/to/original/file a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27

puis, lorsque le fichier d'origine est mis à jour, l'arrière-plan du bureau change pour refléter cela. J'utilise cette technique pour m'assurer que mon arrière-plan XPlanetFX reste à jour. Par exemple, il vous suffit d'avoir une image appelée "background.jpg" et de modifier ce fichier chaque fois que vous souhaitez mettre à jour l'arrière-plan.

La façon la plus correcte de procéder serait probablement d'utiliser gsettings pour modifier l'adresse de l'URI pour pointer directement vers le fichier de votre choix, mais j'ai choisi l'option de lien symbolique car je ne savais pas à quel point le changement de paramètre serait persistant. lors de l'utilisation de l'interface utilisateur pour changer le fond d'écran. Quoi qu'il en soit, cela devrait fonctionner en théorie.

Remarque: Je ne sais pas cela avec certitude car je ne l'ai pas testé, mais il y a de fortes chances que si vous modifiez votre arrière-plan via l'interface utilisateur normale, ce long nom de fichier unique changera et votre lien symbolique ne sera plus utile .


1

Enregistrez le script shell suivant quelque part:

#!/bin/bash
while true; do
file=`/bin/ls -1 $1 | sort --random-sort | head -1`;path=`readlink --canonicalize "$dir/$file"`;
gsettings set org.gnome.desktop.background picture-uri "file://"$1$path;sleep $2;done

Exécutez-le en utilisant la syntaxe:

scriptname directoryofpictures howmanyseconds
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.