Sommaire
Les fonctionnalités
Apparence et polices
Historiquement, les terminaux avaient une couleur pour le texte et une autre pour le fond. Si l’on s’en tient à ce siècle, les terminaux étaient principalement en 16 couleurs au début, puis certains terminaux ont commencé à gérer des palettes de couleur plus étendues (256 couleurs par exemple) et, aujourd’hui, certains terminaux savent manipuler des couleurs sur 24 bits.
De même, les terminaux utilisaient surtout des jeux de caractères où un caractère était codé sur un octet, mais la prise en charge d’Unicode est maintenant répandue. Il faut néanmoins se méfier, certains terminaux annoncent gérer l’Unicode mais ne savent pas afficher les caractères codés sur quatre octets comme les émojis.
La prise en charge des polices peut également réserver certaines surprises. Tous les terminaux ne savent pas afficher des ligatures comme on peut trouver dans Fira Code ou les polices avec les symboles Powerline.
Et l’on peut également citer la possibilité d’avoir des coins arrondis ou de la transparence parmi les fonctionnalités proposées par des terminaux.
Terminaux multiples
Certains logiciels proposent de gérer plusieurs terminaux. Cela peut se faire avec un seul processus qui contrôle plusieurs fenêtres pour gagner en mémoire vive, mais l’approche la plus courante consiste à avoir une seule fenêtre avec plusieurs onglets. Enfin, il existe des terminaux qui reprennent l’approche des gestionnaires de fenêtres par pavage : une seule fenêtre peut être découpée pour afficher plusieurs terminaux et des raccourcis clavier permettent de contrôler le placement des terminaux et passer de l’un à l’autre.
Performances
A priori, un terminal ne serait pas l’endroit où l’on accorderait la plus grande importance aux performances. Pourtant, la latence des terminaux n’est pas toujours suffisamment faible pour se faire oublier.
On peut également citer la vitesse de défilement ou la quantité de mémoire utilisée.
Simplicité et fonctionnalités
Certains terminaux se veulent volontairement limités en termes de fonctionnalités. D’autres font plus de choses, et certains vont jusqu’à proposer des greffons ou des API pour permettre des usages avancés.
Dans les fonctionnalités que l’on retrouve chez certains mais pas chez d’autres, il y a la possibilité de remonter dans l’historique du terminal (le scroll‐back est parfois laissé à un logiciel tiers comme tmux dans certains terminaux), pouvoir cliquer sur les liens, pouvoir lancer des commandes au démarrage du terminal, l’affichage d’images directement dans le terminal, la prise en charge de Wayland, etc.
Les terminaux
Les grands classiques
Tout d’abord, il y a les grands classiques. Le plus connu est xterm, suivi par rxvt et son dérivé rxvt-unicode.
Ceux intégrés à un environnement de bureau
Les principaux environnements de bureau ont leur terminal : Konsole pour KDE, GNOME terminal pour GNOME, Xfce terminal pour Xfce et Terminology pour Enlightenment.
Les terminaux légers
st est un terminal codé en peu de lignes de C, avec un choix fort de ne pas prendre en charge certaines fonctionnalités et de ne pas faire de gros efforts pour les performances.
qterminal est un terminal léger s’appuyant sur Qt.
Les pavants
GNOME Terminator et Tilix sont deux terminaux qui mettent en avant la possibilité de découper leur fenêtre pour afficher plusieurs shells à l’intérieur.
Ceux utilisant la bibliothèque VTE
Il existe plusieurs terminaux s’appuyant sur la bibliothèque VTE (ou des dérivées de cette bibliothèque). Citons termite, sakura et GTKTerm.
Ceux pour les amoureux de Quake
Quake avait une console qui s’ouvrait en appuyant sur la touche ²
et qui se déroulait depuis le haut de l’écran. Certains terminaux s’en sont inspirés, comme Yakuake, Guake et Tilda.
Les rapides, en OpenGL
Alacritty est un terminal récent qui utilise le processeur graphique (via OpenGL). C’est probablement le terminal le plus performant aujourd’hui. En revanche, il ne couvre que peu de fonctionnalités (pas encore d’historique, par exemple).
kitty est un autre terminal qui tire parti du processeur graphique. Il propose également pas mal de fonctionnalités.
L’artillerie lourde
Hyper est un terminal en HTML/CSS/JS (c’est du Electron derrière). Ça ouvre des possibilités intéressantes pour les greffons et l’affichage d’images ou de vidéos, mais ça a également des inconvénients (on peut, par exemple, se poser la question des performances).
Terminus est un dérivé d’Hyper.
Upterm, anciennement nommé Black Screen, est également un terminal qui tourne avec Electron. Il fournit également le shell et une auto-complétion graphique des commandes.
Les originaux
cool-retro-term est un terminal avec un aspect qui fait penser aux vieux tubes cathodiques. Pour les nostalgiques donc !
Et le gagnant ?
Il n’y a pas vraiment de gagnant. Différentes personnes ont différents critères. Pour certains, la prise en charge des ligatures est primordiale, alors qu’elle peut être totalement inutile pour quelqu’un d’autre.
À titre personnel, j’ai testé pas mal de terminaux et je suis resté sur urxvt. kitty me semble particulièrement intéressant, mais un bogue de ma carte graphique m’empêche de l’utiliser. Alacritty me semble encore un peu trop jeune et limité en fonctionnalités. Je ne suis pas à l’aise avec les versions extrêmes : st est trop limité à mon goût, alors que Hyper est trop lourd. Je n’ai pas particulièrement apprécié les terminaux liés à un environnement de bureau (mais je n’utilise pas d’environnements de bureau) et je suis tombé sur plusieurs bogues gênants pour les terminaux avec la bibliothèque VTE.
Wikipédia propose une liste de terminaux et une comparaison de certains d’entre eux.
Et vous, chers lecteurs, qu’utilisez‐vous ? Et pourquoi ?
N. D. A. : Merci aux nombreuses personnes qui ont commenté pour faire découvrir leur terminal préféré. J’ai ajouté ces terminaux à la dépêche, mais je vous encourage à lire les commentaires, c’est plus détaillé et cela permet de mieux comprendre les spécificités de chaque outil !