GNU/Linux >> Znalost Linux >  >> Linux

Podpora Tmux, Term a 256 barev?

Úvod

Moje otázka vyplývá z nutnosti pochopit proč Mám teď (po několika pokusech) Terminál a tmux podporuje 256 barev a tput colors říkám, že jich je jen 8.

Pozadí

Začněme od začátku.

Používám Ubuntu box, Guake , tmux , Vim a líbí se mi téma Solarized . Vypadaly dost příšerně, tak jsem se rozhodl povolit podporu 256 barev a trochu si pohrát.

Uvidíme, co se stane s mým Terminálem . tput colors říká, že je 8 barev. Osobně jsem je nastavil na fialovou, vlevo a samozřejmě vpravo máme 2 různé odstíny modré. $TERM říká xterm . (Chcete-li mít barevný ls eval toto v mém .bashrc .)

Vim také vypadá dobře, i když tomu říkám 256 vlajka v prostředí, kde 256 barev není podporováno.

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

Jediný, kdo si stěžuje na zmenšený barevný prostor, je tmux . Volání tmux poskytuje „špatné“ očekávané výsledky.

Ale volání tmux pomocí -2 flag zajistí, aby vše fungovalo dobře, magicky .

Teď jediné, čemu rozumím, je -2 je ekvivalentem export TERM=screen-256color (zdroj).

Guake chová se obdobně jako Terminál a oba odpoví xterm na otázku echo $TERM .

Otázka

V zásadě, chápe někdo, proč všechno funguje, i když by nemělo?

  • Jsem sadistický, když si stěžuji, proč věci fungují? Možná.
  • Existuje lepší důvod? Jistě:Chtěl bych opravit vzhled ostatních boxů Ubuntu ve své kanceláři a rád bych pochopil, proč věci fungují nebo nefungují.

Další experimenty

Spuštění tohoto skriptu (mírně upraveného) na mém xterm poskytuje následující výsledek:256 barev, ale pouze 16 je zobrazeno správně.

Poté se změnou profilu terminálu změní i těchto 16 barev.

Následují další testy.

Zleva doprava, shora dolů, máme Solarizaci barevný motiv, dircolor ansi-dark a 256dark , poté výchozí (Tango ) barevné schéma, dircolor ansi-dark a 256dark .

Pozor :teoreticky dircolor ansi-dark na Solarized barevné schéma by se mělo co nejvíce shodovat s dircolor 256dark . To se u konkrétních uvedených souborů zjevně neděje. Místo toho se to stává, když jsou v pracovním adresáři složky , textové soubory a symbolické odkazy . Závěr :při kódování 256dark nebyla věnována žádná velká pozornost barvy.

Předběžné závěry

xterm podporuje 256 barev, bez ohledu na to, jaké tput colors říká. Programy mohou odkazovat na ansi paletu (přizpůsobitelné uživatelem) nebo definovat jejich barvy, přičemž si můžete vybrat z celkem 256 barev.

Přijatá odpověď:

Některé informace o podpoře 256 barev jsou v tmux FAQ.

Související:Seznam shellů, které podporují klíčové slovo `local` pro definování lokálních proměnných?

Zjištění počtu barev, které terminál podporuje, bohužel není z historických důvodů jednoduché. Vysvětlení najdete v části Kontrola počtu barev, které můj emulátor terminálu podporuje. To znamená, že

  • tmux nemůže spolehlivě určit, zda terminál podporuje více než 8 barev;
  • tmux nemůže aplikaci spolehlivě sdělit, že podporuje více než 8 barev.

Když jste v tmux, terminál, se kterým komunikujete, je tmux. Nepodporuje všechny řídicí sekvence xtermu. Zejména nepodporuje OSC 4 ; … ovládací sekvence pro dotazování nebo nastavení hodnot barev. Musíte to použít při přímém spuštění v xterm, mimo tmux.

Pokud spustíte tmux -2 , pak tmux začne s podporou 256 barev, i když si nemyslí, že váš terminál podporuje 256 barev (což je docela běžné).

Ve výchozím nastavení se tmux inzeruje jako screen bez podpory 256 barev. Hodnotu TERM můžete změnit v .tmux.conf pro označení podpory 256 barev:

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

Můžete použít TERM=xterm-256color nebo TERM=screen-256color na Ubuntu. Tyto hodnoty způsobí potíže pouze v případě, že se přihlásíte ke vzdálenému počítači, který pro tato jména nemá položku termcap/terminfo. Záznamy můžete zkopírovat do svého domovského adresáře na vzdáleném počítači; to funguje s nejmodernějšími implementacemi 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. Sdílení relací terminálu Linux pomocí Tmux a obrazovky

  2. Získání 256 barev pro práci v Tmux?

  3. Jak najít platné hodnoty pro termín k použití v Tmux?

  1. Medleytext – Intuitivní a stylová aplikace pro psaní poznámek pro programátory

  2. tmux:zamrzne a nenačte se a nereaguje na žádný příkaz volby

  3. Šifrování SandForce SSD – zabezpečení a podpora

  1. RedHat a SUSE oznámily zrušení podpory pro OpenLDAP

  2. Jak zkompilovat a nainstalovat Python s podporou OpenSSL?

  3. grep pro termín a vyloučit jiný termín