L’émulateur de terminal Kitty
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 :
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 :
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.
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.
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.
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.
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 |