Kiểm tra trình giả lập thiết bị đầu cuối của tôi hỗ trợ bao nhiêu màu


21

Có cách nào đáng tin cậy để kiểm tra trình giả lập thiết bị đầu cuối của tôi hỗ trợ bao nhiêu màu không?

Nếu echo $TERMbản in xterm, không có rõ ràng cho tôi biết bao nhiêu màu sắc mô phỏng thiết bị hỗ trợ không? Làm thế nào tôi có thể kiểm tra thông tin này đáng tin cậy?


Câu trả lời:


20

Giá trị của $TERMkhông cung cấp nhiều thông tin về số lượng màu được hỗ trợ. Nhiều thiết bị đầu cuối tự quảng cáo là xtermvà có thể hỗ trợ bất kỳ số lượng màu nào (2, 8, 16, 88 và 256 là các giá trị phổ biến).

Bạn có thể truy vấn giá trị của từng màu với OSC 4 ; c ; ? BEL trình tự điều khiển . Nếu số màu cđược hỗ trợ và nếu thiết bị đầu cuối hiểu trình tự điều khiển này, thiết bị đầu cuối sẽ trả lời lại với giá trị của màu. Nếu số màu không được hỗ trợ hoặc nếu thiết bị đầu cuối không hiểu trình tự điều khiển này, thiết bị đầu cuối không trả lời gì. Đây là một đoạn bash / zsh để truy vấn xem màu 42 có được hỗ trợ hay không (chuyển hướng đến / từ thiết bị đầu cuối nếu cần):

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

Trong số các thiết bị đầu cuối phổ biến, xterm và thiết bị đầu cuối dựa trên thư viện VTE (Gnome-terminal, Terminator, Xfce4-terminal, cám) hỗ trợ trình tự điều khiển này; rxvt, konsole, màn hình và tmux không.

Tôi không biết một cách trực tiếp hơn.


Cảm ơn @Gilles. Điều này có vẻ tuyệt vời. Cho tôi hỏi cái gì read -d $'\a' -s -t 1?
Amelio Vazquez-Reina

1
@intrpc Đọc đầu vào cho đến đầu tiên \a(ký tự chuông), không lặp lại đầu vào, với thời gian chờ là 1 giây.
Gilles 'SO- ngừng trở nên xấu xa'

5
@ l0b0 tput colorstruy vấn cơ sở dữ liệu terminfo. Rất có thể là bạn có TERM=xterm. Xterm có thể hỗ trợ ít nhất 2, 8, 16, 88 hoặc 256 màu tùy thuộc vào phiên bản và tùy chọn biên dịch và thời gian chạy, nhưng cơ sở dữ liệu terminfo chỉ có thể lưu trữ một giá trị. Bạn có thể đặt ví dụ: TERM=xterm+256colornhưng sau đó bạn sẽ thấy khó chịu khi đăng nhập vào máy không có mục này trong cơ sở dữ liệu termcap / terminfo của nó.
Gilles 'SO- ngừng trở nên xấu xa'

2
@ l0b0 Đường ống của bạn rõ ràng không liên quan gì đến thiết bị đầu cuối. Bạn cần in ra terminal ( printf … >/dev/tty) và sau đó đọc từ terminal ( read … </dev/tty). Xterm đáp ứng OSC 4; …; ? BELtrình tự bằng cách tiêm tổ hợp phím.
Gilles 'SO- ngừng trở nên xấu xa'



9

Bạn có thể dùng

$ tput colors

Trên debput cài đặt debian của tôi là một phần của ncurses-bingói được cài đặt theo mặc định.


6
Điều đó sẽ chỉ thông báo có bao nhiêu màu mà thiết bị đầu cuối của bạn báo cáo với môi trường thông qua TERM, chứ không phải có bao nhiêu màu mà nó thực sự có thể hỗ trợ được cung cấp phù hợpTERM
MestreLion
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.