GNOME-Desktop ohne GNOME-Shell zusammenstellen
Dieser Artikel erklärt wie es möglich ist, einen GNOME 3 Desktop ohne GNOME-Shell zusammen zu stellen. Es kommen stattdessen ein eigenes Panel und eigener Fenstermanager zur Anwendung. In diesem Beispiel wird der avant-window-navigator als Panel (auch Dock genannt) verwendet und compiz als Fenstermanager. Natürlich kann statt Compiz auch jeder andere Fenstermanager verwendet werden und ein Vorteil davon ist, dass 3D dann für GNOME 3 keine Voraussetzung ist.
Das Powermanagment, Sonder- und Multimedia-Tasten werden weiterhin funktionieren. Was auf Anhieb nicht funktioniert ist ein Autostart der Programme für Desktop-Notifications, Bluetooth-Verwaltungs-Applet und für den Umgang mit Wechselmedien. Das benötigt etwas Nacharbeit, die hier ebenfalls beschrieben wird.
Hinweis: Die Programme Compiz und Avant Window Navigator sich in Wheezy nicht verfügbar. Alternativen können metacity oder mutter als Fenstermanager und docky oder cairo-dock als Panel sein.
Auch ein klassisches gnome-panel ist noch vorhanden, welches aus dem Fallback-Modus zur GNOME-Shell stammt. |
GNOME-Session zusammenstellen
Der X-Session-Manager ist nach dem Login, für das Starten der Desktop-Umgebung (ähnlich dem Autostart) verantwortlich. Die Aufgaben des X-Session-Manager kann auch weiterhin das Programm /usr/bin/gnome-session übernehmen. Um eine eigene GNOME-Session zusammenzustellen, muss eine Konfigurationdatei angelegt und der Session ein neuer Namen zugewiesen werden. Wobei der Name der Konfigurationsdatei, auch der Name für die Session (ohne Dateiendung) ist. Hier wird eine neue Session mygnome konfiguriert.
Die Konfiguration umfasst die eigenen Anwendungen (Fenstermanager, Panel usw.) die als Kernkomponenten der Desktop-Umgebung geladen werden sollen. Die Datei $HOME/.config/gnome-session/sessions/mygnome.session wird mit folgendem Inhalt neu angelegt:
[GNOME Session]
Name=GNOME 3 without Shell
RequiredComponents=gnome-settings-daemon;
RequiredProviders=wm;panel;
DefaultProvider-wm=compiz
DefaultProvider-panel=avant-window-navigator
Es können in der Konfiguration alle Anwendungen angegeben werden, für die unter /usr/share/applications/ ein Starter (.desktop-Dateien) vorhanden ist. Eigene bzw. fehlende .desktop-Dateien können unter /usr/local/share/applications/ oder $HOME/.local/share/applications angelegt werden und haben dann genauso Gültigkeit. Die Dateien im Benutzer-Verzeichnis haben Vorrang gegenüber denen unter /usr/local/.
Die ursprüngliche Konfiguration ist in /usr/share/gnome-session/sessions/gnome.session zu finden. Für eine ausführliche Beschreibung der Funktionsweise und des Aufbaus der Konfigurationsdatei, siehe die Manpage gnome-session(8). Es ist auch möglich eine Session zu überschreiben und so eine neue Session für gnome.session oder gnome-fallback.session anzulegen.
Der GNOME 3 Fallback-Modus (gnome-fallback.session) ist der Ersatz für die GNOME Shell wenn kein 3D zur Verfügung steht. Diese Konfiguration basiert auf dem GNOME-Panel. Sie kann vom Display-Manager wie beispielsweise GDM gestartet werden und stellt keine speziellen Hardwareanforderungen.
Über den dconf-Schlüssel /org/gnome/desktop/session/session-name muss festgelegt werden, dass die eigene Session gestartet werden soll. Dazu trägt man den Name der Session als Wert für den Schlüssel ein:
dconf write /org/gnome/desktop/session/session-name mygnome
Der Standardwert ist gnome und startet die GNOME-Shell bzw. wenn kein 3D zur Verfügung steht, oder es explizit im Display-Manager angeben wurde, den Fallback-Modus.
Noch ist das neue Setup aber nicht funktionsfähig und ein Neustart würde an diesem Punkt nicht funktionieren, da sobald ein Programm aus der GNOME-Session-Konfigurationsdatei nicht gestartet werden kann, der komplette Start der Desktop-Umgebung fehlschlägt. Für Compiz ist, anders als bei Mutter oder Metacity, kein Starter hinterlegt und der Fenstermanager kann deshalb nicht gestartet werden. Es muss also zuerst noch ein Starter für Compiz angelegt werden.
Einrichten des Fenstermanager
In der GNOME-Shell kommt der Fenstermanager Mutter zum Einsatz, welcher Problemlos in der GNOME-Session-Konfiguration angeben werden kann. Dieser Artikel soll jedoch Hinweise zum einrichten von Alternativen geben und zeigt dazu exemplarisch das Einrichten von Compiz.
Damit ein Programm in der GNOME-Session-Konfiguration angegeben werden kann, muss dafür ein Starter (.desktop-Datei) hinterlegt sein. Für Compiz fehlt dieser und es muss zuerst ein Starter mit dem Editor mit root-Rechten unter $HOME/.local/share/applications/compiz.desktop erstellt werden:
[Desktop Entry]
Encoding=UTF-8
Name=Compiz
Comment=OpenGL-Composition- und Windowmanager
Exec=compiz
Terminal=false
Type=Application
StartupNotify=true
Anwendungen wie der avant-window-navigator benötigen einen Composition-Window-Manager. Die Fenstermanager Compiz und Mutter haben den Composition-Manager aktiviert, beim Fenstermanager Metacity muss dieser über den dconf-Schlüssel /org/gnome/metacity/compositing-manager aktiviert werden:
dconf write /org/gnome/metacity/compositing-manager true
Der Standardwert ist false.
Es muss also zwischen Fenstermanager mit (sogenannte Composition-Window-Manager) und ohne Composition-Manager unterschieden werden.
Ist das typische GNOME-Theme Adwaita installiert, wird dies auch vom Fenstermanager genutzt. Es wird im Paket gnome-themes-standard durch die Paketverwaltung bereitgestellt. Es funktioniert aber auch jedes andere GNOME-Theme.
Autostart
Die GNOME Entwickler unterscheiden im Autostart, ob die GNOME-Shell oder der Fallback-Modus geladen wird. So können Starter (.desktop-Dateien) im Autostart einen AutostartCondition-Eintrag enthalten, was eine Erweiterung der Desktop Application Autostart Spezifikation ist. Ein solcher Eintrag kann der Grund sein, warum ein Programm nicht startet. Dann ist es nötig diesen Eintrag zu überschreiben.
Folgende AutostartCondition-Einträge sind für die Unterscheidung verantwortlich und legen fest, welche Anwendungen im Autostart standardmäßig in welchem Modus starten sollen:
AutostartCondition=GNOME3 if-session gnome-fallback
: Erlaubt das Starten nur im "echten" fallback-Modus, also wenn die Session mit gnome-fallback benannt ist.AutostartCondition=GNOME3 unless-session gnome
: Erlaubt das Starten nur, wenn die GNOME-Shell nicht geladen, also die Session nicht mit gnome benannt ist.
Der folgende Befehl zeigt alle AutostartCondition-Einträge im Autostart an:
grep AutostartCondition /etc/xdg/autostart/*.desktop /usr/share/gnome/autostart/*.desktop
Der Unterschied zwischen den Startern im Autostart und denen in der GNOME-Session-Konfigurationsdatei ist, dass ein nicht startendes Programm im Autostart, nicht den Start der Desktop-Umgebung verhindert. Anwendungen die nicht zwingend für die Desktop-Umgebung notwendig sind, sollten also immer in den Autostart eingetragen werden.
AutostartCondition-Eintrag überschreiben
Um einen AutostartCondition-Eintrag, der das Starten eines Programms im gewünschtem Modus verhindert, zu überschreiben, legt man sich im Benutzerverzeichnis für den Autostart eine Kopie des Starters (.desktop-Datei) an, diesen aber entsprechend ohne AutostartCondition-Eintrag. Dies kann nötig sein, damit der Umgang mit Wechselmedien und das Starten des Bluetooth-Verwaltungs-Applet funktionieren.
Das automatische Starten von Programmen beim Anmelden kann, wie gewohnt, mit dem GNOME-Dialog Startprogrammeinstellungen (Programm /usr/bin/gnome-session-properties) verwaltet werden. Legt man über den Dialog neue Autostart-Einträge an, wird kein solcher AutostartCondition-Eintrag gesetzt.
Im Terminal und Shell-Skripten, kommentiert das folgende Beispiel einen AutostartCondition-Eintrag komplett aus, sodass Programme immer starten:
mkdir -p $HOME/.config/autostart/
sed '/AutostartCondition=/s/^/# /g' /etc/xdg/autostart/FOO.desktop >$HOME/.config/autostart/FOO.desktop
Umgang mit Wechselmedien, Bluetooth-Verwaltungs-Applet und Notification-Daemon
Die GNOME-Shell kümmert sich um Wechseldatenträger, sie hängt angeschlossene Geräte automatisch ein und führt ggf. Programme aus. Damit beispielsweise der Medienspieler beim Einlegen einer DVD usw. automatisiert startet, muss der Starter für den Einhänge-Assistent (/usr/share/gnome/autostart/gnome-fallback-mount-helper.desktop), ohne AutostartCondition-Eintrag in den Autostart eintragen werden.
Soll das Bluetooth-Verwaltungs-Applet starten, muss der Starter für die Bluetooth-Verwaltung (/usr/share/gnome/autostart/bluetooth-applet.desktop), ohne AutostartCondition-Eintrag in den Autostart eintragen werden.
Beide Starter erlauben sonst nur das Starten im "echten" fallback-Modus. Gemeint ist die Session gnome-fallback. Selbes gilt u.a. auch für den Starter, der die Lautstärekeregelung bereitstellt (/etc/xdg/autostart/gnome-sound-applet.desktop), aus dem Paket gnome-control-center-data.
Damit passive Pop-up-Meldungen (Desktop-Notifications) angezeigt werden, muss der Notification-Daemon gestartet sein. Passiert dies nicht, obwohl in der Konfiguration für die GNOME-Session angegeben, kann eine Lösung sein, das Programm /usr/lib/notification-daemon/notification-daemon in den Autostart einzutragen.
Wem das Verhalten des Notification-Daemon in GNOME 3 nicht zusagt, findet mit notify-osd eine Alternative. Damit Notify OSD im Autostart von GNOME startet, muss die Datei /etc/xdg/autostart/notify-osd.desktop zum Autostart hinzugefügt und dort die Option X-GNOME-Autostart-enabled=true gesetzt werden.
Im Terminal und Shell-Skripten geht das mit:
sed '/X-GNOME-Autostart-enabled=/s/=.*/=true/' /etc/xdg/autostart/notify-osd.desktop >$HOME/.config/autostart/notify-osd.desktop
Siehe auch: GNOME 2.14 Release Notes: Registrierung von Diensten.
Icons auf dem Desktop
Wer die Dateien des Verzeichnisses Desktop bzw. Arbeitsfläche auf selbiger angezeigt haben möchte, kann dies über den dconf-Schlüssel /org/gnome/desktop/background/show-desktop-icons aktivieren:
dconf write /org/gnome/desktop/background/show-desktop-icons true
Der Standardwert ist false.
Zur Anzeige von Icons wird der Dateimanager nautilus genutzt.
Troubleshooting
Die Fehlermeldung Insufficient privileges
Sollen Einstellungen bearbeitet werden, die mehr Rechte benötigen und es kommt dabei zur Fehlermeldung Insufficient privileges. Muss der Starter des Legitimationsdienst von PolicyKit (/etc/xdg/autostart/polkit-gnome-authentication-agent-1.desktop) ohne AutostartCondition-Eintrag in den Autostart eingetragen werden. Dies sollte aber nur der nötig sein, wenn die Konfiguration für die GNOME-Shell überschrieben wurde. Gemeint ist die Session gnome.