Schlanker Compiz-Desktop mit xfce4-panel und .xinitrc

Heute gestern waren mal wieder ein paar Experimente mit diversen Windowmanagern angesagt. Eines vorweg, das geilste wäre die Toolbar von Fluxbox kombiniert mit den grafischen Effekten von Compiz und dem Application-Panel von XFCE. Naja, man kann nicht alles haben, insbesondere Fluxbox und Compiz ist eine Kombination, die nicht funktionieren kann.

Was mich an XFCE bisher störte, waren in erster Linie zwei Kleinigkeiten: Der doch recht behäbige Start, und dass für einige Anwendungen der Eintrag in der Taskbar fehlte (zum Beispiel beim Passwort-Dialog von KWallet und beim HBCI-Homebanking-Programm Moneyplex). Das zweite Problem ist im Entwickler-Repository bereits behoben. Der einfachste Weg, um als Gentoo-User an die neusten Versionen ranzukommen, ist, mit 'layman -a xfce' das XFCE-Development-Overlay einzubinden und dann die diversen xfce4-Pakete in die /etc/portage/package.keywords einzutragen:

/etc/portage/package.keywords:



=xfce-base/xfce4-panel-9999 ** 
=xfce-base/xfwm4-9999 ** 
=xfce-extra/exo-9999 ** 
=xfce-base/xfce-mcs-plugins-9999 ** 
=xfce-base/libxfcegui4-9999 ** 
=xfce-extra/xfce4-dev-tools-9999 ** 
=xfce-base/libxfce4util-9999 ** 
=xfce-base/xfce-mcs-manager-9999 ** 
=xfce-base/libxfce4mcs-9999 **

Nun mit 'emerge -u xfce4-panel' das Panel aktualisieren und fertig. Vorsicht, da sich bei den Entwicklungs-Versionen die Versionsnummer (9999) nie ändert wird emerge auch kein Update mehr durchführen! Also muss man nun von Zeit zu Zeit selbst einen Blick drauf werden, und wenn es ein neues (stabiles) Release gibt die 9999-Versionen einfach wieder auskommentieren (oder das '=' durch ein '<' ersetzen).

Das andere Problem ist ein bisschen komplexer. Etwas unnötig ist zum Beispiel der Start des XFCE-Fenstermanagers xfwm4, wenn man diesen eh durch Compiz ersetzen will. Um das zu lösen, kann man nun tief in die Trickkiste greifen und Startscript verändern, oder man verwendet die Oldschool-Lösung '~/.xinitrc'. Bevor es grafische Logins gab, meldete man sich an der Kommandozeile an und rief den Befehl 'startx' auf. Dieser startete den X-Server und führte den Inhalt der Datei ~/.xinitrc aus, die dann zum Beispiel Terminal und Fenstermanager starten musste. Eine entsprechende Datei, die neben dem Panel und Compiz auch noch den Desktop sowie (nach kurzer Pause) die ausführbaren Programme in ~/.config/Autostart ausführt, könnte zum Beispiel so aussehen:

  1. exec xfdesktop &amp;
  2. exec xfce4-panel &amp;
  3. PID=$!
  4.  
  5. (fusion-icon || xfwm4) &amp;
  6. sleep 5
  7.  
  8. for f in $HOME/.config/autostart/*
  9. do
  10. if [ -f "$f" ]
  11. then
  12. if [ -x "$f" ]
  13. then
  14. exec "$f" &amp;
  15. fi
  16. fi
  17. done
  18.  
  19. wait $PID

Die X-Session wird beendet, wenn das XFCE-Panel beendet wird. Wer den Desktop nicht braucht, der kann auch auf den Start von xfdesktoo verzichten. Das Starten von compiz wird hier der Anwendung 'fusion-icon' überlassen, welche Gentoo-User im Portage-Overlay 'desktop-effects' finden werden (layman -a desktop-effects).

Wie gesagt, .xinitrc ist die Oldschool-Lösung, aber da wir im Hier und Jetzt wohnen wollen wir den grafischen Login (bei mir KDM) verwenden. Ich dachte ja bisher eigentlich, der dort zu findene Session-Typ 'Custom' würde die .xinitrc verwenden, aber dem ist nicht so. Daher müssen wir zwei neue Dateien erstellen:

/usr/bin/startxinitrc (mit chmod 755 ausführbar machen):

  1. #!/bin/sh
  2.  
  3. /usr/bin/fbsetroot -solid black
  4.  
  5. if [ -f "$HOME/.xinitrc" ]
  6. then
  7. source $HOME/.xinitrc
  8. else
  9. exec startfluxbox
  10. fi

Der Fallback (z.B. falls die .xinitrc versehentlich gelöscht wurde) ist bei mir fluxbox. Das kann aber jeder halten wie er will, es bietet sich z.B. auch 'exec startxfce4' an, um eine normale XFCE-Sitzung zu starten. Zusätzlich muss noch der Eintrag im Loginmanager (z.B. kdm) erzeugt werden:

/usr/share/xsessions/xinitrc.desktop:

  1. [Desktop Entry]
  2. Encoding=UTF-8
  3. Name=xinitrc
  4. Comment=This session executes the wm defined in ~/.xinitrc
  5. Exec=startxinitrc
  6. TryExec=startxinitrc
  7. # no icon yet, only the top three are currently used
  8. Icon=
  9. Type=Application

Nun kann man sich im Login-Manager über die .xinitrc anmelden, deren Inhalt man selbst kontrollieren kann und die in diesem Fall eine superschlanke Desktop-Umgebung mit Taskbar und Compiz als Fenstermanager startet! Have fun :-)

Comments

Ich muss zugeben, ich hab' nicht alles gelesen, hätte sicher auch nicht wirklich alles verstanden (obwohl in meinem Regal ein Buch mit dem Titel "Wie werde ich UNIX-Guru?" steht!). Aber eins muss ich sagen: Ich weiß wieder warum ich 'nen Mac hab' :P ;)
Auf der anderen Seite sind diese Möglichkeiten bei Linux schon der Wahnsinn, wenn ich mich erinnere, wie ich mich mit Litestep gequält habe, um Windows zumindest etwas individueller zu machen....da war Linux doch toller. Aber halt auch frickelig.