I3, le « tiling window manager » pour tous

Magazine
Marque
Linux Pratique
Numéro
74
Mois de parution
novembre 2012
Domaines


Résumé

Et si vous utilisiez un gestionnaire de fenêtres minimaliste, comme les power users ? Mais vous vous dites qu'il faut apprendre un langage de programmation pour le configurer, que cela prend un temps fou... Qu'à cela ne tienne, i3 est un gestionnaire avec des fichiers de configuration en langage naturel et aux raccourcis clavier intuitifs. Présentation de la version 4.2.


Body

1. Qu'est-ce qu'un tiling window manager ?

Un tiling window manager est un gestionnaire de fenêtres qui dispose les fenêtres en mosaïque, en utilisant tout l'espace disponible sur le bureau. De la sorte, le positionnement des fenêtres est fortement automatisé et ne nécessite pas l'utilisation de la souris : tout se contrôle au clavier ! Cette famille de gestionnaires de fenêtres se distingue de la famille des gestionnaires dynamiques, où les fenêtres sont flottantes, comme c'est le cas dans Openbox et dans la majorité des environnements de bureau (qui eux-mêmes reposent sur un gestionnaire de fenêtres).

2. Quels avantages ?

Le choix d'un gestionnaire de fenêtres par rapport à un environnement de bureau complet peut être dicté par des contraintes matérielles (les gestionnaires de fenêtres, moins gourmands en ressources que les environnements de bureau, tournent très bien sur des machines anciennes). Un gestionnaire de fenêtres, c'est aussi un moyen de construire son bureau avec juste les applications que l'on souhaite, pour un système plus rapide et avec moins de dépendances.

3. Pourquoi i3 ?

i3 est issu du gestionnaire de fenêtres wmii, qu'il rend plus léger et plus facile d'accès. i3 ne nécessite pas de connaître un langage de programmation particulier pour être configuré, contrairement à d'autres gestionnaires de fenêtres (awesome en Lua, xmonad en Haskell, etc.). De plus, sa configuration tient dans deux fichiers, comme nous le verrons plus loin.

4. Installation

Pour installer i3, dans Debian ou Ubuntu, on se place dans une console en mode administrateur :

# apt-get install i3

Ce méta-paquet installe le gestionnaire seul (i3-wm), la barre de statut (i3-status) et un utilitaire de verrouillage de l'écran (i3-lock).

Si vous disposez déjà d'un gestionnaire de démarrage (gdm, lightdm,...), il suffit de sélectionner i3 et d'entrer vos identifiants pour vous connecter. Si ce n'est pas le cas, avant de lancer une session avec i3, ouvrez votre fichier .xinitrc et insérez cette ligne :

exec i3

Si cela ne fonctionne pas et que vous utilisez les pilotes propriétaires Nvidia, ajoutez l'option --force-xinerama en fin de ligne.

Au redémarrage, il suffit de taper xinit ou startx et vous êtes dans i3.

5. La connexion

À la première ouverture de session, la fenêtre de configuration rapide s'affiche (Fig. 1). Vous devez choisir une touche de base pour l'ensemble des raccourcis du gestionnaire de fenêtres. La touche Windows gauche est un bon choix : beaucoup de raccourcis par défaut utilisent les touches de la moitié gauche du clavier. Quelle que soit la touche que vous choisirez, nous appellerons cette touche mod par la suite.

assistantconfigi3

Fig. 1 : i3 lors du premier démarrage. L'assistant de configuration vous facilite la vie...

6. Quelques raccourcis de base

La plupart des raccourcis fonctionnent avec la touche mod accompagnée d'une autre touche. Par exemple, mod+Entrée ouvre un terminal.

Pour se déplacer d'une fenêtre à l'autre, on tape mod+flèche. Pour déplacer une fenêtre par rapport aux autres, on tape mod+shift+flèche.

Pour passer une fenêtre en plein écran, on tape mod+f (fullscreen). Pour fermer une fenêtre, c'est mod+shift+a (la position de la touche [A] du clavier français est la touche [Q] du qwerty, pour quit).

Pour quitter la session (pour appliquer des changements dans les fichiers de configuration par exemple), on tape mod+shift+e.

