답변:
urxvt
2004 년 2.6 개에는 xterm의 동적 색상 기능에 대한 지원이 추가되었습니다 . 에서 XTERM 제어 시퀀스 이는 OSC
(11) OSC
10 세트 기본 텍스트 색상. 변경 로그는 변경 중 일부를 언급했습니다.
2.6 Fri Apr 2 03:24:10 CEST 2004
- minor doc corrections.
- WARNING: changed menu sequence from ESC ] 10 to ESC ] 703 to
avoid clashes with xterm.
- changed OSC701/OSC702 sequence to return standard escaped reports.
- xterm-compat: make set window colour and other requests report
window colour when arg is "?".
그러나 소스 코드는 평소와 같이 이야기를 알려줍니다.
/*
* XTerm escape sequences: ESC ] Ps;Pt (ST|BEL)
* 0 = change iconName/title
* 1 = change iconName
* 2 = change title
* 4 = change color
+ * 10 = change fg color
+ * 11 = change bg color
* 12 = change text color
* 13 = change mouse foreground color
* 17 = change highlight character colour
@@ -2949,20 +3236,21 @@
* 50 = change font
*
* rxvt extensions:
- * 10 = menu (may change in future)
* 20 = bg pixmap
* 39 = change default fg color
* 49 = change default bg color
* 55 = dump scrollback buffer and all of screen
* 701 = change locale
* 702 = find font
+ * 703 = menu
*/
이 설명서 rxvt(7)
에는 유용한 정보가 없습니다.
XTerm 운영 체제 명령 "ESC] Ps; Pt ST" XTerm 매개 변수를 설정하십시오. 8 비트 ST : 0x9c, 7 비트 ST 시퀀스 : ESC \ (0x1b, 0x5c), 하위 호환 터미네이터 BEL (0x07)도 받아 들였다. 접두사 SYN (0x16, ^ V).
이 간단한 예제는 전경색 (텍스트)과 배경색을 모두 설정 합니다.
#!/bin/sh
printf '\033]10;red\007'
printf '\033]11;green\007'
마찬가지로 xterm
, 이러한 기본 색상은 "ANSI"색상에 의해 일시적으로 재정의 할 수 있습니다.
리소스 를 xterm
사용하여 기능을 비활성화 할 수 있습니다 dynamicColors
. 와 달리 xterm
, urxvt
기능에 대한 리소스 설정이 없습니다.
또한 VTE는이 기능을 구현하며 문서화하지 않습니다. urxvt
적어도의 문서로 시작했습니다rxvt
. VTE의 경우 소스 코드를 읽어야합니다. 관련 기능은 vteseq.cc
다음과 같습니다.
/* Change the default background cursor, BEL terminated */
static void
vte_sequence_handler_change_background_color_bel (VteTerminalPrivate *that, GValueArray *params)
{
vte_sequence_handler_change_special_color_internal (that, params,
VTE_DEFAULT_BG, -1, 11, BEL);
}
/* Change the default background cursor, ST terminated */
static void
vte_sequence_handler_change_background_color_st (VteTerminalPrivate *that, GValueArray *params)
{
vte_sequence_handler_change_special_color_internal (that, params,
VTE_DEFAULT_BG, -1, 11, ST);
}
이 코드는 2003 년 어느 시점으로 거슬러 올라갑니다 (C로 작성된 시점).
commit f39e281529827f68fd0e9bba41785d66a21efc1c
Author: Nalin Dahyabhai <nalin@src.gnome.org>
Date: Wed Jan 22 21:35:22 2003 +0000
accept OSC{number};{string}ST as set-text-parameters, per XTerm docs (part
* src/caps.c: accept OSC{number};{string}ST as set-text-parameters, per XTerm
docs (part of #104154).
* src/keymap.c: revert change to prepend "1;" to keys with modifiers (#104139).
더 읽을 거리 :
나는 나의에 다음을 추가 ~/.Xresources
누르면 즉석에서 색상 변화에 대한 파일 Ctrl및 7또는 8나 9.
! change to red background
URxvt.keysym.C-7: command:\033]11;#ff0000\007
! change to light background
URxvt.keysym.C-8: command:\033]11;#ffffff\007
! change to dark gray background
URxvt.keysym.C-9: command:\033]11;#777777\007
전경색과 배경색을 동시에 설정하려면 명령을 연결하십시오 (일부 색상은 이름으로 정의 됨).
! change to red background
URxvt.keysym.C-7: command:\033]11;#ff0000\007\033]10;yellow\007
다음과 같은 간단한 echo
명령으로 색상을 테스트 할 수 있습니다 .
echo -e '\033]11;#ff0000\007\033]10;yellow\007' # changes to red background and yellow foreground
배경색으로 코드 11을 , 전경색으로 코드 10을 사용했습니다 . Thomas Dickey가 인용 한 Urxvt에 대한 정의는 49와 39를 대신 사용한다는 것을 나타냅니다 .
동적 색상은 색상을 동적으로 전환하는 예입니다. 다음 두 .Xresources를 사용하여 시작합니다.
xterm*dynamicColors: true
urxvt*dynamicColors: on
리드에도 불구하고 urxvt를 사용하여 색상을 변경하지 못했습니다! 이 기술은 xterm과 잘 작동합니다. Dynamic Colors는 터미널을 변경하는 이러한 "OSC 이스케이프 시퀀스"를 호출합니다. 배경을 빨간색으로 만드는 예는 다음과 같습니다.echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"
echo -e "\033]11;#ff0000\007"
빠른 전환을 위해 Xresources에 다음이 있습니다 (예, 동적 색상을 기반으로 함).
URxvt*keysym.Control-Shift-F10: command:\033]11;#2c2c2c\007\033]10;#dcdcdc\007\033]12;#dcdcdc\007\033]4;0;#3f3f3f\007\033]4;1;#705050\007\033]4;2;#60b48a\007\033]4;3;#dfaf8f\007\033]4;4;#9ab8d7\007\033]4;5;#dc8cc3\007\033]4;6;#8cd0d3\007\033]4;7;#dcdcdc\007\033]4;8;#709080\007\033]4;9;#dca3a3\007\033]4;10;#72d5a3\007\033]4;11;#f0dfaf\007\033]4;12;#94bff3\007\033]4;13;#ec93d3\007\033]4;14;#93e0e3\007\033]4;15;#ffffff\007
URxvt*keysym.Control-Shift-F11: command:\033]11;#000000\007\033]10;#ffffff\007\033]12;#ffffff\007\033]4;0;#000000\007\033]4;1;#cc0000\007\033]4;2;#4e9a06\007\033]4;3;#c4a000\007\033]4;4;#3465a4\007\033]4;5;#75507b\007\033]4;6;#06989a\007\033]4;7;#d3d7cf\007\033]4;8;#555753\007\033]4;9;#ef2929\007\033]4;10;#8ae234\007\033]4;11;#fce94f\007\033]4;12;#729fcf\007\033]4;13;#ad7fa8\007\033]4;14;#34e2e2\007\033]4;15;#eeeeec\007
URxvt*keysym.Control-Shift-F12: command:\033]11;#000000\007\033]10;#a9a9a9\007\033]12;#a9a9a9\007\033]4;0;#000000\007\033]4;1;#cc0000\007\033]4;2;#00cc00\007\033]4;3;#cccc00\007\033]4;4;#0000cc\007\033]4;5;#cc00cc\007\033]4;6;#00cccc\007\033]4;7;#cccccc\007\033]4;8;#555555\007\033]4;9;#ff0000\007\033]4;10;#00ff00\007\033]4;11;#ffff00\007\033]4;12;#0000ff\007\033]4;13;#ff00ff\007\033]4;14;#00ffff\007\033]4;15;#ffffff\007
https://github.com/sos4nt/dynamic-colors 에서 다른 접근법을 살펴볼 수도 있습니다.
X 리소스와 동적 색상을 사용하여 rxvt-unicode (간단한 컨텍스트 메뉴 사용) 에이 기능을 추가하는 urxvt-theme 이라는 확장을 작성했습니다 .