--- author: "Colmaris" title: "Mes débuts avec I3wm" date: 2025-01-28T10:18:15+01:00 description: "Jour 001/100 du défi 100DaysToOffLoad." tags: - archlinux - i3wm - 100DaysToOffload categories: - Adminsys toc: true --- Je ne me suis jamais habitué à la philosophie gnome-shell, c’est pourquoi je me suis rapidement tourné vers XFCE puis Openbox. Mon but étant de trouver une interface graphique, épurée, légère, utilisable principalement au clavier. Openbox a rempli sa part du contrat jusqu’au jour ou je me suis intéressé au [Tilling](https://fr.wikipedia.org/wiki/Gestionnaire_de_fen%C3%AAtres#Gestionnaire_de_fen.C3.AAtres_en_tuile). Au départ j’ai commencé mes essais avec awesome, wmbfs, herbsluftwm, entre autres, mais aucun ne m’a réellement séduit. Lorsque j’ai trouvé I3wm il avait pour moi tous les avantages décris plus haut avec une simplicité de mise en place et de configuration redoutable. En effet il se configure à partir d’un seul fichier appelé `config` qui se situe dans `~/.i3/`. La modification de la configuration ne fait très simplement grâce à une syntaxe très simple, expliqué brillamment dans son [guide de l’utilisateur](http://i3wm.org/docs/userguide.html). Depuis deux mois je tourne sous Archlinux avec le gestionnaire de fenêtre i3WM. Petit à petit j’apprends à dompter la bête. Au départ j’utilisais la configuration de base générée au premier démarrage de I3wm, pour me faire la main. Au fur et à mesure de son utilisation je l’ai adapté à mes besoins. Voici un premier jet de la configuration que j’utilise. ### La barre des tâches Ce fut ma première modification. ```shell bar { position bottom # position en bas font pango:SourceCodePro-Medium, FontAwesome 8 # Choix des polices status_command ~/.i3/conky.sh #chemin vers le script conky #ci-dssous l'ancienne configuration #status_command i3status --config /home/olivier/.i3/i3status.conf #tray_output primary #output LVDS1 #output VGA1 #coouleurs à utiliser colors { background #0A0D14 statusline #0A0D14 separator #0A0D14 focused_workspace #0a0f14 #0a0f14 #CFCFD9 active_workspace #0a0f14 #0a0f14 #344169 inactive_workspace #0a0f14 #0a0f14 #344169 urgent_workspace #2f343a #900000 #ffffff } } ``` Dans cette configuration je remplace la barre d’origine par un script conky perso. Celui-ci m’affiche l’utilisation des partitions racine et home, le niveau de batterie, le volume, la date et l’heure. En plus j’ai rajouté une ligne pour m’afficher le flux de mon serveur mpd. ### Les couleurs Je me suis aussi attaqué à l’apparence de mon interface. Selon la philosophie i3 une fenêtre seule représente un container. Vous pouvez ajouter des fenêtres (clients) à ce container. Chaque container possède plusieurs modes: 1. le mode diviser, le mode par défaut, verticalement (splitv) et horizontalement (splith) une 2. le mode stacked (empiler) tous les containers sont empilés les un sur les autres 3. le mode tabbed, les containers se placent les un contre les autres. Dans n’importe quels modes les containers peuvent prendre deux états « focused » ou « unfocused » pour lesquels il est possible d’attribuer une couleur spécifique uniquement en hexadécimal. ```css # class border backgr. text indicator client.focused #344169 #344169 #CFCFD9 #192033 client.focused_inactive #0A0D14 #0A0D14 #888888 #292d2e client.unfocused #0A0D14 #0A0D14 #888888 #292d2e client.urgent #EDE4DF #EDE4DF #ffffff #900000 ``` - client.focused : client sectionné (généralement celui sur lequel je suis en train de travailler). - client.focused_inactive : client sélectionné mais par encore actif - client.unfocused : client non sélectionné - client.urgent : client qui nécessite une action d’urgence, la saisie d’un mot de passe à l’ouverture de Thunderbird par exemple Pour chaque état je définis la couleur de la bordure (border), l’arrière plan (backgr.), le texte (text), l’emplacement où elle va s’afficher (indicator). C’est le même principe pour les couleurs de la barre des tâches. ### Les espaces de travail I3wm, comme tout les windows manager sous linux, il exploite la force des espaces de travail. Dans un premier temps je configure les nombre d’espace virtuel que je veux. ```shell # workspaces set $WS1 1: set $WS2 2: set $WS3 3: set $WS4 4: set $WS5 5: set $WS6 6: set $WS7 7: set $WS8 8: set $WS9 9: ``` Afin d’utiliser des icônes plutôt que des noms, j’ai installé le paquet ttf-font-awesome sous Archlinnux. ```shell $yaourt tt-font-awesome ``` Par la suite afin de naviguer rapidement entre les différents espaces de travail je leur assigne un raccourcit clavier. ```shell # move focused container to workspace bindsym $mod+Shift+1 move container to workspace $WS1 bindsym $mod+Shift+2 move container to workspace $WS2 bindsym $mod+Shift+3 move container to workspace $WS3 bindsym $mod+Shift+4 move container to workspace $WS4 bindsym $mod+Shift+5 move container to workspace $WS5 bindsym $mod+Shift+6 move container to workspace $WS6 bindsym $mod+Shift+7 move container to workspace $WS7 bindsym $mod+Shift+8 move container to workspace $WS8 bindsym $mod+Shift+9 move container to workspace $WS9 bindsym $mod+Shift+0 move container to workspace $WS10 ``` La chose que j’apprécie le plus dans la manipulation des espaces de travail, c’est de pouvoir déplacer n’importe quel container (fenêtre) sur n’importe quel espace de travail en une simple combinaison de touches. Ainsi pour déplacer Firefox par exemple de mon bureau 1 vers mon bureau 4, il me suffit de faire un touche_super + Shift + le numéro de l’espace de travail désiré. Cette configuration est proposée d’origine par i3wm, j’ai simplement ajouté les petites icônes pour schématiser le rôle de chaque espace de travail. Ces icônes ne sont pas placées par hasard, elles me servent de moyen mémo technique pour assigner une application à un espace de travail dédié. ```shell #Move to workspace assign [class="Steam|Playonlinux"] $WS4 ``` Dans cet exemple j’assigne l’espace de travail n°4 aux applications Steam et Playonlinux en accord avec l’icône « play » configurée pour ce bureau. Cette configuration est totalement libre et chacun peut faire comme il l’entend. ```shell # move focused container to workspace bindsym $mod+Shift+1 move container to workspace $WS1 bindsym $mod+Shift+2 move container to workspace $WS2 bindsym $mod+Shift+3 move container to workspace $WS3 bindsym $mod+Shift+4 move container to workspace $WS4 bindsym $mod+Shift+5 move container to workspace $WS5 bindsym $mod+Shift+6 move container to workspace $WS6 bindsym $mod+Shift+7 move container to workspace $WS7 bindsym $mod+Shift+8 move container to workspace $WS8 bindsym $mod+Shift+9 move container to workspace $WS9 bindsym $mod+Shift+0 move container to workspace $WS10 ``` ### Lancement des Applications Il est possible de lancer les applications avec une combinaison de touches, comme par exemple pour lancer Firefox. ```shell key bindings bindsym $mod+w exec firefox ``` Cette est très utile pour les applications que j’utilise très souvent ```shell #Move to workspace assign [instance="terminator|urxvt"] $WS1 assign [class="Firefox"] $WS3 assign [class="ncmpcpp|vlc"] $WS4 assign [class="Steam|Playonlinux"] $WS4 assign [class="emacs"] $WS5 assign [class="shotwell|gimp"] $WS6 assign [class="pcmanfm"] $WS8 assign [class="dontstarve|PillarsOfEternity"] $WS9 ``` ### En conclusion Voici un premier jet de ma configuration réalisée après quelques semaines d’utilisation, celle-ci bien évidemment sera amenée à évoluer avec le temps et en fonction de mon utilisation. Il y a encore des points sur lesquels je travaille toujours qui feront l’objet de futurs articles. Pour les intéresser voici ma configuration complète : [https://framagit.org/draconis/dotfiles/-/tree/master/.i3](https://framagit.org/draconis/dotfiles/-/tree/master/.i3) ![free](/img/i3wm/desktop_free.jpg) ![busy](/img/i3wm/desktop_fakebusy.jpg)