2010-03-24 22 views
12

(không chắc chắn nếu câu hỏi này thuộc về hoặc superuser)Có cách nào để xác định màu nền của thiết bị đầu cuối không?

Tôi muốn biết liệu có cách nào để xác định màu nền của thiết bị đầu cuối không?

Trong trường hợp của tôi, sử dụng gnome-terminal.
Nó có thể quan trọng, vì nó hoàn toàn lên đến ứng dụng đầu cuối để vẽ nền của các cửa sổ của nó, mà thậm chí có thể là một cái gì đó khác hơn là một màu đồng bằng.

Trả lời

4

Tôi đã nảy ra như sau:

#!/bin/sh 
# 
# Query a property from the terminal, e.g. background color. 
# 
# XTerm Operating System Commands 
#  "ESC ] Ps;Pt ST" 

oldstty=$(stty -g) 

# What to query? 
# 11: text background 
Ps=${1:-11} 

stty raw -echo min 0 time 0 
# stty raw -echo min 0 time 1 
printf "\033]$Ps;?\033\\" 
# xterm needs the sleep (or "time 1", but that is 1/10th second). 
sleep 0.00000001 
read -r answer 
# echo $answer | cat -A 
result=${answer#*;} 
stty $oldstty 
# Remove escape at the end. 
echo $result | sed 's/[^rgb:0-9a-f/]\+$//' 

Nguồn/Repo/Gist: https://gist.github.com/blueyed/c8470c2aad3381c33ea3

+0

Điều này dường như không hoạt động với gnome-terminal 3.6.2. – aramadia

0

Bạn có phải là phương pháp để xác định màu nền của thiết bị đầu cuối hay đặt màu thiết bị đầu cuối không?

Nếu sau này bạn có thể truy vấn biến môi trường PS1 của thiết bị đầu cuối để lấy màu.

Có một bài viết về cài đặt (và do đó phát sinh) màu sắc thiết bị đầu cuối ở đây: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/

+0

Ý tôi là để xác định màu nền. Không phải màu được sử dụng để in các ký tự (sử dụng các mã thoát), mà là chính cửa sổ. Tuy nhiên, bài viết hay :) –

1

Ngoài apparently rxvt-only $COLORFGBG, tôi không nhận thức được rằng bất cứ điều gì khác thậm chí tồn tại. Chủ yếu là mọi người dường như là referring to cách vim does it và thậm chí đó là một sự suy đoán được giáo dục tốt nhất.

11

Có một xterm control sequence cho việc này: (. \e\a là ESC và ký tự BEL, tương ứng)

\e]11;?\a 

bến

xterm-tương thích nên trả lời với cùng một chuỗi, với dấu hỏi thay thế bằng một màu X11, ví dụ rgb:0000/0000/0000 cho màu đen.

+1

Một số thông tin về cách sử dụng này sẽ là một bổ sung tuyệt vời. (Ví dụ, một đoạn shell-script in một từ trong một màu nền trước khác nhau tùy thuộc vào màu nền của vỏ?) – ELLIOTTCABLE

+0

(Ngoài ra, tôi nghi ngờ điều này sẽ chỉ có màu nền * cho văn bản *, nếu một là đóng Không phải màu nền của cửa sổ đầu cuối thực tế mà tôi nghi ngờ vẫn không thể giải quyết bên ngoài 'rxvt'.) – ELLIOTTCABLE

+0

Trong Mac 10.10.4, câu trả lời tương tự này (và @ blueyed) dường như không hoạt động trong Apple Terminal (xác định chính nó là màu xterm), nhưng hoạt động trong xterm thông thường. – TextGeek