Terminal emülatörümün kaç rengi desteklediğini kontrol etme


Yanıtlar:


20

Değeri, $TERMdesteklenen renklerin sayısı hakkında fazla bilgi vermez. Birçok terminal kendilerini ilan eder xtermve herhangi bir sayıda rengi destekleyebilir (2, 8, 16, 88 ve 256 ortak değerlerdir).

Her rengin değerini OSC 4 ; c ; ? BEL kontrol sırası ile sorgulayabilirsiniz . Renk numarası cdestekleniyorsa ve terminal bu kontrol sırasını anlıyorsa, terminal rengin değeri ile geri cevap verecektir. Renk numarası desteklenmiyorsa veya terminal bu kontrol sırasını anlamazsa, terminal hiçbir şeyi yanıtlamaz. Burada, renk 42'nin desteklenip desteklenmediğini sorgulamak için bir bash / zsh snippet'i var (gerekirse terminale / gerekirse yönlendirme):

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

Popüler terminaller arasında, VTE kütüphanesine dayanan xterm ve terminaller (Gnome-terminal, Terminator, Xfce4-terminal,…) bu kontrol sırasını destekler; rxvt, konsole, screen ve tmux yapmayın.

Daha doğrudan bir yol bilmiyorum.


@ Gilles'e teşekkürler. Bu harika görünüyor. Ne olduğunu sorabilir miyim read -d $'\a' -s -t 1?
Amelio Vazquez-Reina

1
@intrpc Girdiyi \ayankı olmadan, 1 saniyelik zaman aşımı ile ilk (bell karakter) 'e kadar oku .
Gilles 'SO- kötülük' dur

5
@ l0b0 tput colorsterminfo veritabanını sorgular. Şansın var TERM=xterm. Xterm, sürüme ve derleme ve çalışma zamanı seçeneklerine bağlı olarak en az 2, 8, 16, 88 veya 256 rengi destekleyebilir, ancak terminfo veritabanı yalnızca bir değeri saklayabilir. Örneğin ayarlayabilirsiniz TERM=xterm+256color, ancak termcap / terminfo veritabanında bu girişi olmayan bir makineye giriş yaptığınızda sinirleneceksiniz.
Gilles 'SO- kötülük' kas

2
@ l0b0 Borunun açıkça terminalle ilgisi yok. Terminale ( printf … >/dev/tty) yazdırmanız ve ardından terminalden ( ) okumanız gerekir read … </dev/tty. Xterm, OSC 4; …; ? BELtuş vuruşlarını enjekte ederek diziye yanıt verir .
Gilles 'SO- kötü olmayı'



9

Kullanabilirsiniz

$ tput colors

Debian kurulumumda tput, ncurses-binvarsayılan olarak yüklenen paketin bir parçası .


6
Bu, terminalinizin çevreye ne kadar renk verdiğini bildiriyorTERM , gerçekte ne kadar renk uygun bir destek verdiğini desteklemiyorTERM
MestreLion
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.