Cambiare periodicamente lo sfondo in GNOME 3?


15

Uso Fedora 15 con GNOME 3 e vorrei che il mio sfondo cambiasse periodicamente come è possibile con Windows 7. Sarebbe il migliore se potesse usare RSS / Atom o una directory specificata.

Non ho trovato alcun strumento nel repository. Immagino che tu possa cambiarlo con uno script e un cron, ma sto cercando qualcosa di più elegante.

Risposte:



19

Salvare il seguente script shell da qualche parte:

#!/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

Quindi nella tua home directory in .config / autostart inserisci quanto segue in un file chiamato 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

Questo cambierà lo sfondo ogni 10 minuti ... o qualsiasi valore impostato nello script ...

Inizialmente l'ho pubblicato come commento su un post intitolato "Personalizzare la shell GNOME" su Musings di un idraulico del sistema operativo.


Non riesco a trovare nulla sul cambio dello sfondo o di Hubert Samm sul tuo link. Potresti essere più specifico?
KovBal,

Oppure puoi semplicemente scriverlo qui :) (Non ho controllato il tuo nome, scusa :))
KovBal

1
Vale la pena notare che potresti voler impostare anche pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn il

questo non funziona con gnome 2 giusto?
Vicfred

Quale "set - *" fa esattamente?
SergioAraujo,

3

Se preferisci usare un lavoro cron invece di uno script init, ecco cosa ho fatto. Grazie a Hubert per l'ispirazione!

#!/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"

Salvare lo script da qualche parte (ad es. $HOME/bin/rotate_bg), Renderlo eseguibile ( chmod +x $HOME/bin/rotate_bg), quindi aggiungere il cronlavoro per eseguirlo tutte le volte che si desidera modificare lo sfondo. Esegui crontab -eper modificare la crontabella per il tuo utente. Ecco un link che descrive il formato crontab . La voce seguente ruoterà lo sfondo ogni 10 minuti:

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

Non sei corretto qui. Il sonno non è un'attesa impegnativa
Art Gertner,

se hai una citazione cambierò la mia risposta
Nathan Wallace,

dalla stessa fonte che ho linkato sopra: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Ad esempio, il processo non viene chiamato e non spreca i cicli della CPU. Anche da Busy Waiting on 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

Per qualche motivo, non riesco a vedere un modo per rispondere a Hubert Samm, ma ho trovato utile il suo link. Nel caso in cui vada giù o non vuoi leggere tutto per ottenere questa risposta particolare, ho aggiunto come sono riuscito a realizzare un background di aggiornamento live in Gnome 3.

Andando su ~ / .cache / gnome-control / center / backgrounds troverai un file con un nome lungo (qualcosa come "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27") che è la versione memorizzata nella cache del file su cui hai impostato lo sfondo. Se si elimina questo file e si crea un collegamento simbolico con lo stesso nome per sostituirlo:

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

quindi, man mano che il file originale viene aggiornato, lo sfondo del desktop cambierà per riflettere quello. Sto usando questa tecnica per assicurarmi che il mio sfondo XPlanetFX rimanga aggiornato. Ad esempio, basta avere un'immagine chiamata "background.jpg" e cambiare questo file ogni volta che si desidera aggiornare lo sfondo.

Probabilmente il modo più corretto per farlo sarebbe usare gsettings per cambiare l'indirizzo picture-uri in modo che punti direttamente al file di tua scelta, ma ho scelto l'opzione link simbolico perché non sapevo quanto persistente sarebbe la modifica delle impostazioni quando si utilizza l'interfaccia utente per modificare lo sfondo. In entrambi i casi dovrebbe funzionare in teoria, tuttavia.

Nota: non lo so per certo perché non l'ho testato, ma c'è una buona probabilità che se cambi lo sfondo attraverso la normale interfaccia utente, quel lungo nome file univoco cambierà e il tuo link simbolico non sarà più utile .


1

Salvare il seguente script shell da qualche parte:

#!/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

Eseguilo usando la sintassi:

scriptname directoryofpictures howmanyseconds
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.