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.

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.

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.

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.

# 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.

# 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.

$yaourt tt-font-awesome

Par la suite afin de naviguer rapidement entre les différents espaces de travail je leur assigne un raccourcit clavier.

# 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é.

#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.

# 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.

key bindings bindsym $mod+w exec firefox

Cette est très utile pour les applications que j’utilise très souvent

#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

Hello Friend Hello Friend