web-dev-qa-db-fra.com

Comment faire fonctionner xmonad avec la session de secours GNOME?

Je n'ai pas de chance de faire fonctionner XMonad dans 11.10 (x64, nouvelle installation) avec une session de secours gnome. J'ai essayé d'adapter les instructions de

http://markhansen.co.nz/xmonad-ubuntu-lucid/

et

http://markhansen.co.nz/xmonad-ubuntu-oneiric/

mais sans chance. Si quelqu'un a des idées, j'aimerais les entendre.

7
emchristiansen

Une solution rapide: connectez-vous, puis exécutez killall metacity & xmonad.

Cela semble fonctionner, même si je rencontre des problèmes intermittents de clavier et de souris qui peuvent ou non être liés à cette solution.

De plus, étant donné que cela fonctionne, vous pourriez penser que je pourrais simplement échanger la valeur du gestionnaire de fenêtres dans /usr/share/gnome-session/sessions/gnome-classic.session, mais rien ne se produit lorsque je change la valeur.

3
emchristiansen

Comment utiliser un gestionnaire de fenêtres personnalisé avec la session GNOME Classic dans 11.10

Illustré avec le gestionnaire de fenêtres sawfish (désolé, je n’utilise pas xmonad).

1. Correction de gnome-classic.session

Il semble y avoir n bogue dans gnome-classic.session. Voici comment y remédier:

Editez le fichier système /usr/share/gnome-session/sessions/gnome-classic.session directement ou faites-en une copie dans votre répertoire personnel:

mkdir ~/.config/gnome-session/sessions
cp -ai /usr/share/gnome-session/sessions/gnome-classic.session ~/.config/gnome-session/sessions/

Faites ce changement:

 [GNOME Session]
 Name=GNOME Classic
 RequiredComponents=gnome-panel;gnome-settings-daemon;
-RequiredProviders=windowmanager;notifications;
+RequiredProviders=windowmanager;
 DefaultProvider-windowmanager=gnome-wm
 DefaultProvider-notifications=notify-osd
 IsRunnableHelper=/usr/lib/gnome-session/gnome-session-check-accelerated
 FallbackSession=gnome-fallback
 DesktopName=GNOME

2.1. Alternative 1: Définissez WINDOW_MANAGER dans ~/.gnomerc

2.1.a. Créez/éditez ~/.gnomerc et ajoutez ceci:

export WINDOW_MANAGER=sawfish

Dans cet exemple, remplacez "sawfish" par le gestionnaire de fenêtres que vous souhaitez utiliser. Si vous vous connectez maintenant avec la session "GNOME Classic", vous aurez le gestionnaire de fenêtres que vous avez choisi.

2.1.b. Démarrage plus rapide:

Si vous rencontrez un délai de 30 secondes lors de la connexion avec la solution ci-dessus, les solutions suivantes résoudront ce problème (il peut s'agir simplement d'un problème de poisson-scie).

Créez un script de démarrage, par exemple ~/bin/my-gnome-wm:

#!/bin/bash
sawfish &

Rendez-le exécutable:

chmod u+x ~/bin/my-gnome-wm

Changez ~/.gnomerc en ceci:

export WINDOW_MANAGER="$HOME/bin/my-gnome-wm"

2.2. Alternative 2: Utilisez sawfish.desktop

2.2.a. Editez à nouveau gnome-classic.session:

 [GNOME Session]
 Name=GNOME Classic
 RequiredComponents=gnome-panel;gnome-settings-daemon;
 RequiredProviders=windowmanager;
-DefaultProvider-windowmanager=gnome-wm
+DefaultProvider-windowmanager=sawfish
 DefaultProvider-notifications=notify-osd
 IsRunnableHelper=/usr/lib/gnome-session/gnome-session-check-accelerated
 FallbackSession=gnome-fallback
 DesktopName=GNOME

Dans cet exemple, remplacez "sawfish" par le gestionnaire de fenêtres que vous souhaitez utiliser. Cela nécessite l’installation d’un fichier du type "sawfish.desktop" à l’emplacement correct, par exemple. /usr/share/applications/sawfish.desktop.

2.2.b. Démarrage plus rapide:

Si vous rencontrez un délai de 30 secondes lors de la connexion avec la solution ci-dessus, les solutions suivantes résoudront ce problème (il peut s'agir simplement d'un problème de poisson-scie).

Editez le fichier système /usr/share/applications/sawfish.desktop directement ou faites-en une copie dans votre répertoire personnel:

mkdir ~/.local/share/applications
cp -ai /usr/share/applications/sawfish.desktop ~/.local/share/applications/

Faites ce changement:

 [Desktop Entry]
 Name=Sawfish
 Name[el]=Ðñéïíüøáñï (Sawfish)

 Type=Application
-Exec=sawfish
+Exec=bash -c 'sawfish&'
 TryExec=sawfish

 Terminal=false
 NoDisplay=true

 X-GNOME-WMName=Sawfish
 X-GNOME-Autostart-Phase=WindowManager
 X-GNOME-Provides=windowmanager
 X-GNOME-Autostart-Notify=true

Remarques

Avec DefaultProvider-windowmanager = gnome-wm et sans définir WINDOW_MANAGER dans .gnomerc, nous semblons avoir à la fois Unity et GNOME Classic l'un sur l'autre!

Cette entrée dans ~/.xsession-errors explique probablement pourquoi il y a un délai de 30 secondes:

gnome-session[23870]: WARNING: Application 'gnome-wm.desktop' failed to register before timeout

Pourquoi créer le script my-gnome-wm? Parce que cela ne semble pas fonctionner:

export WINDOW_MANAGER='/usr/bin/sawfish&'

Ceci non plus:

export WINDOW_MANAGER='bash -c "/usr/bin/sawfish&"'
5

Pour les versions plus récentes d'Ubuntu (par exemple 15.04), le référentiel this est disponible. Pour installer les fichiers nécessaires:

Sudo add-apt-repository ppa:gekkio/xmonad
Sudo apt-get update
Sudo apt-get install gnome-session-xmonad

Pour Ubuntu 12.04, cela fonctionne presque "out of the box" - vous devez installer le panneau gnome manuellement:

Sudo apt-get install gnome-panel

et vous pouvez ensuite vous connecter en utilisant la session "GNOME avec Xmonad" à partir de l'écran de connexion.

(source: http://www.haskell.org/haskellwiki/Xmonad/Using_xmonad_in_Gnome#Ubuntu_Precise )

1
Mark