4 points par GN⁺ 2024-08-13 | 1 commentaires | Partager sur WhatsApp
  • Après avoir utilisé iTerm 2 pendant longtemps, l’auteur a redonné sa chance à WezTerm pour profiter d’une configuration textuelle et du partage via les dotfiles, avec une API de configuration en Lua permettant d’ajuster finement l’apparence, les raccourcis clavier, le multiplexage et les workspaces
  • La configuration est stockée dans wezterm.lua et bénéficie d’un hot reload immédiat à chaque sauvegarde ; l’overlay de débogage via CTRL + SHIFT + L permet de consulter directement les logs et le REPL Lua
  • La configuration en Lua permet de composer dynamiquement plus de 1 000 thèmes de couleurs intégrés, l’intégration avec le mode sombre/clair du système, les polices, les décorations de fenêtre macOS et une barre d’état style powerline
  • Les raccourcis par défaut peuvent être conservés ou désactivés, et l’on peut définir soi-même le déplacement par mot avec Option + Arrow, l’ouverture de la configuration avec CMD +,, ainsi que les manipulations de panes basées sur une leader key et des key tables
  • Le multiplexage intégré et les workspaces conservent l’état des fenêtres, panes et onglets par projet comme des sessions tmux, et il est possible de créer en Lua jusqu’à l’interface de sélection de projet et le flux de bascule

Pourquoi je suis passé de iTerm 2 à WezTerm

  • J’utilisais iTerm 2 depuis presque 10 ans, mais je voulais un terminal dont toute la configuration soit gérée en texte pour pouvoir l’ajouter à mes dotfiles et la partager entre mes machines pro et perso
  • WezTerm se distingue par une API puissante et une config Lua ; lors de cette deuxième tentative, il a été possible d’obtenir une configuration de terminal plus esthétique et plus fonctionnelle
  • Le périmètre couvert ici inclut l’apparence, les raccourcis clavier, le multiplexage, le passage entre workspaces, la barre d’état et la configuration dynamique du thème
  • Certaines fonctionnalités ne sont pas abordées dans cet article
    • règles personnalisées de mise en évidence des hyperliens
    • scrollback consultable par recherche
    • quick copy mode
    • prise en charge des images
  • La configuration d’exemple est pensée pour une expérience sous macOS ; elle n’a pas été testée sur d’autres systèmes, même si WezTerm fonctionne lui-même dans plusieurs environnements
  • Un exemple de configuration final est fourni dans ce gist

Installation et structure de base d’une configuration Lua

brew install wezterm
  • Le fichier de configuration est placé dans $XDG_CONFIG_HOME/wezterm/wezterm.lua
    • sur la plupart des systèmes, macOS compris, cela correspond à ~/.config/wezterm/wezterm.lua
    • utiliser un répertoire plutôt qu’un unique ~/.wezterm.lua facilite la répartition de la configuration dans plusieurs fichiers
local wezterm = require 'wezterm'
local config = wezterm.config_builder()

return config
  • La configuration de WezTerm étant écrite en Lua, il est plus simple de créer des réglages dynamiques complexes qu’avec YAML ou TOML
  • Lua est un langage de programmation, donc plus difficile à apprendre que YAML ou TOML, mais si l’on a déjà utilisé Ruby, Python ou JavaScript, le code d’exemple reste facile à lire
  • Pour apprendre Lua, on peut consulter le Getting Started guide

Hot reload et overlay de débogage

  • WezTerm détecte les modifications du fichier de configuration et effectue un rechargement automatique, ce qui permet de voir immédiatement l’effet d’un changement sans redémarrer le terminal
  • Si l’on enregistre une configuration contenant une erreur, comme un mauvais nom de fonction, une fenêtre d’erreur d’exécution apparaît aussitôt
wezterm.config_builderZ()
  • Les logs peuvent être écrits avec wezterm.log_info()
wezterm.log_info("hello world! my name is " .. wezterm.hostname())
  • CTRL + SHIFT + L ouvre l’overlay de débogage, où l’on peut consulter les logs et le REPL Lua
    • on peut exécuter des expressions Lua comme 1 + 1
    • on peut aussi inspecter des valeurs du module wezterm, comme wezterm.home_dir
  • En combinant hot reload et overlay de débogage, la boucle de feedback pour modifier puis vérifier la configuration devient très courte

