Less is more, partie 1.5 : Encore une chose

Quand vous vous préparez probablement à passer un joyer réveillon de Noël, je suis là à écrire pour votre bon plaisir. Appréciez svp.

Pour la suite de cette série d'articles sur l'épuration de votre bureau, j'avais prévu de passer à la présentation d'outils courants pour les tâches quotidiennes, mais en continuant ma propre configuration de bureau, je me suis rendu compte qu'il y avais pas mal de choses à ajouter par rapport au dernier article. En tout cas, trop de choses pour essayer de les bourrer dans un coin de marge.

J'aimerais vous parler plus en détail de py3status qui, si vous vous en rappelez, sert à améliorer la barre d'information d'i3. Ainsi, alors que cette barre par défaut propose assez peu de modules et une personnalisation minimale, la barre améliorée avec py3status propose des fonctionnalités bien plus intéressantes. Outre la plus grande flexibilité des réglages, avec cet utilitaire il est très simple d'écrire ses propres modules, et on peu prendre en compte les clics pour le comportement des modules.

Parmi tous les modules proposés, il y en a tant d'utiles que je n'avais pas la place au début dans ma barre. Heureusement que j'ai ensuite découvert qu'on avait droit à plusieurs barres dans la configuration i3. De plus, j'ai noté qu'il existe un pull request sur le dépôt de py3status qui permettrait de multiplier les configurations pour une seule barre, donc la possibilité de changer de modules à chaud.

Ma configuration i3 actuelle

Une petite description des modules affichés, de gauche à droite :

En haut :

  • Informations sur le morceau en cours dans un lecteur compatible MPRIS.
  • Mises à jour en attentes (la première valeurs représente le nombre de mises à jours des paquets binaires et la deuxième concerne les paquets AUR).
  • Statut de mon mobile connecté via KDE Connect (peut s'utiliser sans autre composant KDE, grâce au ciel. Et oui, j'ai appelé mon mobile Philippe).
  • Niveau du volume sonore, contrôlable au clic et à la molette. Grâce à ce module, je peux me passer de l'utilitaire pa-systray.
  • Niveau de luminosité, contrôlable à la molette.
  • État de l'extinction d'écran DKMS, contrôlable au clic.
  • Sélectionneur de configuration pour écran externe, contrôlable au clic.
  • Compteur d'articles non lus sur mon instance Tiny Tiny RSS.
  • Compteur de mails non lus (le texte avant le nombre correspond au compte concerné).
  • Date et heure.
  • Icônes de notifications des programmes classiques (ici, NextCloud et nm-applet).

