3 points par GN⁺ 2024-12-14 | 1 commentaires | Partager sur WhatsApp
  • J’en suis récemment venu à penser que tout ce qui se passe dans un terminal résulte de la combinaison des quatre éléments suivants

    • le rôle du système d’exploitation
    • le rôle du shell
    • le rôle de l’émulateur de terminal
    • le rôle du programme en cours d’exécution (top, vim, cat, etc.)
  • Les programmes se comportent de manière étonnamment cohérente

    • POSIX définit principalement le fonctionnement de l’émulateur de terminal, de l’OS et du shell, mais il n’existe pas de standard sur la manière dont les programmes individuels doivent se comporter
    • Pourtant, les programmes de terminal ont globalement tendance à se comporter de façon cohérente
  • Ces règles sont descriptives, pas prescriptives

    • Il ne s’agit pas de convaincre les auteurs de programmes de terminal qu’ils doivent suivre ces règles
    • Il est utile de connaître les règles de base auxquelles on peut s’attendre quand on utilise un nouveau programme de terminal
  • Il arrive que la responsabilité du programme ne soit pas claire

    • Par exemple, quitter un REPL en appuyant sur Ctrl-D doit être explicitement implémenté par le programme

Règle 1 : les programmes non interactifs doivent se terminer quand on appuie sur Ctrl-C

  • Les programmes non interactifs se terminent par défaut quand on appuie sur Ctrl-C
  • Dans les programmes interactifs, Ctrl-C joue un autre rôle

Règle 2 : les TUI doivent se quitter avec q

  • Les programmes TUI comme less ou htop se quittent avec q

Règle 3 : les REPL doivent se terminer avec Ctrl-D sur une ligne vide

  • La plupart des REPL se terminent quand on appuie sur Ctrl-D sur une ligne vide

Règle 4 : il ne faut pas utiliser plus de 16 couleurs

  • Les programmes de terminal n’utilisent presque jamais de couleurs autres que les 16 couleurs ANSI de base

Règle 5 : il faut à peu près prendre en charge les raccourcis clavier de readline

  • La plupart des programmes prennent en charge les raccourcis clavier de readline

Règle 5.1 : Ctrl-W doit supprimer le dernier mot

  • Il existe très peu de programmes où Ctrl-W ne supprime pas le dernier mot

Règle 6 : il faut désactiver les couleurs lors de l’écriture dans un pipe

  • La plupart des programmes désactivent les couleurs lorsqu’ils écrivent dans un pipe

Règle 7 : - signifie stdin/stdout

  • Si on passe - à la place d’un nom de fichier, le programme lit depuis stdin ou écrit vers stdout

  • Apprendre ces règles prend du temps

    • Il faut apprendre où elles s’appliquent, reconnaître les exceptions et intégrer inconsciemment les motifs
    • Les écrire explicitement peut aider les autres à les apprendre plus vite

1 commentaires

 
GN⁺ 2024-12-14
Commentaire Hacker News
  • Il faut respecter les couleurs de premier plan et d’arrière-plan par défaut de l’utilisateur

    • Si des couleurs sont utilisées, elles doivent rester lisibles quelle que soit la couleur d’arrière-plan et de premier plan par défaut
    • Il ne faut pas transmettre l’information uniquement par la couleur
    • Il faut utiliser les emojis avec prudence
    • Il ne faut pas supprimer d’informations importantes dans une sortie défilante
    • Il faut fournir à l’utilisateur des réglages pour choisir les couleurs et les éléments visuels
  • Recommande les Command Line Interface Guidelines

    • Inclut des règles comme quitter avec Ctrl-C, accepter - pour stdin, désactiver les couleurs dans un pipeline, etc.
  • Règles supplémentaires pour les outils en ligne de commande

    • Il ne faut pas présumer du type de terminal
    • Il faut supposer qu’il peut ne pas y avoir de terminal
    • Il faut suivre les conventions courantes pour la structure des arguments et de la sortie
    • Il faut utiliser les codes de sortie standard de sysexits.h
    • Il faut inclure --help dans le binaire ainsi qu’une page de manuel
  • Informations sur les raccourcis readline/emacs

    • Sur macOS, Ctrl-E, Ctrl-W et Ctrl-U peuvent être utilisés
    • Le programme rlwrap peut être installé pour ajouter des fonctions d’édition de ligne
  • Conseils sur l’utilisation des couleurs

    • Il ne faut pas utiliser plus de 16 couleurs
    • Les couleurs doivent être configurables
  • Problème rencontré lors de l’utilisation de Ctrl-D dans GHCi

    • Il faut quitter avec la commande :q
  • Explication sur le fait de traiter ~ comme le répertoire personnel

    • Cela fonctionne dans le shell, mais pas dans l’API POSIX
  • Il faut éviter que les programmes ajoutent des fichiers dans le répertoire personnel

    • Il faut respecter XDG_CONFIG_HOME
  • Avis sur la cohérence des CLI

    • Les CLI sont plus cohérentes que les GUI
    • Il est difficile d’apporter cette propriété aux GUI
  • Les processus de longue durée devraient recharger leur configuration sur SIGHUP

  • Astuce utile pour les connexions SSH

    • ~. permet de fermer une session SSH