Pour cette quatrième publication au sujet de mon terminal, je passe en revue les raisons m'ayant fait choisir Kitty comme émulateur : sa gestion de polices de caractère avec ligature, ses thèmes et sa gestion des onglets et fenêtres.

Rxvt-unicode est un très bon choix d’émulateur de terminal car il est rapide, stable, recommandé, documenté, publié en licence GNU… Bref, un outil fiable et éprouvé !

Mais j’ai choisi Kitty initialement pour une raison très futile : contrairement à Urxvt, Kitty supporte les ligatures des polices de caractères. Mais au-delà de cette coquetterie, je n’ai absolument pas regretté ce choix.

Une police nerd avec des ligatures

Commençons donc par cette histoire de ligature. Et tout d’abord, de quoi s’agit-il ? Une image ira plus vite que des mots :

Quelques exemples de ligature.
Quelques exemples de ligature.

On trouve assez facilement des polices de caractère supportant les ligatures, et notamment des polices monospace bien adapté au code : FiraCode, JetBrains Mono, …

Pour ma part, j’ai adopté la police Dank Mono :

La police Dank Mono
La police Dank Mono

Maintenant que la question des ligatures est réglée, pourquoi parler d’une police nerd ? Une police nerd est une police qui a été patché pour y ajouter des glyphes (des logos) provenant de projets comme Font Awesome, Devicons ou encore Octicons. Pour faire quoi ? Et bien pour pouvoir afficher des éléments graphiques dans la console, comme avec Starship ou lsd.

Utilisation d'une police nerd dans l'émulateur de terminal
Utilisation d'une police nerd dans l'émulateur de terminal

On trouve plusieurs polices déjà patchées, mais pas de Dank Mono. Ce n’est pas grave, il est très facile de patcher soit même une police grâce aux outils fournis pas le projet nerd-font, comme par exemple une image docker :

$ docker run -v $PWD/DankMonoInit/OpenType-PS:/in -v $PWD/DankMono:/out nerdfonts/patcher -c

Ne restera plus alors qu’à installer la police de caractères patchée sur l’OS, par exemple sous Linux :

$ mkdir ~/.local/share/fonts
$ mv $PWD/DankMono ~/.local/share/fonts
$ fc-cache -f -v
$ fc-list -b | grep "Dank"
	family: "DankMono Nerd Font"(s)
	fullname: "Dank Mono Bold Nerd Font Complete"(s) "DankMono-Bold"(s)
	file: "/home/alexisjanvier/.local/share/fonts/DankMono/Dank Mono Bold Nerd Font Complete.otf"(s)
	postscriptname: "DankMonoNerdFontComplete-Bold"(s)
	family: "DankMono Nerd Font"(s)
	fullname: "Dank Mono Italic Nerd Font Complete"(s) "DankMono-Italic"(s)
	file: "/home/alexisjanvier/.local/share/fonts/DankMono/Dank Mono Italic Nerd Font Complete.otf"(s)
	postscriptname: "DankMonoNerdFontComplete-Italic"(s)
	family: "DankMono Nerd Font"(s)
	fullname: "Dank Mono Regular Nerd Font Complete"(s) "DankMono-Regular"(s)
	file: "/home/alexisjanvier/.local/share/fonts/DankMono/Dank Mono Regular Nerd Font Complete.otf"(s)
	postscriptname: "DankMonoNerdFontComplete-Regular"(s)

Et enfin de configurer kitty pour utiliser cette font, dans le fichier .config/kitty/kitty.conf :

font_family DankMono Nerd Font
bold_font DankMono Nerd Font, Bold
italic_font DankMono Nerd Font, Italic

Les thèmes

Comme dans pas mal d’autres émulateurs de terminal ou d’IDE, il est possible d’utiliser un thème pour gérer les couleurs d’affichage de kitty. Il en existe déjà beaucoup par défaut, dont des set de couleurs classiques comme Dracula, Github, Material ou encore Monokai. Et il en existe bien d’autres partagés par la communauté. Cela en fait même tellement que ça devient aussi compliquer que de choisir un film sur Netflix.

J’ai pour ma part toujours beaucoup de mal à choisir un thème et mes critères sont finalement limités. Par contre, ce que j’apprécie particulièrement, c’est d’avoir le même thème sur l’ensemble de mes outils, et principalement sur la console et sur vim (qui peut utiliser aussi un principe de thème). Et pour cela, il existe un très bon projet qui va vous permettre de choisir ou de créer un set de couleur, puis de l’exporter en thème compatible pour une grande quantité d’outils : kitty et vim donc, mais aussi Alacritty, GNOME Terminal, Hyper, JetBrains, VS Code, Chrome, Firefox, Tmux … Il s’agit de themer.

L'interface de themer
L'interface de themer

Des onglets et des fenêtres

Tout comme d’autres émulateurs, kitty est capable d’exécuter plusieurs sessions de console organisées en onglets et en fenêtres. Le niveau supérieur d’organisation est l’onglet. Chaque onglet est composé d’une ou plusieurs fenêtres. Les fenêtres peuvent être disposées selon plusieurs dispositions différentes. Tous les raccourcis claviers sont personnalisables. Pour les personnes (dont j’ai fait parti) qui l’utilisait pour justement gérer ces questions d’onglets et de fenêtres, plus besoin de Tmux! On peut même définir des sessions de démarrage incluant les onglets, les fenêtres et les éventuelles clis à lancer, à la tmuxinator.

Les onglets et les fenêtres de Kitty
Les onglets et les fenêtres de Kitty

Des images dans la console

Dernière petite chose, sans doute un peu gadget : il est possible avec kitty d’afficher des images dans la console grâce à icat.

Affichage d'une image dans la console
Affichage d'une image dans la console

Petit bilan

Kitty n’est pas le seul émulateur dans la place. Ce n’est pas le plus proche de la philosophie Unix et sans doute pas le plus technique. Mais il fait fait parfaitement le job et n’a jamais lâché depuis plus de 2 ans que je l’utilise au quotidien. Les raccourcis clavier sont simples à retenir (bien plus que tmux, je trouve) et il permet d’ajouter une touche graphique au terminal que j’aime bien. Et c’est d’ailleurs beaucoup sur ses capacités graphiques que j’ai orienté ce post. Mais Kitty possède bien d’autres spécificités que je vous laisse découvrir, si cela vous intéresse, sur le site du projet.

Antisèche

Raccourci Fonction
Ctrl Shift scroll vers le haut
Ctrl Shift scroll vers le bas
Ctrl Shift t nouvel onglet
Ctrl Shift alt t renommer l’onglet
Ctrl Shift q fermeture de l’onglet
Ctrl Shift atteindre l’onglet de gauche
Ctrl Shift atteindre l’onglet de droite
Ctrl Shift enter ouvrir une nouvelle fenêtre
Ctrl Shift ] fenêtre suivante
Ctrl Shift [ fenêtre précédente
Ctrl Shift 1,x atteindre la fenêtre 1,x
Ctrl Shift l changer le layout d’affichage des fenêtres
Ctrl Shift ` Passer la fenêtre en cours au premier plan