Vous avez accès à dix espaces de travail, numérotés en bas à gauche dans la barre d'état. N'apparaissent que l'espace en cours et les espaces qui contiennent des fenêtres. Pour se placer dans un espace, faites mod+chiffre, chiffre étant l'une des touches du pavé numérique, ou l'une des touches au-dessus de la rangée des lettres du haut du clavier (en qwerty, elles donnent directement les chiffres associés). Cela est valable de 1 à 9, mod+0 donnant accès à l'espace 10.

Créer des raccourcis lanceurs d'applications

Vous aimez bien dmenu, mais vous travaillez toujours avec les mêmes applications et voulez les lancer encore plus vite ? Créez des raccourcis clavier dédiés ! Prenons l'exemple d'un explorateur de fichiers, Thunar. Ouvrez le fichier .i3/config et ajoutez :

bindsym $mod+t exec /usr/bin/thunar 

À la prochaine ouverture de session, la combinaison mod+t lancera une fenêtre de Thunar. Le principe vaut pour toutes les applications : indiquez la combinaison voulue et la localisation du binaire.

7. Ajouter un fond d'écran avec feh

Par défaut, i3 affiche un simple fond noir au démarrage. Pas très accueillant ! Pour y remédier, nous pouvons utiliser feh.

# apt-get install feh

On ajoute ensuite dans .i3/config :

exec feh --bg-center '/chemin/vers/image' 

Au prochain démarrage, feh utilisera le fichier spécifié comme fond d'écran (bg pour background) et centrera l'image (center). Bien sûr, feh n'est qu'un choix parmi d'autres : Nitrogen propose un service similaire.

bureauflottantesi3

Fig. 2 : Exemple de fond d'écran utilisé avec i3, et deux fenêtres flottantes. L'image (Purple Eidolon) provient de la galerie Gnome Art.

8. Créer une fenêtre

Quand vous ouvrez une fenêtre (ou conteneur) dans un espace vide, celle-ci occupe l'ensemble de l'espace disponible. Par défaut, si vous ouvrez une deuxième fenêtre dans ce même espace, celle-ci sera placée à droite de la première : l'écran sera coupé en deux.

Pour créer une fenêtre en-dessous de la fenêtre active, on passe en mode par défaut avec mod+e, on presse mod+v (vertical), puis on ouvre la fenêtre voulue : un terminal, une application (voir plus loin). Pour placer une fenêtre à côté de la fenêtre active, on remplace mod+v par mod+h (horizontal).

dmenu, le lanceur d'applications minimaliste

Avec le méta-paquet de base, i3 est assez nu : les seuls moyens de lancer des applications sont d'ouvrir une fenêtre de terminal et de programmer des raccourcis (voir plus loin). Il y a plus simple : dmenu, un lanceur qui apparaît à la demande sous forme de barre en haut de l'écran. Pour installer dmenu :

# apt-get install dmenu

Son lancement est déjà prévu par la configuration de i3, qui lui réserve le raccourci mod+d.

dmenui3

Fig. 3 : dmenu est une simple barre en haut de l'écran. Il permet d'appeler les applications.

La recherche incrémentale affiche les applications correspondantes : on peut taper un nom complet jusqu'à n'avoir qu'un résultat et taper sur Entrée, ou se déplacer avec les flèches gauche ou droite dans la sélection proposée puis appuyer sur Entrée. Cela vous paraît alambiqué ? Ce n'est qu'une impression. Le processus demande juste un temps d'adaptation.

9. Changer de mode d'affichage

Par défaut, les fenêtres sont placées côte-à-côte. On peut aussi les afficher sous forme d'onglets sur une ligne en haut de l'écran, pour en garder une seule à l'écran à la fois. Pour cela, tapez mod+z. Pour voir les en-têtes de fenêtre s'entasser sous forme de pile, tapez mod+s. Pour revenir au mode par défaut, tapez mod+e.

Pour changer le comportement par défaut, il suffit d'ajouter une ligne dans le fichier .i3/config. Pour l'affichage en onglets :

​​workspace_layout tabbed 

Pour l'affichage en tuiles :

workspace_layout stacking 

modesi3

Fig. 4 : Dans i3, l'affichage des fenêtres par défaut (à gauche), en pile (au milieu) et en onglets (à droite).