Réglages d’apparence : couleurs, thème système, police, style de fenêtre

  • Thèmes de couleurs et configuration dynamique

    • WezTerm propose plus de 1 000 thèmes de couleurs intégrés, sélectionnables via config.color_scheme
    config.color_scheme = 'Tokyo Night'
    
    • la liste des thèmes est disponible sur WezTerm colorschemes
    • avec l’événement window-config-reloaded et wezterm.color.get_builtin_schemes(), il est aussi possible de créer une configuration dynamique qui applique un thème aléatoire à chaque nouvelle fenêtre
    • après avoir défini un override de configuration par fenêtre, revenir à un thème statique peut empêcher le hot reload de s’appliquer immédiatement
    • on peut supprimer l’override en exécutant window:set_config_overrides({}) dans le terminal de débogage, ou en fermant puis rouvrant la fenêtre
  • Intégration avec le mode sombre/clair du système

    • la configuration peut être isolée dans un module appearance.lua afin de changer de thème selon l’apparence du système d’exploitation
    • on détermine si le mode sombre est actif en recherchant la chaîne "Dark" dans wezterm.gui.get_appearance()
    • si wezterm.gui n’est pas disponible, le mode sombre est utilisé par défaut
    if appearance.is_dark() then
      config.color_scheme = 'Tokyo Night'
    else
      config.color_scheme = 'Tokyo Night Day'
    end
    
  • Police et décorations de fenêtre

    • WezTerm inclut par défaut JetBrains Mono et Nerd Font Symbols
    • la configuration d’exemple utilise Berkeley Mono en 13 pt
    config.font = wezterm.font({ family = 'Berkeley Mono' })
    config.font_size = 13
    
    • l’exemple de style de fenêtre macOS comprend un fond semi-transparent, du blur, la suppression de la barre de titre et le réglage de la police de la barre d’onglets
    config.window_background_opacity = 0.9
    config.macos_window_background_blur = 30
    config.window_decorations = 'RESIZE'
    

Barre d’état et API d’événements de WezTerm

  • Le callback de l’événement update-status ajoute des segments de style powerline à la barre d’état de droite
  • L’exemple initial affiche un segment de hostname à partir de la couleur de fond, de la couleur de premier plan du thème actuel et de wezterm.hostname()
  • wezterm.on relie des callbacks aux événements du terminal
    • update-status est déclenché périodiquement quand une mise à jour d’état peut être effectuée
    • WezTerm veille à ce qu’une seule mise à jour s’exécute à la fois, et interrompt le handler si le code prend trop de temps
  • window:effective_config().resolved_palette permet de récupérer la palette courante, overrides compris
  • wezterm.format sert à appliquer des styles comme la couleur, le gras ou le soulignement à des chaînes
  • Les exemples de la seconde partie ajoutent davantage de segments à la barre d’état
    • workspace actuel
    • date et heure
    • hostname
  • wezterm.color.parse, color:lighten, color:darken et wezterm.color.gradient servent à calculer des couleurs en dégradé à partir du thème courant

Raccourcis clavier : déplacement par mot sur macOS et ouverture de la configuration

  • WezTerm fournit des raccourcis par défaut, qui sont conservés dans l’exemple
  • Pour les désactiver, on peut utiliser config.disable_default_key_bindings = true
  • Sur macOS, pour retrouver le déplacement mot par mot de iTerm 2 et Terminal.app avec Option + LeftArrow et Option + RightArrow, on envoie ESC + b et ESC + f
{
  key = 'LeftArrow',
  mods = 'OPT',
  action = wezterm.action.SendString '\x1bb',
}
  • Il est possible de configurer CMD + , pour ouvrir le fichier de configuration de WezTerm dans un nouvel onglet
    • l’exemple utilise nvim et wezterm.config_file
  • Si WezTerm est lancé depuis le Finder de macOS, le binaire de l’éditeur peut ne pas être présent dans PATH, ce qui peut faire échouer l’exécution de la commande
  • En complétant les variables d’environnement par défaut avec config.set_environment_variables, ce même environnement est ensuite transmis aux commandes spawn
