169 lines
No EOL
8.1 KiB
Markdown
169 lines
No EOL
8.1 KiB
Markdown
---
|
||
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. <!--more-->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)
|
||
|
||

|
||
|
||
 |