Gelangweilt von meinem alten Wallpaper habe ich ein kleines Bash-Skript geschrieben, welches mir die aktuell populärsten Fotografien von deviantart.com herunterlädt und automatisch als Wallpaper einsetzt. Per Cron-Job wird es alle 10 Minuten gestartet. So bekomme ich regelmäßig ein neues Wallpaper 🙂 Das Skript benötigt die Programme: wget, xargs, grep, tail, head und gconftool-2 welche bei einer normalen Linuxdistribution alle enthalten sein sollten. Das Ersetzten des Wallpaper funktioniert hier nur mit einem Gnome Desktop. Solltest du eine andere Desktopumgebung benutzten, musst du die letzte Zeile für dein System anpassen.
UPDATE: Nach einigen kleinen Problemen habe ich das Bash-Script noch einmal überarbeitet. Probleme mit cron dürften nun behoben sein. Durch das Einrichten eines Shortcuts (via ‚gnome-keybinding-properties‘) kann der Hintergrund noch schneller gewechselt werden:
Das benötigte Skript gibts wie immer in meinem git-Repository.
#!/bin/bash
# Deviant Background Changer 1.1
# by Steffen Vogel (info@steffenvogel.de)
# http://www.steffenvogel.de/2009/11/28/deviantart-wallpapers/
# Path to save downloaded images
BG_PATH="/home/steffen/backgrounds"
# RSS Feed to fetch images from
RSS="http://backend.deviantart.com/rss.xml?q=boost%3Apopular+in%3Aphotography+max_age%3A8h&type=deviation&offset=0"
# random pool size
POOL_SIZE=10
GCONF_URL="/desktop/gnome/background/picture_filename"
# checks if window manager is running
if [[ $(ps -U $(whoami) -F | grep gnome-terminal | wc -l) > 1 ]] ; then
# get dbus socket address
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS= /proc/$(pgrep -u "$(whoami)" gnome-session)/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//')
# fetch images
wget --user-agent Mozilla/4.0 -q -O - "$RSS" | grep -o '' | grep -E -o -m 5 "http://.*.(jpg|png|jpeg|gif)" | xargs wget -q -N -P "$BG_PATH" --user-agent Mozilla/4.0
# get old image
OLD_BG=`gconftool-2 --get $GCONF_URL`
NEW_BG=$OLD_BG
until [[ $OLD_BG != $NEW_BG ]]; do
# choose new image
NEW_BG="$BG_PATH/`ls -tr1 $BG_PATH | tail -$POOL_SIZE | head -$((($RANDOM%($POOL_SIZE-1))+1)) | tail -1`"
done
# set new image
gconftool-2 --type String --set $GCONF_URL "$NEW_BG"
echo $NEW_BG
fi
Mit ‚crontab -e‘ kannst du dann noch einen Cron Job hinzufügen, der dein Bild alle 10 Minuten wechselt:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow command
*/10 * * * * deviant-background-changer
Viel Spaß und nie mehr Langeweile! 🙂
Die Idee ist ja echt mal geil. Nice! 😉