config.set_environment_variables = {
  PATH = '/opt/homebrew/bin:' .. os.getenv('PATH')
}

Multiplexage intégré et leader key

  • Le multiplexage intégré de WezTerm peut remplacer tmux
  • Cette fonction intégrée apporte un buffer de scrollback par pane, un meilleur contrôle de la souris, une sélection plus simple et, de manière générale, de meilleures performances
  • CTRL + SHIFT + P ouvre la command palette, où l’on peut exécuter des commandes comme “Shell: Split Horizontally” ou “Shell: Split Vertically”
  • Les raccourcis de split par défaut sont volontairement complexes pour éviter les conflits ; une leader key permet de créer des combinaisons plus simples
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
  • Dans l’exemple, après la leader key, " déclenche un split horizontal et % un split vertical, dans l’esprit de tmux
{
  key = '"',
  mods = 'LEADER',
  action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' },
}
  • Si l’on veut envoyer CTRL + A au terminal lui-même, on peut mapper la combinaison LEADER|CTRL pour renvoyer CTRL + A

Déplacement entre panes, redimensionnement et key table

  • Le déplacement entre panes associe h, j, k, l avec la leader key, dans le style des touches de direction de vim
  • ActivatePaneDirection permet de se déplacer vers Down, Up, Left et Right
  • Les tables Lua répétitives peuvent être factorisées dans une fonction
local function move_pane(key, direction)
  return {
    key = key,
    mods = 'LEADER',
    action = wezterm.action.ActivatePaneDirection(direction),
  }
end
  • Le redimensionnement des panes peut aussi se faire à la souris, mais l’exemple utilise une key table pour privilégier un flux orienté clavier
  • Une key table consiste à entrer dans un mode spécifique pour utiliser des raccourcis dédiés à ce mode
    • c’est similaire à une leader key, mais sans désactivation immédiate après une seule action
    • c’est adapté aux tâches où il faut répéter plusieurs fois les mêmes touches, comme le redimensionnement
  • Dans l’exemple, LEADER + r active la key table resize_panes, puis h/j/k/l ajustent la taille du pane de 3 cellules à la fois
  • timeout_milliseconds = 1000 fait quitter le mode de redimensionnement après 1 seconde
  • Les utilisateurs de Neovim peuvent regarder smart-splits.nvim, qui facilite les déplacements entre panes WezTerm et panes vim

Organisation des workspaces par projet

  • Lorsqu’on travaille sur plusieurs projets en même temps, on veut souvent conserver pour chacun une instance de multiplexeur, des fenêtres, des panes et des onglets distincts
  • Dans WezTerm, cet usage proche des sessions de tmux est géré par les workspaces
  • La structure proposée consiste à créer un projects.lua avec une fonction de sélection de projet importée dans la configuration principale
  • Dans l’exemple initial, les chemins de projet sont listés à la main, puis un InputSelector affiche l’interface de sélection
    • fuzzy = true active la recherche floue
    • au début, le résultat de la sélection est seulement écrit dans l’overlay de débogage
  • LEADER + p ouvre l’interface de sélection de projet, et LEADER + f affiche la liste des workspaces existants avec recherche floue
action = wezterm.action.ShowLauncherArgs { flags = 'FUZZY|WORKSPACES' }
  • L’inconvénient de maintenir soi-même la liste des chemins peut être réduit avec wezterm.glob(), qui collecte automatiquement les sous-répertoires des dossiers de projets
  • L’exemple utilise les sous-répertoires de ~/Projects comme projets, tout en incluant aussi le répertoire personnel dans la liste
  • Lorsqu’un projet est sélectionné, SwitchToWorkspace est exécuté
    • si le workspace existe, on bascule dessus
    • sinon, il est créé
    • le nom du workspace correspond au dernier segment du chemin
    • le répertoire de travail courant du nouveau terminal est défini sur le chemin du projet choisi

Ce qu’on peut encore explorer

  • WezTerm propose bien d’autres possibilités dans sa liste de fonctionnalités
  • Les possibilités offertes par la configuration Lua sont détaillées plus largement dans la documentation de l’API WezTerm
  • Une bonne approche consiste à suivre une configuration pas à pas, à ne garder que ce qui sera réellement utilisé, puis à la réécrire dans son propre style avant d’ajouter les fonctions nécessaires
  • Si WezTerm vous plaît, vous pouvez aussi soutenir Wez, qui travaille sur ce projet open source

