GNOME-Desktop ohne GNOME-Shell zusammenstellen

Aus DebianforumWiki
Wechseln zu: Navigation, Suche
WikiGrafische Oberflächen ‹ GNOME-Desktop ohne GNOME-Shell zusammenstellen


GNOME 3 kann auch mit einem anderen Fenstermanager und Panel als Alternative zur GNOME Shell eingerichtet werden.

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 Debianpackage.png avant-window-navigator als Panel (auch Dock genannt) verwendet und Debianpackage.png 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.png Hinweis: Die Programme Compiz und Avant Window Navigator sich in Wheezy nicht verfügbar. Alternativen können Debianpackage.png metacity oder Debianpackage.png mutter als Fenstermanager und Debianpackage.png docky oder Debianpackage.png cairo-dock als Panel sein.

Auch ein klassisches Debianpackage.png 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

Der Anwendungsumschalter ist Teil des Fenstermanager. Unter Compiz muss dieser extra aktiviert werden.

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 Debianpackage.png 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 Debianpackage.png 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 Debianpackage.png 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.

Um eigene Meldungen anzuzeigen, gibt es das Programm notify-send. Die Syntax dazu ist:
notify-send "Zusammenfassung" "Text der Meldung"

Wem das Verhalten des Notification-Daemon in GNOME 3 nicht zusagt, findet mit Debianpackage.png 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

In den Applets des Programms Debianpackage.png avant-window-manager befindet sich Show Desktop, was alle Fenster ein- und ausblendet und so den Desktop anzeigt.

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 Debianpackage.png 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.