10. Faire flotter les fenêtres, modifier leur taille

i3 est un tiling window manager dynamique, c'est-à-dire qu'il gère aussi bien la disposition des fenêtres « en tuiles » que les fenêtres flottantes. Pour faire flotter une fenêtre, appuyez sur mod+shift+Espace. Vous pouvez déplacer la fenêtre de manière classique à la souris en maintenant le clic gauche sur la bordure supérieure. En maintenant enfoncée la touche mod, vous pouvez faire de même, mais en cliquant n'importe ou dans la fenêtre.

Pour redimensionner une fenêtre flottante, on entre dans le mode Resize avec mod+r. Ensuite, shift+flèche augmente la taille de la fenêtre dans la direction désirée, flèche la rogne sur le côté voulu. Pour sortir du mode Resize, on appuie sur Entrée. On peut aussi cliquer sur les bordures de la fenêtre.

i3bar, la barre d'état

Sous les fenêtres, on trouve i3bar, la barre d'état de i3. Elle a plusieurs fonctions. C'est elle qui affiche les boutons des espaces de travail utilisés, les icônes de certaines applications ouvertes (Skype, Pidgin), mais aussi une ligne de statut qui affiche différents renseignements : l'espace libre sur le disque dur, l'état de la connexion réseau, le niveau de la batterie, ou encore l'heure.

Comme pour tout le reste dans i3, la ligne d'état est intégralement configurable. C'est là que i3status entre en scène. Ce programme offre un choix de modules à afficher. i3status possède son propre fichier de configuration, .i3status.conf, dont voici un extrait en exemple :

general { 
                   colors = true 
                   interval = 5 
           } 

           order += "ipv6" 
           order += "disk /" 
           order += "run_watch DHCP" 
           order += "run_watch VPN" 
           order += "wireless wlan0" 
           order += "ethernet eth0" 
           order += "battery 0" 
           order += "cpu_temperature 0" 
           order += "load" 
           order += "time"

Suit un paragraphe de configuration pour chacun des modules ci-dessus. Pour désactiver les couleurs, il suffit de changer le paramètre de colors = true en false : tout s'affiche alors en blanc. L'option interval définit le temps entre deux rafraîchissements des données affichées, en secondes.

On notera l'absence d'indicateur de RAM ou de charge du processeur. Pour ceux d'entre vous qui souhaiteraient un rapport d'état plus conséquent, vous pouvez vous tourner vers des solutions comme Conky, qui s'affichent directement sur le bureau.

Enfin, pour changer la couleur d'arrière-plan et celle de la police, rendez-vous dans le fichier .i3/config :

bar { 
    status_command i3status 
}

Sous la ligne status_command et alignée avec celle-ci, ajoutez par exemple :

    colors { 
        background #000000 
        statusline #ffffff 
        } 

Cela définit un arrière-plan noir pour une police blanche, mais toutes les couleurs de la palette sont possibles ! On peut aussi changer les couleurs utilisées pour les boutons d'espace de travail en ajoutant des lignes dédiées (voir « Changer l'aspect des fenêtres »).

11. Changer l'aspect des fenêtres

Le thème par défaut vous insupporte ? Pas de problème. Il suffit de changer les couleurs dans le fichier .i3/config, en ajoutant des lignes de la forme :

colorclass border background text indicator 

La classe de couleur correspond au type de fenêtre dont on veut changer la couleur (client.focused pour la fenêtre active, client.unfocused pour les fenêtres inactives, par exemple). Les quatre entrées suivantes sont les couleurs pour la bordure, l'arrière-plan, le texte et la bordure séparant deux fenêtres d'un même conteneur. Un exemple pour les couleurs par défaut de la fenêtre active :

client.focused #4c7899 #285577 #ffffff #2e9ef4 

Le principe est le même pour les boutons d'espace, avec les catégories focused_workspace, active_workspace, inactive_workspace et urgent_workspace. Par défaut, on a :

bar { 
    colors { 
    background #000000 
    statusline #ffffff 

    focused_workspace  #4c7899 #285577 #ffffff 
    active_workspace   #333333 #5f676a #ffffff 
    inactive_workspace #333333 #222222 #888888 
    urgent_workspace   #2f343a #900000 #ffffff 
    } 
}

