¿Cambiar periódicamente el fondo de pantalla en GNOME 3?

15

Uso Fedora 15 con GNOME 3 y me gustaría que mi fondo de pantalla cambie periódicamente como es posible con Windows 7. Sería mejor si pudiera usar RSS / Atom o un directorio específico.

No he encontrado ninguna herramienta en el repositorio. Supongo que puedes cambiarlo con un script y cron, pero estoy buscando algo más elegante.

KovBal
fuente

Respuestas:

19

Guarde el siguiente script de shell en alguna 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

Luego, en su directorio de inicio en .config / autostart, coloque lo siguiente en un archivo llamado 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

Esto cambiará su fondo de pantalla cada 10 minutos ... o cualquier valor que establezca en el script ...

Originalmente publiqué esto como un comentario en una publicación titulada "Personalizar el Shell GNOME" en Musings of a OS fontanero.

Hubert Samm
fuente
No puedo encontrar nada sobre cambiar el fondo de pantalla o Hubert Samm en su enlace. ¿Podría ser más específico?
KovBal
O simplemente puede escribirlo aquí :) (no revisé su nombre, lo siento :))
KovBal
1
Vale la pena señalar que es posible que también desee configurar pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn
esto no funciona para gnome 2 ¿verdad?
Vicfred
¿Qué hace "set - *" exactamente?
SergioAraujo
3

Si prefiere usar un trabajo cron en lugar de un script de inicio, esto es lo que hice. ¡Gracias a Hubert por la inspiración!

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

Guarde el script en algún lugar (p $HOME/bin/rotate_bg. Ej. ), Hágalo ejecutable ( chmod +x $HOME/bin/rotate_bg), luego agregue el crontrabajo para ejecutarlo tantas veces como desee que cambie su fondo. Ejecute crontab -epara editar la crontabla para su usuario. Aquí hay un enlace que describe el formato crontab . La siguiente entrada rotará su fondo cada 10 minutos:

*0 * * * * $HOME/bin/rotate_bg
Nathan Wallace
fuente
Estás incorrecto aquí. Dormir no es una espera ocupada
Art Gertner
si recibes una cita, cambiaré mi respuesta
Nathan Wallace
de la misma fuente que yo he vinculado anteriormente: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Por ejemplo, el proceso no se llama y no desperdicia los ciclos de la CPU. También de Busy Waiting en 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

Por alguna razón, no puedo ver una manera de responder a Hubert Samm, pero su enlace me pareció útil. En caso de que se caiga o no quiera leer todo para obtener esta respuesta en particular, he agregado cómo logré lograr un fondo de actualización en vivo en Gnome 3.

Al ir a ~ / .cache / gnome-control / center / backgrounds, encontrará un archivo con un nombre largo (algo así como "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27") que es la versión en caché del archivo al que ha configurado su fondo. Si elimina este archivo y crea un enlace simbólico con el mismo nombre para reemplazarlo:

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

luego, a medida que se actualiza el archivo original, el fondo del escritorio cambiará para reflejar eso. Estoy usando esta técnica para asegurarme de que mi fondo XPlanetFX esté actualizado. Por ejemplo, simplemente tenga una imagen llamada "background.jpg" y cambie este archivo cuando quiera actualizar el fondo.

Probablemente, la forma más correcta de hacerlo sería usar gsettings para cambiar la dirección uri de la imagen para que apunte directamente al archivo de su elección, pero elegí la opción de enlace simbólico porque no sabía cuán persistente sería el cambio de configuración al usar la interfaz de usuario para cambiar el fondo de pantalla. Sin embargo, de cualquier manera debería funcionar en teoría.

Nota: No lo sé con certeza ya que no lo probé, pero hay una buena posibilidad de que si cambia su fondo a través de la interfaz de usuario normal, ese nombre de archivo único largo cambiará, y su enlace simbólico ya no será útil .

Adán
fuente
1

Guarde el siguiente script de shell en alguna 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

Ejecútelo usando la sintaxis:

scriptname directoryofpictures howmanyseconds
Brainz
fuente