¿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.
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 ...
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:
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:
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 .
pictures-options
:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
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!
Guarde el script en algún lugar (p
$HOME/bin/rotate_bg
. Ej. ), Hágalo ejecutable (chmod +x $HOME/bin/rotate_bg
), luego agregue elcron
trabajo para ejecutarlo tantas veces como desee que cambie su fondo. Ejecutecrontab -e
para editar lacron
tabla para su usuario. Aquí hay un enlace que describe el formato crontab . La siguiente entrada rotará su fondo cada 10 minutos:fuente
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
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:
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 .
fuente
Guarde el siguiente script de shell en alguna parte:
Ejecútelo usando la sintaxis:
fuente