Periodisch wechselndes Hintergrundbild unter GNOME 3?

15

Ich verwende Fedora 15 mit GNOME 3 und möchte, dass sich mein Hintergrundbild regelmäßig ändert, wie es mit Windows 7 möglich ist. Es wäre am besten, wenn es RSS / Atom oder ein bestimmtes Verzeichnis verwenden könnte.

Ich habe keine Tools im Repository gefunden. Ich schätze, Sie können es mit einem Skript und Cron ändern, aber ich suche etwas Eleganteres.

KovBal
quelle

Antworten:

19

Speichern Sie das folgende Shell-Skript irgendwo:

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

Legen Sie dann in Ihrem Ausgangsverzeichnis in .config / autostart Folgendes in eine Datei mit dem Namen wallpaper-changer.desktop ab

[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

Das Hintergrundbild wird alle 10 Minuten gewechselt ... oder welcher Wert auch immer Sie im Skript festgelegt haben ...

Ich habe dies ursprünglich als Kommentar zu einem Beitrag mit dem Titel "Anpassen der GNOME-Shell" bei Musings of a OS plumber gepostet .

Hubert Samm
quelle
Ich kann nichts über das Ändern des Hintergrundbilds oder von Hubert Samm auf Ihrem Link finden. Könnten Sie genauer sein?
KovBal
Oder du kannst es einfach hier aufschreiben :) (Ich habe deinen Namen nicht überprüft, sorry :))
KovBal
1
Es ist erwähnenswert, dass Sie auch Folgendes einstellen möchten pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn
das funktioniert nicht für gnome 2 oder?
Vicfred
Was genau macht "set - *"?
SergioAraujo
3

Wenn Sie lieber einen Cron-Job anstelle eines Init-Skripts verwenden möchten, habe ich Folgendes getan. Vielen Dank an Hubert für die 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"

Speichern Sie das Skript irgendwo (z. B. $HOME/bin/rotate_bg), machen Sie es ausführbar ( chmod +x $HOME/bin/rotate_bg) und fügen Sie den cronJob hinzu, um es so oft auszuführen, wie Sie möchten, dass sich Ihr Hintergrund ändert. Führen Sie aus crontab -e, um die cronTabelle für Ihren Benutzer zu bearbeiten . Hier ist ein Link, der das Crontab-Format beschreibt . Der folgende Eintrag dreht Ihren Hintergrund alle 10 Minuten:

*0 * * * * $HOME/bin/rotate_bg
Nathan Wallace
quelle
Sie sind hier unkorrekt. Der Schlaf ist keine Wartezeit
Art Gertner
Wenn Sie ein Zitat haben, ändere ich meine Antwort
Nathan Wallace
aus der gleichen Quelle , dass ich oben verlinkt: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. ZB Prozess wird nicht aufgerufen und verschwendet keine CPU-Zyklen. Auch aus " Busy Waiting" im 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

Aus irgendeinem Grund kann ich Hubert Samm nicht antworten, aber ich fand seinen Link hilfreich. Für den Fall, dass es nicht mehr funktioniert oder Sie nicht alles lesen möchten, um diese spezielle Antwort zu erhalten, habe ich hinzugefügt, wie ich es geschafft habe, einen Hintergrund für die Live-Aktualisierung in Gnome 3 zu erstellen.

Unter ~ / .cache / gnome-control / center / backgrounds finden Sie eine Datei mit einem langen Namen (etwa "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27"), auf die Sie Ihren Hintergrund eingestellt haben. Wenn Sie diese Datei löschen und einen Symlink mit demselben Namen erstellen, um ihn zu ersetzen:

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

Wenn die Originaldatei aktualisiert wird, ändert sich der Desktop-Hintergrund entsprechend. Ich verwende diese Technik, um sicherzustellen, dass mein XPlanetFX-Hintergrund auf dem neuesten Stand bleibt. Stellen Sie zum Beispiel einfach ein Bild mit dem Namen "background.jpg" bereit und ändern Sie diese Datei, wenn Sie den Hintergrund aktualisieren möchten.

Der wahrscheinlich korrektere Weg, dies zu tun, wäre, gsettings zu verwenden, um die Bild-URI-Adresse so zu ändern, dass sie direkt auf die Datei Ihrer Wahl verweist. Ich entschied mich jedoch für die Symlink-Option, da ich nicht wusste, wie hartnäckig die Einstellungsänderung sein würde bei Verwendung der Benutzeroberfläche zum Ändern des Hintergrundbilds. In beiden Fällen sollte dies jedoch theoretisch funktionieren.

Hinweis: Ich weiß das nicht genau, da ich es nicht getestet habe. Es besteht jedoch die Möglichkeit, dass sich der lange, eindeutige Dateiname ändert, wenn Sie Ihren Hintergrund über die normale Benutzeroberfläche ändern und Ihr Symlink nicht mehr nützlich ist .

Adam
quelle
1

Speichern Sie das folgende Shell-Skript irgendwo:

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

Führen Sie es mit der folgenden Syntax aus:

scriptname directoryofpictures howmanyseconds
Brainz
quelle