colmaris.fr/content/post/2025/mes-debuts-avec-i3wm.md
2025-05-02 09:12:30 +02:00

8.1 KiB
Raw Blame History

author title date description tags categories toc
Colmaris Mes débuts avec I3wm 2025-01-28T10:18:15+01:00 Jour 001/100 du défi 100DaysToOffLoad.
archlinux
i3wm
100DaysToOffload
Adminsys
true

Je ne me suis jamais habitué à la philosophie gnome-shell, cest 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 jusquau jour ou je me suis intéressé au Tilling.

Au départ jai commencé mes essais avec awesome, wmbfs, herbsluftwm, entre autres, mais aucun ne ma réellement séduit. Lorsque jai 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 dun 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 lutilisateur.

Depuis deux mois je tourne sous Archlinux avec le gestionnaire de fenêtre i3WM. Petit à petit japprends à dompter la bête. Au départ jutilisais 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 lai adapté à mes besoins. Voici un premier jet de la configuration que jutilise.

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 dorigine par un script conky perso. Celui-ci maffiche lutilisation des partitions racine et home, le niveau de batterie, le volume, la date et lheure. En plus jai rajouté une ligne pour mafficher le flux de mon serveur mpd.

Les couleurs

Je me suis aussi attaqué à lapparence 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 nimporte quels modes les containers peuvent prendre deux états « focused » ou « unfocused » pour lesquels il est possible dattribuer 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 durgence, la saisie dun mot de passe à louverture de Thunderbird par exemple

Pour chaque état je définis la couleur de la bordure (border), larrière plan (backgr.), le texte (text), lemplacement où elle va safficher (indicator). Cest 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 despace 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 dutiliser des icônes plutôt que des noms, jai 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 japprécie le plus dans la manipulation des espaces de travail, cest de pouvoir déplacer nimporte quel container (fenêtre) sur nimporte 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 lespace de travail désiré. Cette configuration est proposée dorigine par i3wm, jai 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 jassigne lespace de travail n°4 aux applications Steam et Playonlinux en accord avec licône « play » configurée pour ce bureau. Cette configuration est totalement libre et chacun peut faire comme il lentend.

# 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 jutilise 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 dutilisation, 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 lobjet de futurs articles. Pour les intéresser voici ma configuration complète :

https://framagit.org/draconis/dotfiles/-/tree/master/.i3

free

busy