En bas :

  • Bouton de capture d'écran avec envoi automatique sur un serveur choisi, contrôlable au clic.
  • Vitesse du réseau.
  • Indicateur de VPN.
  • Indicateur de connexion à internet (affiche l'IP publique par défaut, masquée ici pour des raisons évidentes).
  • Indicateur d'IPv6.
  • Indicateur de connexion WiFi (encore ce Philippe...).
  • Indicateur de connexion cablée.
  • Espace libre sur le disque.
  • Utilisation CPU.
  • Mémoire utilisée.
  • Température CPU.
  • Charge CPU.
  • État de la batterie.

L'écriture d'un module est vraiment simple, pour peu qu'on ait des bases de Python. Si vous le faites, je vous invite à en parler en commentaire ainsi qu'à contribuer au projet en proposant un pull request. Les mainteneurs sont sympas, et pour ceux qui débutent dans la contribution dans des projets open-source, il est très gratifiant de voir son travail en temps qu'amateur se faire valider par un projet qu'on utilise tous les jours.


Je souhaite également parler des symboles que vous pouvez voir dans mes barres d'information. Ceux qui font du frontend web reconnaîtront les glyphes du projet Font Awesome (pour le coup, rien à voir avec le gestionnaire de fenêtres Awesome). Il s'agit d'une police de caractère qui utilise une plage spéciale de la table unicode afin de mettre à disposition des symboles qu'il est pratique d'utiliser principalement pour des pages web, mais également, comme vous pouvez le voir, sur des interfaces un peu plus personnelles. Lorsque i3 tombe sur un caractère unicode que la police qu'il utilise ne peut pas afficher, il va alors utiliser la police Font Awesome en tant que police de substitution. Afin mettre ce procédé en œuvre, il est nécessaire d'installer la fonte (le paquet AUR otf-font-awesome sous Arch Linux) et de vérifier que le fichier de configuration d'i3 contienne la ligne suivante :

font pango:monospace 8

Vous pouvez remplacer monospace par la fonte que vous préférez. Vous serez ensuite libres de choisir une icône Awesome en le précisant dans la configuration des modules py3status (le plus souvent, il faut se tourner vers la variable format).


J'avais oublié d'expliquer dans mon précédent article, lorsque j'ai parlé de touches de volume et de luminosité sur le clavier, comment utiliser les touches de contrôle des lecteurs de musique. C'était pourtant sur ma liste des choses importantes à dire, j'en suis confus. Laissez moi réparer ça.

Pour utiliser ces touches, comme pour les touches volume et luminosité, il vous faudra spécifier dans votre configuration i3 que vous souhaitez mapper ces touches médias à un appel de commande. Simplement, le problème est que par défaut, il n'existe pas de commande simple pour contrôler un lecteur MPRIS. Nous avons donc besoin d'installer playerctl, un petit programme en ligne de commande qui va se charger de fournir des commandes lisibles et succinctes. Ensuite, il nous faudra ajouter dans le fichier de configuration i3 les lignes suivantes :

bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86AudioNext exec playerctl next

Notez que si le lecteur que vous utilisez n'est pas compatible MPRIS, il vous faudra trouver une autre astuce. Notamment si vous utilisez cmus en version release et non en version git, vous aurez besoin de faire appel à la commande cmus-remote.


Enfin, pour terminer cet addendum, je vous parlerai du choix de la console. Entre la publication du dernier article et la rédaction de l'article que vous êtes en train de lire, j'ai fait le test d'une autre console qui s'appelle Termite. C'est une bonne console qui donne la même sensation qu'Urxvt, mais infiniment plus simple à configurer. Ça s'explique par le format du fichier de configuration : Termite se configure avec une syntaxe INI tandis qu'Urxvt se configure via un fichier Xresourses, qui suit une syntaxe vieillotte, pour ne pas dire franchement obsolète. De plus, Termite n'as pas besoin de patchs ésotériques quand on a besoin de fonctionnalités un peu spéciales, comme la prise en compte de la molette dans certains programmes pseudo-graphiques. Au fond, Urxvt n'est déjà rien d'autre qu'un patch du Rxvt original pour gérer les caractères unicodes...

Cependant, il paraît que Urxvt possède plus de fonctionnalités que Termite. Une vieille légende prétends même que Urxvt supporterait plusieurs polices de caractères à la fois, bien que jamais je n'aie réussi à faire fonctionner ce mécanisme que, j'imagine, seuls les âmes les plus téméraires et les plus courageuses peuvent activer.

De plus, et c'est ce qui m'a définitivement décidé à rester sur Urxvt, Termite nécessite un compositeur graphique (par exemple xcompmgr) pour gérer la transparence. Rien de très gênant là-dedans, les compositeurs graphiques minimalistes sont très légers, et il m'en coûte très peu d'ajouter une ligne pour en lancer un dans ma configuration i3. Mais malheureusement, i3 a un petit bug lorsqu'on utilise un compositeur graphique avec certaines positions de fenêtre : quelquefois, le fond d'un terminal sera non pas le fond d'écran comme on pourrait s'y attendre, mais le contenu du terminal qu'y s'y trouvait précédemment, ce qui n'empêche pas de travailler mais qui est assez gênant.

Urxvt, quant à lui, n'a pas besoin de compositeur graphique pour la transparence, car il utilise une "fausse transparence" : pour faire simple, au lieu de demander au serveur X ce qui se trouve derrière lui, il va directement remonter au niveau de l'image de fond et mettre en transparence la portion du fond d'écran qu'il cache. Bon, pour le coup il est impossible, si on a une console Urxvt flottante, de voir une autre fenêtre par transparence, mais personnellement je m'en rappe les marrons, sachant que j'utilise extrêmement rarement les fenêtres flottantes, et absolument jamais pour des consoles. Sinon, à quoi bon utiliser i3 ?


En espérant que ces commentaires vous seront utiles, je vous souhaite un joyeux Noël, et peut être une bonne année. Tchin tchin.