i3lock, pour verrouiller votre écran

i3lock se lance simplement via dmenu : mod+d i3lock. L'affichage bascule alors sur un écran blanc. Pour débloquer l'ordinateur, il suffit de taper le mot de passe utilisateur. Bien qu'il n'y ait pas de champ de saisie, un pictogramme vous informe que le mot de passe est vérifié, puis débloque l'écran.

Vous pouvez choisir la couleur de l'écran en lançant i3lock depuis un terminal avec l'option -c :

$ i3lock -c ff0000

pour avoir du rouge. De la même manière, on lance une image en ajoutant l'option -i (fonctionne avec un fichier .png) :

$ i3lock -i /chemin/vers/image.png

Conclusion

Nous avons passé en revue le fonctionnement basique de i3. Ses raccourcis faciles et sa configuration aisée en font un candidat idéal pour équiper une station de travail minimaliste, une machine vieillissante, ou pour ceux qui souhaitent maîtriser tous les paramètres d'un environnement qui répond totalement au clavier.

On apprécie vite de ne pas déplacer sa main vers la souris à tout propos. Une bonne piste pour gagner en efficacité et en légèreté, sans se prendre les pieds dans les langages de programmation !

Pour aller plus loin, penchez-vous sur le guide de l'utilisateur pour i3 : http://i3wm.org/docs/userguide.html. Une mine d'informations très complète et accessible aux néophytes. On y trouve d'autres personnalisations, par exemple comment renommer les espaces de travail, et bien plus encore...



Articles qui pourraient vous intéresser...

Déployer Jenkins CI avec Docker

Magazine
Marque
Linux Pratique
Numéro
124
Mois de parution
mars 2021
Domaines
Résumé

Solution appréciée d’intégration continue, Jenkins est un puissant logiciel Java dont l’installation et l’exécution sur un système ne sont pas sans conséquence et à prendre à la légère. Afin de faciliter son déploiement et isoler proprement ce programme du reste de la machine qui l’héberge, nous allons illustrer ici comment le mettre en place, en seulement quelques commandes, à l’aide de Docker.

Déploiements reproductibles dans le temps avec GNU Guix

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
113
Mois de parution
mars 2021
Domaines
Résumé

Pour la recherche scientifique comme pour d'autres domaines, on a souvent besoin de reproduire un environnement logiciel à l'identique non seulement sur différentes machines, mais aussi à différents instants dans le temps. Docker et les machines virtuelles, qui sont souvent la solution choisie pour répondre à ce besoin, ont des limitations qu’il est facile de ne pas voir. Cet article illustre l’utilisation de GNU Guix pour des déploiements reproductibles, au bit près, dans l’espace et dans le temps.

Générer et manipuler des images ISO

Magazine
Marque
Linux Pratique
Numéro
124
Mois de parution
mars 2021
Domaines
Résumé

Quand bien même leur usage s’est quelque peu atténué au profit d’autres supports de stockage de masse depuis plusieurs années, les CD-ROM et autres DVD-ROM ont toujours une utilité en 2020 : stockage de données, création de disques bootables (pour distributions GNU/Linux entre autres), disques multimédias... S’il est vrai que sa durée de vie a été surestimée à une époque (peut-être pour favoriser son utilisation), la bonne vieille galette n’est pas encore morte, et il lui reste encore de beaux jours à vivre.

Gérez vos projets Git en mode graphique avec GitKraken

Magazine
Marque
Linux Pratique
Numéro
124
Mois de parution
mars 2021
Domaines
Résumé

Je vous ai précédemment présenté GitLab [0], une forge logicielle utilisant Git vous permettant une gestion globale de vos projets en équipe. Comme nous l’avions vu, une connaissance minimale de Git était nécessaire pour l’utilisation de GitLab. Certains de vos collaborateurs ne sont peut-être pas à l’aise avec la ligne de commandes, ne veulent tout simplement pas l’utiliser ou encore ne veulent pas apprendre la syntaxe des commandes Git. GitKraken [1] est fait pour eux. Il leur permettra de réaliser toutes les opérations Git à l’aide d’une interface graphique.