{{tag>gestionnaire_de_fenêtres BROUILLON}}
----
====== xmonad ======
===== Présentation =====
**xmonad** est un tiling window manager écrit en haskell semblable à [[:wmii]] ou [[:awesome]]. Xmonad est écrit en [[wpfr>Haskell]] ce qui d'un côté rend sa configuration un peu plus compliquée et engendre près de 400mo de dépendances, mais de l'autre le rend très hautement personnalisable.
Il est entièrement pilotable au clavier et donc parfait pour les gens qui ne veulent pas perdre de temps à manipuler leurs souris.
===== Pré-requis =====
* Disposer des [[:sudo|droits d'administration]].
* Disposer d'une connexion à Internet configurée et activée.
* Avoir activé l'accès au [[:depots#universe|dépôt Universe]].
===== Installation =====
Pour installer ce logiciel, il suffit d'[[:tutoriel:comment_installer_un_paquet#paquet_present_dans_les_depots|installer le paquet]] **[[apt://xmonad|xmonad]]**.
xmonad est écrit en Haskell et dépend donc de GHC - the Glasgow Compilation system, ainsi que de quelques bibliothèques. Prévoir près de 400mo d'espace libre pour l'installation.
Pour bien profiter de Xmonad, une bonne connaissance de l'anglais est souhaitable, car toutes les pages ou sont répertoriés les modules supplémentaires sont en anglais.
Pour vous éviter des ennuis, installez aussi **[[apt://suckless-tools|suckless-tools]]**. En effet, cela installera l'outil nécessaire au lancement des applications.
Pour le lancer, sélectionnez l'entrée xmonad dans [[:lightdm]].
===== Configuration =====
La configuration se fait en éditant le fichier Xmonad.hs qui se trouve en /home/votre_nom_d'utilisateur/.xmonad/xmonad.hs. S'il n'y est pas, vous trouverez [[http://haskell.org/haskellwiki/Xmonad/Config_archive/Template_xmonad.hs_(0.9)|sur le site officiel]] un modèle qui vous permettra de bien débuter.
À chaque modification, il faut recompiler le fichier et relancer Xmonad. Cela se fait avec la combinaison de touches Mod+q (ou Mod désigne la touche alt par défaut).
===== Utilisation=====
Une fois dans une session xmonad vous vous trouverez devant un bureau vide. Pour commencer à faire quelque chose, vous pouvez lancer un terminal en appuyant sur Mod+Shift+Entrée (Mod désignant la touche alt par défaut.) Avec ce terminal ouvert, vous pourrez lancer des applications. Alternativement, vous pouvez appuyer sur Mod+p pour faire apparaître une fine barre tout en haut de votre écran: il s'agit de dmenu, qui a été installé avec dwm-tools. Commencez à taper le nom de l'application que vous voulez lancer pour la sélectionner dans la liste (vous pouvez aussi compléter le nom automatiquement avec la touche tab).
Voici une liste non-exhaustive de raccourcis clavier configurés par défaut:
===== Raccourcis configurés par défaut =====
* Mod-Shift-Entrée: lancer un terminal
* Mod-p: lancer dmenu qui vous permet de lancer des logiciels
* Mod-Shift-c: fermer une application
Consultez la section -- Key bindings. Add, modify or remove key bindings here. du fichier haskell.hs pour la liste complète et pour les modifier.
===== Les «Layouts» =====
Les Layouts (disposition en Français) sont les dispositions de vos fenêtres dans Xmonad. Par défaut, vous disposez de 3 Layouts. Pour passer d'un Layout à l'autre, tapez Mod+Espace. En fonction de ce que vous voulez faire ou afficher, un Layout peut mieux marcher qu'un autre, et il est possible d'en rajouter une bonne dizaine, tout comme il est possible de définir un Layout par défaut pour un bureau spécifique. Un exemple concret et d'avoir Gimp qui s'ouvre toujours dans le bureau 5 avec un Layout qui met les boites de dialogues de chaque coté de la fenêtre principale (astuce plus bas). Consultez la sous-rubrique «Layout» sur [[https://xmonad.org/xmonad-docs/xmonad-contrib/index.html|cette page]] afin d'avoir une liste exhaustive.
===== Coupler Xmonad et Gnome =====
Xmonad étant un gestionnaire de fenêtres, il peut être couplé à l'environnement [[:Gnome]]. Toutefois, afin de bien en profiter, il est nécessaire de faire quelques manipulations.
Ce qui suit a été traduit de l'anglais à partir du [[http://haskell.org/haskellwiki/Xmonad/Using_xmonad_in_Gnome|wiki du site officiel]] et n'a pas été testé par moi, étant donné qui j'utilise xmonad seul. Notez aussi que je n'ai traduit ce qui me semblait essentiel et utile, donc pour plus d'infos n'hésitez pas à consulter la page officielle.
==== 1 - Préparer Gnome pour Xmonad ====
Il semblerait que la plupart des personnes sur une variété de distributions ont de bons résultats en utilisant un fichier applications/xmonad.desktop et en lançant une session Gnome complète en ne remplaçant que Metacity avec Xmonad. Pour cela, utiliser la [[:commande_shell|commande]] suivante dans un [[:terminal]]:
gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type string
Lancer cette commande pendant une session Gnome revient à remplacer Metacity par Xmonad sans affecter les autres applications et daemons.
Cette solution est pratique si on veut essayer Xmonad, mais n'est pas satisfaisante. Si l'on veut que Xmonad démarre automatiquement avec Gnome, il est plus commode de créer un fichier applications/xmonad.desktop. Normalement, ce fichier existe déjà et permet de lancer Xmonad seul en choisissant l'entrée correspondante dans Gdm.
L'idéal est d'en créer un autre.
Ouvrez un [[:terminal]] et tapez:
gksudo gedit /usr/share/applications/gnome_xmonad.desktop
et copiez-collez dans la fenêtre gedit qui vient de s'ouvrir:
Type=Application
Encoding=UTF-8
Name=Gnome/Xmonad
Exec=xmonad
NoDisplay=true
X-GNOME-WMName=Xmonad
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=windowmanager
X-GNOME-Autostart-Notify=false
Maintenant il faut configurer Xmonad pour interagir avec Gnome.
==== 2 - Préparer Xmonad pour Gnome ====
Il semblerait que les infos du wiki soient obsolètes et/ou trop compliquées. Pour la suite je me suis donc basé sur [[https://ubuntuforums.org/showthread.php?t=1345157|ce sujet (en)]] qui semble donner de bons résultats
Ouvrez xmonad.hs. Au début du fichier, vous verrez des lignes de ce type:
import XMonad
import Data.Monoid
import System.Exit
ect……
Ces lignes sont très importantes, car c'est ici que vous rajouterez des extensions à Xmonad pour en faire le tiling Wm de vos rêves :-D
Donc, justement, nous allons ajouter une extension qui permet la communication avec Gnome.
Éditez le fichier pour le faire ressembler à ça:
import XMonad
import Data.Monoid
import System.Exit
import XMonad.Config.Gnome --notez qu'on vient d'ajouter cette ligne!
import XMonad.Config.Azerty --vous pouvez ignorer cette ligne si vous n'utilisez pas un clavier Azerty!
import XMonad.Hooks.ManageDocks --ajoutez cette ligne, elle permet a xmonad de reconnaître les docks, comme gnome-panel ou autre
Ensuite, vers la fin du fichier, trouvez la ligne suivante:
main = xmonad defaults
et modifiez-la comme suit:
main = xmonad $ gnomeConfig defaults
À priori, en choisissant maintenant l'entrée Gnome/Xmonad dans Gdm vous devrez vous trouver dans voter bureau Gnome, mais avec Xmonad.
===== Utiliser Xmonad seul =====
Xmonad peut aussi être utilisé seul pour plus de légèreté. Pour cela, choisissez tout simplement l'entrée "Xmonad" dans GDM après installation.
Vous vous retrouverez dans un bureau vide.
==== 1 - Ajouter xmobar, la barre de statut de Xmonad ====
Xmobar est une petite barre qui donne pas mal d'informations sur l'état de Xmonad (le bureau sur lequel vous vous trouvez) le «Layout» en cours d'utilisation…Pour l'installer: [[apt://xmobar]]. La configuration de xmobar se fait dans le fichier ~/.xmobarrc. Voici un exemple qui donne le bureau sur lequel vous vous trouvez, le titre de la fenêtre, le nom du Layout en cours d'utilisation, la date et l'heure:
Config { font = "-*-terminus-*-*-*-*-*-*-*-*-*-*-*-*"
, bgColor = "#DADBC7"
, fgColor = "#555753"
, position = Top
, lowerOnStart = True
, commands = [ Run Date "%A, %d %b %Y %H:%M:%S" "date" 10
, Run Com "skb" ["-1"] "kb" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " %StdinReader% }{ %date% "
}
Vous pouvez facilement ajouter des fonctionnalités à xmobar. Pour plus de détails et les plugins disponibles, rendez vous [[http://code.haskell.org/~arossato/xmobar/#other-plugins|ici.]]
Finalement, éditez xmonad.hs et ajoutez:
main = xmonad=<< xmobar defaults
et cherchez la ligne «myLayouthooks» et ajoutez: «avoidStruts $» juste après myLayout=………
Exemple:
myLayout = avoidStruts $ onWorkspace "5" gimp…… $ etc $etc
C'est ici que vous ajouterez d'autres Layouts. Pour ajouter des Layouts, il faut toujours mettre une ligne en début de fichier (par exemple import XMonad.Layout.IM) et ensuite ajouter le nom du Layout dans myLayouthooks.
Vous pouvez ensuite cacher/afficher xmobar (et tout autre dock) avec Mod+b. Xmobar ne dispose pas de systray. Vous pouvez utilisez trayer en complément.
Pour cela, trayer doit avoir être invoqué avec les options --SetDockType true et --SetPartialStrut true.
(Voir exemple plus bas, les applications au démarrage)
==== 2 - Les applications au démarrage====
Il y a deux façons de procéder pour cela. La plus simple; éditez xmonad.hs et cherchez la ligne «myStartupHook=return ()» et pour modifiez la comme suit pour ajouter gnome-panel, et xnumlock (qui permet d'avoir numlock activé au démarrage):
myStartupHook = do
spawn "gnome-panel"
spawn "numlockx"
spawn "trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 12 --transparent true --tint 0x000000"
Utilisez cette méthode pour ajouter un fond d'écran avec feh par exemple.
Continuez à ajouter les applications qu'il vous faut. L'inconvénient, c'est qu'à chaque recompilation de Xmonad, les applications de démarrage vont se relancer…
L'autre méthode consiste à éditer ~/.xinitrc.
===== Désinstallation =====
Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, le configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
===== Voir aussi =====
* **(en)** [[https://xmonad.org/|Site officiel de xmonad]]
* **(en)** [[http://wiki.archlinux.org/index.php/Xmonad|xmonad sur le wiki d'archlinux]]
* [[https://forum.ubuntu-fr.org/viewtopic.php?id=408563|Discussion « Des utilisateurs de xmonad parmi vous? »]] sur le forum Ubuntu-fr
----
//Contributeurs principaux : cbrunos//