GNU/Linux >> Tutoriels Linux >  >> Linux

Prise en charge de Tmux, Term et 256 couleurs ?

Présentation

Ma question découle de la nécessité de comprendre pourquoi J'ai maintenant (après plusieurs essais) Terminal et tmux prenant en charge 256 couleurs et tput colors me disant qu'il n'y en a que 8.

Contexte

Commençons par le début.

J'utilise un Ubuntu boîte, Guake , tmux , Vim et j'adore le thème Solarized . Ils avaient l'air assez affreux, alors j'ai décidé d'activer le support de 256 couleurs et de jouer un peu.

Voyons ce qui se passe pour mon Terminal . tput colors dit qu'il y a 8 couleurs. Personnellement, je les ai mis en violet, à gauche, et bien sûr à droite, nous avons 2 nuances de bleu différentes. $TERM dit xterm . (Pour avoir le ls coloré J'eval ceci dans mon .bashrc .)

Vim semble également bien, malgré le fait que je l'appelle avec le 256 signaler dans un environnement où 256 couleurs ne sont pas pris en charge.

set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Le seul gars qui se plaint de l'espace colorimétrique réduit est tmux . Appel de tmux fournit les "mauvais" résultats attendus.

Mais appeler tmux avec le -2 flag fait que tout fonctionne bien, magiquement .

Maintenant, la seule chose que je comprends, c'est que -2 est équivalent à export TERM=screen-256color (source).

Guake se comporte de manière analogue à Terminal et les deux répondent xterm à la question echo $TERM .

Question

En gros, est-ce que quelqu'un comprend pourquoi tout fonctionne même si ça ne devrait pas ?

  • Suis-je sadique de me plaindre du fonctionnement des choses ? Peut-être.
  • Y a-t-il une meilleure raison ? Bien sûr :j'aimerais corriger l'apparence d'autres boîtes Ubuntu dans mon bureau, et j'aimerais comprendre pourquoi les choses fonctionnent ou ne fonctionnent pas.

Tests supplémentaires

Exécuter ce script (légèrement modifié) sur mon xterm donne le résultat suivant :256 couleurs, mais seulement 16 s'affichent correctement.

Ensuite, en changeant le profil du terminal, ces 16 couleurs changent également.

D'autres tests suivent.

De gauche à droite, de haut en bas, nous avons Solarisé thème de couleur, dircolor ansi-dark et 256dark , puis par défaut (Tango ) jeu de couleurs, dircolor ansi-dark et 256dark .

Observation :en théorie le dircolor ansi-dark sur Solarisé le jeu de couleurs doit correspondre étroitement au dircolor 256dark . Cela ne se produit pas clairement pour les fichiers répertoriés spécifiques. Au lieu de cela, cela se produit lorsque le répertoire de travail contient des dossiers , fichiers texte et liens symboliques . Conclusion  :aucune attention particulière n'a été portée lors de l'encodage du 256dark couleurs.

Conclusions préliminaires

xterm prend en charge 256 couleurs, malgré les tput colors dit. Les programmes peuvent se référer au ansi palette (personnalisable par l'utilisateur) ou définir ses couleurs en choisissant parmi un total de 256 couleurs.

Réponse acceptée :

Vous trouverez des informations sur la prise en charge de 256 couleurs dans la FAQ tmux.

En relation :Liste des shells prenant en charge le mot-clé `local` pour définir les variables locales ?

Détecter le nombre de couleurs que le terminal prend en charge n'est malheureusement pas simple, pour des raisons historiques. Voir Vérification du nombre de couleurs prises en charge par mon émulateur de terminal pour une explication. Cela signifie que

  • tmux ne peut pas déterminer de manière fiable si le terminal prend en charge plus de 8 couleurs ;
  • tmux ne peut pas communiquer de manière fiable à l'application qu'il prend en charge plus de 8 couleurs.

Lorsque vous êtes dans tmux, le terminal avec lequel vous interagissez est tmux. Il ne prend pas en charge toutes les séquences de contrôle de xterm. En particulier, il ne supporte pas le OSC 4 ; … séquence de contrôle pour interroger ou définir des valeurs de couleur. Vous devez l'utiliser lors de l'exécution directe dans xterm, en dehors de tmux.

Si vous exécutez tmux -2 , alors tmux démarre avec la prise en charge de 256 couleurs, même s'il ne pense pas que votre terminal prend en charge 256 couleurs (ce qui est assez courant).

Par défaut, tmux s'annonce comme screen sans prise en charge de 256 couleurs. Vous pouvez modifier la valeur de TERM dans .tmux.conf pour indiquer la prise en charge de 256 couleurs :

set -g default-terminal "screen-256color"

Vous pouvez utiliser TERM=xterm-256color ou TERM=screen-256color sur Ubuntu. Ces valeurs ne causeront des problèmes que si vous vous connectez à une machine distante qui n'a pas d'entrée termcap/terminfo pour ces noms. Vous pouvez copier les entrées dans votre répertoire personnel sur la machine distante ; cela fonctionne avec la plupart des implémentations terminfo modernes.

# From the Ubuntu machine to a machine that doesn't have *-256color terminfo entries
ssh somewhere.example.com mkdir -p .terminfo/s .terminfo/x
scp -p /lib/terminfo/s/screen-256color somewhere.example.com:.terminfo/s/
scp -p /lib/terminfo/x/xterm-256color somewhere.example.com:.terminfo/x/

Linux
  1. Comment compiler et installer Python avec le support OpenSSL ?

  2. Faire fonctionner 256 couleurs dans Tmux ?

  3. Comment trouver les valeurs valides pour le terme à utiliser dans Tmux ?

  4. Zsh :définir Term=screen-256color dans Tmux, mais Xterm-256color sans Tmux ?

  5. Medleytext - Une application de prise de notes intuitive et élégante pour les programmeurs

Personnalisation de mon terminal Linux avec tmux et Git

Comment installer et utiliser Tmux (multiplexeur de terminaux) sous Linux

Comment ajouter la prise en charge de PHP-FPM sur Apache et Nginx Web Server sur Ubuntu 18.04

Comment installer et utiliser Tmux (multiplexeur de terminaux) dans le système Linux

Existe-t-il un moyen de faire en sorte que Nano prenne en charge la saisie semi-automatique et la fermeture automatique des parenthèses ?

grep pour le terme et exclure un autre terme