1 commentaires

 
GN⁺ 2024-08-13
Avis de Hacker News
  • Je suis récemment passé à WezTerm et j’en suis très satisfait.
    Avant, j’utilisais kitty et, en quittant iTerm2, j’avais apprécié sa configuration et sa simplicité, mais côté fonctionnalités intégrées WezTerm est largement meilleur. La configuration du terminal est assez courte pour tenir sur un seul écran dans l’éditeur, et depuis, le terminal ne me gêne tout simplement plus, donc je n’ai plus à y penser.
    Ce qui m’a définitivement fait abandonner kitty, c’est que chaque fois que je rencontrais un problème ou que j’essayais de reproduire une fonction d’iTerm2, je tombais sur des réponses brèves et méprisantes du maintainer.
    Par exemple, à une question du genre « comment configurer tmux dans kitty ? », je me souviens d’une réponse du type « ne le fais pas, tmux est idiot », puis fermeture du ticket, ce qui m’a finalement fait renoncer.

    • Moi aussi, je suis passé de Kitty à WezTerm à cause de ce genre de réponses du maintainer.
      Bien sûr, c’est son projet et c’est un excellent programmeur, mais un peu d’humilité ne ferait pas de mal.
    • Je me demande si WezTerm prend en charge l’équivalent de la hotkey window d’iTerm.
      Pour ceux qui ne connaissent pas, c’est une fenêtre que l’on peut afficher/masquer avec un raccourci précis et qui, lorsqu’elle est affichée, reste au-dessus de toutes les fenêtres, ce qui permet d’utiliser instantanément un terminal depuis n’importe où. On peut vivre sans, mais ce n’est pas une fonctionnalité à laquelle j’ai envie de renoncer ; donc même si les autres fonctions de WezTerm sont bonnes, sans ça il serait éliminé d’emblée pour moi.
    • Plus je vieillis, plus un maintainer excessivement dogmatique et méprisant me paraît être le plus gros signal d’alerte pour éviter un projet.
      De l’extérieur, cela ressemble souvent au meilleur produit, mais une fois qu’on commence à l’utiliser en profondeur, on se retrouve enfermé dans les choix de cette personne, sans échappatoire.
    • Je ne trouve pas qu’il y ait quoi que ce soit de particulièrement grave, à part le fait que le maintainer de Kitty soit un peu abrupt, mais un maintainer n’a aucune obligation de devenir l’ami des utilisateurs.
      En revanche, quand j’ai commencé à utiliser WezTerm au début de l’année, j’ai été vraiment surpris. J’ai beaucoup lu ce qu’écrivait Wez, et à chaque fois le ton était impeccable ; j’ai trouvé ça vraiment excellent.
    • Le développeur de kitty semble plutôt convaincu de savoir mieux que tout le monde comment on doit utiliser un terminal, et de considérer que les avis des autres sont fondamentalement erronés.
      Le fait qu’il ne rende même pas correctement l’ancienne interface make menuconfig de Linux, et qu’on ne puisse pas le corriger par configuration parce qu’il ne croit pas à la configuration, est assez révélateur. À force de lire les tickets, ce n’est pas seulement insultant : on finit presque par ressentir le besoin de « défendre » avec la même virulence une manière aléatoire d’utiliser un terminal, et ce n’est pas sain.
      Je ne peux pas en être sûr, mais même si j’étais d’accord avec lui sur absolument tout ce qui concerne les terminaux, je pense que je préférerais encore écrire mon propre terminal plutôt que d’utiliser le sien.
  • D’après mon expérience, Wez réagit étonnamment vite aux issues GitHub, et quand il y a réellement quelque chose qui cloche, il le corrige généralement en un ou deux jours.
    À part une ou deux petites frustrations liées aux touches de modification via SSH, les fonctionnalités correspondent presque parfaitement à mes besoins, et en plus c’est rapide. J’étais auparavant un grand utilisateur d’Alacritty, mais j’avais besoin d’une meilleure prise en charge des modificateurs dans Emacs à distance.

    • Moi aussi, j’ai ouvert une issue (https://github.com/wez/wezterm/issues/4917) ; non seulement il a répondu, mais il a aussi répondu à des questions annexes, et il a fusionné très rapidement les deux PR de correction que j’avais faites.
    • Mon expérience n’a pas été aussi positive.
      J’ai bien commenté une issue déjà fermée, mais elle était de toute façon fermée en « won’t do » et mon commentaire a été ignoré. Je n’avais pas envie d’ouvrir une nouvelle issue pour le même sujet qui avait déjà été refusé.
      https://github.com/wez/wezterm/issues/4706
    • À propos d’Emacs à distance, WezTerm peut intercepter et redéfinir entièrement les combinaisons de touches.
      Des combinaisons comme C-S-" ne sont pas prises en charge par le protocole de terminal, donc il n’y a pas de bonne façon de les envoyer. J’ai donc fait en sorte que WezTerm envoie à la place " c s '", puis j’ai ajouté un binding supplémentaire dans Emacs. Grâce à cette astuce avec F12, j’ai pu envoyer des combinaisons assez complexes que le protocole de terminal ne sait pas gérer.
  • À l’origine, j’avais installé WezTerm en passant de Kubuntu à Ubuntu, parce que je voulais utiliser certaines fonctions de Konsole, comme le scrollback infini et la recherche dans le scrollback, sans installer Konsole.
    Je sais qu’on peut installer Konsole aussi sous Gnome, mais ça me semblait un peu déplacé. WezTerm m’a plu tout de suite, mais en lisant cet article, je me rends compte que je n’ai encore fait qu’effleurer la surface de ses possibilités de configuration.
    Mon seul reproche, c’est que beaucoup de fonctions ne sont pas faciles à découvrir. La documentation est vraiment bonne, et l’auteur est actif et sympathique, mais par exemple, j’avais cherché comment sélectionner un gros bloc de texte uniquement au clavier, j’avais essayé une fois en me disant « il faut que je retienne ça ! », puis je l’ai aussitôt oublié ; aujourd’hui, je sélectionne de nouveau à la souris comme un parfait débutant. Comme ce n’est pas quelque chose que je fais souvent, c’est plus rapide que de retrouver la page de doc via Google.
    Pour référence, la page en question est https://wezfurlong.org/wezterm/copymode.html ; à son nom, on pourrait croire que c’est ce que je cherchais, mais ce n’est pas la fonction complètement différente https://wezfurlong.org/wezterm/quickselect.html. Elle aussi est très utile et l’idée est excellente, mais ce n’était pas ce que je cherchais.

    • J’ai mis ma configuration WezTerm dans mon dépôt de dotfiles, et j’ai ajouté ce genre de notes dans le README pour pouvoir les retrouver facilement plus tard.
      https://github.com/bbkane/dotfiles/tree/master/wezterm
    • Le mode QuickSelect est vraiment incroyable.
      Il est déjà utile par défaut, mais sa vraie force, c’est qu’on peut personnaliser les expressions régulières à faire correspondre. J’en ai ajouté une qui trouve tous les noms de fichiers dans la sortie de eza --icons, et \p{Co} correspond aux icônes. Du coup, après avoir défini ls comme alias de eza, je peux directement saisir n’importe quel nom de fichier avec shift + la lettre QuickSelect.
    • Je me demande si cela signifie qu’il existe dans WezTerm un moyen d’avoir le scrollback infini et la recherche en temps réel dans le scrollback, comme dans Konsole.
      Je ne l’ai pas encore trouvé, et c’est pour ça que je garde souvent aussi une session Konsole ouverte. Quand on suit des logs en temps réel avec tail, ces deux fonctions sont vraiment puissantes.
    • Je suis curieux de savoir pourquoi tu as quitté Kubuntu. Je demande parce que j’envisage de l’installer.
  • Après avoir essayé Mac Terminal, iTerm2, Kitty, Warp, etc., j’ai finalement adopté WezTerm.
    Il est facile à configurer, rapide et agréable à regarder. J’ai même créé un thème.
    https://tiniri.vlad.studio/

    • J’ai moi aussi essayé ces terminaux, mais je suis finalement resté sur WezTerm, qui est maintenant l’un de mes terminaux préférés.
      Je suis tombé par hasard sur ce site pour comparer plusieurs terminaux : https://terminaltrove.com/terminals/
      Ça a l’air plutôt utile pour ceux qui veulent comparer des terminaux.
    • Ce thème est très réussi. Je me demande s’il existe un moyen de l’utiliser aussi dans les éditeurs JetBrains.
    • J’ai aimé le thème Vlad clair, alors je l’ai installé.
    • Les thèmes de couleurs sont vraiment réussis. Ce serait bien qu’il y en ait aussi pour Konsole et Sublime Text.
  • J’utilise WezTerm depuis environ un an et je sponsorise Wez sur GitHub ; c’est un excellent terminal, et lui est un bon développeur.
    L’article disait ne pas en parler, mais l’une de mes fonctions préférées est Quick Copy, ainsi que les autres modes de copie. Je les utilise vraiment tout le temps. Il suffit d’appuyer sur C-S-Space, puis de saisir la lettre affichée à côté de l’élément qu’on veut copier.
    Mon principal cas d’usage, c’est d’avoir quelque chose qui ressemble à mosh+tmux depuis un portable macOS vers une machine Linux du travail. Je garde toujours une session ouverte et je peux travailler sur la machine du boulot depuis mon Mac. Avec des sessions reconnectables, des panes et des tabs, je peux continuer à travailler même en m’éloignant de mon poste, et la qualité est excellente.

    • L’une des fonctions vraiment géniales du mode Quick Copy, c’est que si l’on saisit la lettre dans sa version majuscule, la valeur est automatiquement recollée dans l’invite du terminal.
    • Je viens de découvrir QuickSelect, et je pense que je vais beaucoup l’utiliser à l’avenir.
  • Je me demande bien ce qu’il pourrait y avoir à ne pas aimer dans WezTerm
    Ma fonctionnalité préférée, mais souvent négligée, est sa prise en charge complète multiplateforme. Dans un environnement comme le mien, où j’utilise Linux, macOS et Windows, il suffit d’apprendre WezTerm une seule fois. Je partage aussi une bonne partie de ma configuration de terminal entre les systèmes d’exploitation

    • Le seul point qui ne m’a pas plu dans WezTerm, et la raison pour laquelle j’ai arrêté de l’utiliser, concerne la façon dont il copie dans le presse-papiers les lignes qui ont été repliées
      C’est peut-être un problème propre à moi ou lié à ma manière d’utiliser tmux, mais quand je copiais une ligne après un wrap, le texte copié semblait contenir des retours à la ligne. C’était très agaçant, et j’ai supposé que cela venait de l’interaction entre WezTerm et tmux
      Je n’ai pas assez d’éléments pour faire un bon rapport de bug, et comme WezTerm dispose de son propre serveur de multiplexage de terminal, les « ssh domains », ce n’est peut-être pas assez important pour être corrigé. Mais je n’ai pas envie d’installer le serveur de multiplexage de WezTerm partout, et sur les machines auxquelles je me connecte en SSH, tmux est généralement déjà présent
      À part ça, WezTerm est excellent
    • Quand je passe du MacBook de l’entreprise à ma machine Linux personnelle, la plus grosse douleur, ce sont les raccourcis clavier
      Les options de configuration de macOS sont limitées et nécessitent plusieurs contournements ; je pourrais aussi aligner Linux sur macOS, mais je n’aime pas vraiment les raccourcis de macOS eux-mêmes. On se retrouve donc avec un mélange bizarre, et à chaque changement je continue d’appuyer sur les mauvaises touches
      Je me demande si quelqu’un a trouvé une configuration qui fonctionne bien
    • Dans mon environnement, les performances n’étaient pas bonnes, et avec le temps il avait tendance à se figer pendant plusieurs secondes lors du changement d’onglet
      Je ne sais pas pourquoi, ni comment diagnostiquer le problème. Mon seul soupçon est un gros scrollback, mais je ne peux pas m’en passer. J’ai fini par passer à Kitty ; Kitty a aussi ses problèmes, mais au moins il fonctionne
    • Je pense que le choix du langage est vraiment important ici
      Le langage de configuration Lua brille parce qu’il rend assez simples les changements selon l’environnement. Je pense aussi qu’il y a un effet secondaire sous-estimé de Rust. Les outils Rust modernes ont souvent une excellente prise en charge multiplateforme, peut-être parce que la couche d’abstraction entre le langage et le système d’exploitation est bonne
    • Le fait qu’il soit bien testé sur les trois systèmes d’exploitation compte aussi beaucoup
      Vers 2019, il m’a suffi de comparer rapidement le dépôt wez à d’autres, côté GitHub Actions, issues et documentation, pour être convaincu, et je ne suis jamais revenu en arrière depuis. Il prend même en charge les onglets par défaut
      C’est le premier terminal qui a réellement remplacé urxvt pour moi, en matière de prise en charge et de vitesse. Avant, j’utilisais termite tout en gardant urxvt en secours, au cas où termite déclencherait un bug dans une situation étrange
  • La raison pour laquelle je reste sur iTerm2, c’est Edit->Selection Respects Soft Boundaries
    C’est une fonctionnalité qui, « lorsqu’elle est activée, interprète la barre verticale du caractère pipe | comme un séparateur de pane dans vim ou emacs, et la sélection se replie à cet endroit »
    Dans mon cas, j’en ai besoin quand je sélectionne du texte dans IRC
    https://github.com/wez/wezterm/issues/596

    • C’est en fait le problème de bloat à la Microsoft Word
      Personne n’a besoin de toutes les fonctionnalités, mais chacun a ses 10 fonctionnalités de niche qu’il veut, et ces 10 fonctionnalités ne sont pas les mêmes d’une personne à l’autre. Donc, pour obtenir ses 10 fonctionnalités de niche, on finit par accepter le bloat
    • Cette fonctionnalité a l’air incroyablement bien. Je me demande s’il existe un terminal qui la prend en charge sous Linux
    • zellij prend cela en charge par défaut si le terminal prend en charge les fonctionnalités OSC appropriées. Les terminaux mentionnés dans ce fil devraient le prendre en charge
      Modification : je me suis exprimé un peu brutalement, désolé. J’avais raté la partie où tu disais l’utiliser dans IRC
    • En le voyant en pratique, je suis 100 % d’accord pour dire que c’est une excellente fonctionnalité UI/UX
    • J’utilise iTerm depuis des années et je ne connaissais pas du tout ce réglage. C’est une fonctionnalité décisive pour mon usage d’Emacs
  • J’étais utilisateur d’iTerm2 depuis que j’ai commencé à utiliser macOS pour la première fois, il y a presque 10 ans
    Mais récemment, je l’ai trouvé vraiment lent, et j’ai atteint ma limite quand, après être passé dessus avec cmd-tab, je me suis retrouvé à attendre plus d’une seconde avant que le terminal n’apparaisse
    J’ai regardé quelques alternatives, mais rien ne convenait parfaitement. Un terminal nécessitait un compte/une connexion pour fonctionner, ce qui était un gros point négatif, et un autre terminal, écrit en {Java,Type}Script, cassait même une commande simple comme yes à cause de la nature asynchrone des streams Node.js
    Jusqu’ici, WezTerm me plaît beaucoup. Il est assez rapide, très configurable, et le thème que j’utilisais dans iTerm2, OneDark(base16), est inclus par défaut
    Le seul désagrément initial a été de devoir ajouter moi-même la configuration de cmd-left et cmd-right dans la configuration Lua ; j’aurais aimé que ce soit dans les valeurs par défaut

    • Celui qui exige un compte/une connexion, c’est Warp, et celui en {Java,Type}Script, tu veux dire Tabby ou extraterm ?
  • Wez publie aussi un livre sur la programmation système en Rust
    https://leanpub.com/sysprog

  • C’est un bon article, donc je pourrais essayer WezTerm, mais je viens tout juste de passer à Kitty et je n’ai pas envie de changer trop souvent
    Cela dit, il faut corriger quelque chose à propos de Kitty. Kitty n’utilise ni YAML ni TOML ; il utilise son propre DSL de configuration simple, et pour le reste il peut être entièrement scripté en Python

    • Moi aussi, c’est un peu pareil, donc je l’ai simplement mis en favori pour l’instant