Introduction au moddage d’interfaces graphiques

Vous voulez modder votre interface graphique, ce qui signifie « utiliser des logiciels minimalistes et configurables pour donner une charte graphique et un comportement cohérents à l’ensemble ». C’est un hobby, donc une manière d’occuper son temps, qui implique à la fois des goûts et des compétences visuellement, en termes de matières, de couleurs, etc., et des compétences techniques, pour configurer des logiciels, lire de la documentation, etc. Cela peut donc être un hobby particulièrement chronophage, et la meilleure manière de s’y mettre sérieusement est de se documenter, avec des livres tant sur la dimension visuelle que sur la dimension technique.

La première question est donc : « Ai-je le temps d’apprendre à modder mon ordinateur ? ».

Personnellement j’ai appris à modder mon ordinateur au moment où j’apprenais l’anglais technique sur le tas, et en particulier sur le wiki Archlinux, donc les conditions étaient vraiment les pires, notamment car la philosophie Archlinux est d’inclure les programmes directement depuis la source sans modifications, ce qui signifie qu’au moddage « graphique » proprement dit se sont ajoutés pêle-mêle la configuration de démons, la modification de fichiers systèmes (à commencer dès l’installation, avec les miroirs), etc.

En m’intéressant à la fois au BIOS, aux démons, à l’interface graphique, au CSS des sites web… je me suis complètement dispersé dans différentes spécialisations de l’informatique, nécessitant des compétences différentes (de l’installation de Libreboot avec une Beaglebone Black à la théorie des couleurs, en passant par la configuration de services systemd).

Un mod d'interface graphique peut avoir l'apparence suivante :

Modder un gestionnaire de fenêtres a deux axes, l'apparence proprement dite, et la configuration de programmes comme mpd/ncmpcpp (démons). Pour le premier axe, une règle fondamentale de conception d'interfaces est que l'esthétique ne doit pas se faire au détriment de la productivité. Pour le second, si l'on souhaite modifier des composants systèmes il est indispensable d'apprendre à le faire de manière sécurisée.

Je suggère de se concentrer sur ces éléments dans cet ordre :

  1. la sécurité,
  2. la productivité,
  3. l’aspect esthétique de l’interface graphique, et
  4. les démons.

À l’exception de l’installation des programmes nécessaires, modder une interface graphique ne devrait même pas nécessiter de privilèges d’administration, il suffirait de modifier des fichiers de configuration en local, typiquement .Xdefaults ou situés dans ~/.config. Mais avant de modder toute machine, qu’il s’agisse d’un ordinateur, d’une voiture, ou de votre perceuse préférée, il est quand même important d’avoir une vision d’ensemble de ses règles de sécurité.

Dans des systèmes d’exploitation Unix-like il s’agit principalement du principe de moindre privilège : un programme a les privilèges de l’utilisateur qui les exécute, donc il faudrait exécuter chaque programme avec le moins de privilèges possible, de sorte que pirater votre serveur mpd ne permettrait d’accéder qu’à votre musique et à votre playlist, pas à vos documents professionnels. Et donc pour ce faire de comprendre les notions de groupes, de privilèges, de droits de lecture/d’écriture/d’exécution, et ainsi les commandes chmod et chown.

Ensuite la dimension productive, car votre objectif reste de vous servir de votre ordinateur pour travailler, envoyer des documents administratifs, partager des photos de famille, etc. Il convient de se familiariser avec cette dimension avant de se disperser dans la dimension esthétique.

Cette dernière implique des compétences à la fois techniques et artistiques. Par exemple, comment faire pour que les fenêtres aient des coins arrondis ? Comment scripter le positionnement des fenêtres avec Xmonad (et qu’est-ce qu’une monade) ? Quelles couleurs associer au magenta ?

Un second axe sera celui des niveaux : un ordinateur est tellement complexe qu’on le considère en niveaux, le plus « bas » étant celui de la matière (l’architecture du processeur, les câbles sur lesquels circulent les informations, etc.) et le plus élevé étant l’utilisateur·ice, en passant par le noyau, les fichiers de configuration, l’interface graphique, etc.

Grosso modo et du plus bas au plus élevé :

  1. le processeur,
  2. le BIOS,
  3. le noyau,
  4. les démons,
  5. l’interface graphique,
  6. les applications graphiques (installées via Flatpak), et
  7. l’utilisateur·ice.

Chacune de ces couches implique des compétences différentes, par exemple je ne pense pas qu'un·e moddeur·euse d'interface graphique ait de grandes chances de pouvoir contribuer au code assembleur de Libreboot, mais il n'y a pas non plus de raison de penser qu'un·e dev de Libreboot puisse dessiner son propre fond d'écran.

Il ne s’agirait donc pas de se mettre sur son ordinateur et d’installer des programmes, de tenter des thèmes de couleurs, jusqu’à ce que les différents paramètres coïncident sur quelque chose qui nous plairait, mais au contraire d’aller dans une bibliothèque ou dans une librairie spécialisée et de lire des livres dans ces différents domaines.

Pour une première étape qui relèverait à la fois de l’apprentissage et de la familiarisation avec les systèmes Unix-like, une distribution comme Silverblue me paraîtrait adéquate : il s’agit de technologies émergentes pour Fedora, une distribution qui permet de télécharger une trentaine d’environnements de bureau et de gestionnaires de fenêtres, tout en permettant de revenir à n’importe quel moment sur une base système stable, et sur GNOME, un environnement intégré, développé par Red Hat (qui développe aussi Fedora), qui devrait fonctionner dans la plupart des circonstances.

Avec un degré suffisant de confiance en soi pour maintenir un système d’exploitation sécurisé et stable, et avec un degré suffisant de familiarité avec le fonctionnement de son gestionnaire de fenêtres, son démarrage et sa fermeture, ses concepts de base, ses fichiers de configuration, l'installation/la suppression/la mise à jour des programmes, la connexion aux réseaux wifi, le démarrage d’un navigateur… on peut passer sur Debian ou sur FreeBSD.

Pour aller plus loin :

Absolute FreeBSD, 3rd edition Teach Yourself Computer Science

6/100 #100DaysToOffload

Flux RSS : https://afr.social/feed Fédivers : @afr-blog@afr.socialMastodon / Pleroma / Misskey