Gnome-Wallpaper, GDM-Greeter Spielerei

Hier ist ein kleines Skript, welches den Anmeldebildschirm von GDM3 (GNOME-Display-Mananger) dem aktuellen Wallpaper meines User-Accounts angleicht. Getestet mit Debian Squeeze, sollte aber auch mit Debian-Remixen, wie Linux Mint oder Ubuntu, kompatibel sein.

#!/bin/sh

# Make Wallpaper == GDM-Greeter-Background
WALLPAPERLINK=/usr/share/images/gdm-background
MYGCONFFILE=/home/stap/.gconf/desktop/gnome/background/%gconf.xml
FILEINHOMEFOLDER=/home/stap/.gnome2/epiphany
NEWWALLPAPERFOLDER=/usr/share/pixmaps/backgrounds/gnome/others

WALLPAPERLOCATION=$(sed -n 10p $MYGCONFFILE |
        sed "s/<[^>]*>//g" |
        tr -d \\t)
if [ -f "$FILEINHOMEFOLDER/$(basename $WALLPAPERLOCATION)" ]
then
        mkdir -p $NEWWALLPAPERFOLDER
        mv -n $WALLPAPERLOCATION $NEWWALLPAPERFOLDER
        WALLPAPERLOCATION=$NEWWALLPAPERFOLDER/$(basename $WALLPAPERLOCATION)
        sed "s#$FILEINHOMEFOLDER\/$(basename $WALLPAPERLOCATION)#$WALLPAPERLOCATION#g" "$MYGCONFFILE" >> /tmp/dumm
        mv /tmp/dumm $MYGCONFFILE
        chown stap:stap $MYGCONFFILE
fi
ln -sf $WALLPAPERLOCATION $WALLPAPERLINK
invoke-rc.d gdm3 reload
exit 0

Damit das Skript funktioniert, muss allerdings erst eine kleine Änderung im System vorgenommen werden. Denn um nicht bei jedem Wallpaper-Wechsel die Konfigurationsdatei /etc/gdm3/greeter.conf-defaults ändern zu müssen, wird ein symbolischer Link auf das aktuelle Desktop-Hintergrundbild erzeugt. Die ersten Zeilen der Datei, greeter.conf-defaults, müssen daher wie folgt geändert werden:

# Use a specific background
/desktop/gnome/background/picture_filename      /Pfad/zum/Symlink

Wobei Pfad/zum/Symlink in meinem Skript /usr/share/images/gdm-background ist.

Mit sed und tr wird der Pfad zum aktuellen Desktop-Hintergrund aus /home/stap/.gconf/desktop/gnome/background/%gconf.xml extrahiert. „stap“ muss natürlich durch den gewünschten Nutzernamen ersetzt werden. Nachdem man den Hintergrund seines Desktops geändert hat, dauert es eine Weile (etwa eine Minute) bis %gconf.xml aktualisiert wird. Also etwas Geduld, bevor man das Skript als Superuser bzw. mit sudo ausführt. Danach sollte nach dem Abmelden der Anmeldebildschirm mit dem Desktop-Hintergrundbild erscheinen.

Um das Ganze zu automatisieren, kann man das Skript in die Datei /etc/gdm3/PostSession/Default schreiben. Alles was da drin steht wird nach dem Abmelden mit Root-Rechten ausgeführt.

EDIT: Habe gerade festgestellt, dass GDM die Wallpaper nicht nimmt, die im Home-Verzeichnis abgelegtwerden. Da landen per Default die über „weitere Hintergründe online erhalten“ installierten Bilder. Die If-Anweisung löst das, in dem sie die Datei zu den anderen Bildern unter /usr/share/undsoweiter verschiebt und den neuen Pfad in die %gconf.xml für den Desktop-Hintergrund schreibt. Für GNOME3 muss man evtl. die Pfade etwas ändern.

~ von tofuzius - Juli 7, 2012.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

 
%d Bloggern gefällt das: