colmaris.fr/content/post/mes-debuts-avec-i3wm.md
2025-04-09 10:53:25 +02:00

169 lines
No EOL
8.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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, 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. <!--more-->Openbox a rempli sa part du contrat jusquau 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 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](http://i3wm.org/docs/userguide.html).
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.
```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 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.
```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 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.
```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 dutiliser des icônes plutôt que des noms, jai 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 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é.
```shell
#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.
```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 jutilise 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 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](https://framagit.org/draconis/dotfiles/-/tree/master/.i3)
![free](/img/i3wm/desktop_free.jpg)
![busy](/img/i3wm/desktop_fakebusy.jpg)