GNU/Linux >> Linux Esercitazione >  >> Linux

Supporto per Tmux, Term e 256 colori?

Introduzione

La mia domanda nasce dalla necessità di capire perché Ho ora (dopo più prove) Terminale e tmux supporta 256 colori e tput colors dicendomi che ce ne sono solo 8.

Sfondo

Cominciamo dall'inizio.

Sto usando un Ubuntu scatola, Guake , tmux , Vim e adoro il tema Solarized . Avevano un aspetto davvero orribile, quindi ho deciso di abilitare il supporto a 256 colori e giocare un po'.

Vediamo cosa succede per il mio Terminale . tput colors dice che ci sono 8 colori. Personalmente li ho impostati sul viola, a sinistra, e ovviamente sulla destra abbiamo 2 diverse tonalità di blu. $TERM dice xterm . (Per avere le ls colorate Io eval questo nel mio .bashrc .)

Vim sembra anche a posto, nonostante lo chiamo con il 256 bandiera in un ambiente in cui 256 colori non supportato.

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

L'unico che si lamenta dello spazio colore ridotto è tmux . Chiamando tmux fornisce i risultati "errati" previsti.

Ma chiamando tmux con il -2 flag fa funzionare tutto bene, magicamente .

Ora l'unica cosa che ho capito è che -2 è equivalente a export TERM=screen-256color (fonte).

Guak si comporta in modo analogo al Terminale ed entrambi rispondono xterm alla domanda echo $TERM .

Domanda

In sostanza, qualcuno capisce perché tutto funziona anche se non dovrebbe?

  • Sono sadico di lamentarmi del perché le cose funzionano? Forse.
  • C'è una ragione migliore? Certo:vorrei sistemare l'aspetto di altre scatole Ubuntu nel mio ufficio e vorrei capire perché le cose funzionano o non funzionano.

Ulteriori esperimenti

Esecuzione di questo script (leggermente modificato) sul mio xterm fornisce il seguente risultato:256 colori, ma solo 16 vengono visualizzati correttamente.

Poi, cambiando il profilo del terminale, cambiano anche questi 16 colori.

Seguiranno altri test.

Da sinistra a destra, dall'alto in basso, abbiamo Solarized tema colore, dircolor ansi-dark e 256dark , quindi predefinito (Tango ) combinazione di colori, dircolor ansi-dark e 256dark .

Osservazione :in teoria il dircolor ansi-dark su Solarizzato la combinazione di colori dovrebbe corrispondere strettamente a dircolor 256dark . Ciò non sta chiaramente accadendo per i file elencati specifici. Invece, questo accade quando nella directory di lavoro ci sono cartelle , file di testo e link simbolici . Conclusione :nessuna attenzione è stata prestata durante la codifica del 256dark colori.

Conclusioni preliminari

xterm supporta 256 colori, nonostante tput colors dice. I programmi possono fare riferimento a ansi tavolozza (personalizzabile dall'utente) o definirne i colori, scegliendo tra un totale di 256 colori.

Risposta accettata:

Ci sono alcune informazioni sul supporto a 256 colori nelle FAQ di tmux.

Correlati:elenco di shell che supportano la parola chiave `local` per la definizione di variabili locali?

Il rilevamento del numero di colori supportati dal terminale purtroppo non è semplice, per ragioni storiche. Vedere Verifica di quanti colori supporta il mio emulatore di terminale per una spiegazione. Ciò significa che

  • tmux non può determinare in modo affidabile se il terminale supporta più di 8 colori;
  • tmux non può comunicare in modo affidabile all'applicazione che supporta più di 8 colori.

Quando sei in tmux, il terminale con cui stai interagendo è tmux. Non supporta tutte le sequenze di controllo di xterm. In particolare non supporta il OSC 4 ; … sequenza di controllo per interrogare o impostare valori di colore. Devi usarlo durante l'esecuzione diretta in xterm, al di fuori di tmux.

Se esegui tmux -2 , quindi tmux inizia con il supporto a 256 colori, anche se non pensa che il tuo terminale supporti 256 colori (cosa piuttosto comune).

Per impostazione predefinita, tmux si pubblicizza come screen senza supporto a 256 colori. Puoi modificare il valore di TERM in .tmux.conf per indicare il supporto a 256 colori:

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

Puoi usare TERM=xterm-256color o TERM=screen-256color su Ubuntu. Questi valori causeranno problemi solo se accedi a una macchina remota che non ha una voce termcap/terminfo per questi nomi. Puoi copiare le voci nella tua home directory sulla macchina remota; questo funziona con la maggior parte delle moderne implementazioni terminfo.

# 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. RedHat e SUSE hanno annunciato di ritirare il supporto per OpenLDAP

  2. Come compilare e installare Python con il supporto di OpenSSL?

  3. Quali emulatori di terminale supportano la modalità di controllo Tmux?

  4. QOwnNotes:un elenco di cose da fare con il supporto di OwnCloud e Nextcloud

  5. Utilizzo di kbhit() e getch() su Linux

Personalizzazione del mio terminale Linux con tmux e Git

Come installare e utilizzare Tmux (terminal multiplexer) in Linux

Come aggiungere il supporto PHP-FPM su Apache e Nginx Web Server su Ubuntu 18.04

Come installare e utilizzare Tmux (Terminal Multiplexer) nel sistema Linux

tmux:si blocca e non si carica e non risponde a nessun comando di opzione

Crittografia SandForce SSD:sicurezza e supporto