urxvt2.6 w 2004 r. Dodano obsługę funkcji dynamicznych kolorów xterm . W XTerm Control Sequences jest to OSC11. OSC10 ustawia domyślny kolor tekstu. Dziennik zmian wspomniał o części zmiany:
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 "?".
ale kod źródłowy opowiada historię, jak zwykle:
/*
* 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
*/
Podręcznik rxvt(7)nie zawiera użytecznych informacji:
Polecenia systemu operacyjnego XTerm
„ESC] Ps; Pt ST”
Ustaw parametry XTerm. 8-bitowy ST: 0x9c, 7-bitowa sekwencja ST: ESC \
(0x1b, 0x5c), również zgodny z poprzednimi terminator BEL (0x07)
przyjęty. dowolnego oktetu można uniknąć, poprzedzając go SYN (0x16,
^ V).
Ten prosty przykład ustawia domyślne kolory pierwszego planu (tekstu) i tła :
Podobnie xterm, te domyślne kolory można tymczasowo zastąpić kolorami „ANSI”.
Funkcję tę można wyłączyć podczas xtermkorzystania z dynamicColorszasobu. W przeciwieństwie xterm, urxvtnie ma z zasobów ustawienie dla funkcji.
VTE również implementuje tę funkcję i również jej nie dokumentuje. urxvtprzynajmniej zaczął od dokumentacji z rxvt. W przypadku VTE musisz przeczytać kod źródłowy. Odpowiednia funkcja vteseq.ccwygląda następująco:
Nie próbowałem tego, ale jest to tak imponujące i trudne do znalezienia, że sprawię, że zostanie zaakceptowane! Mam nadzieję, że to zadziała w URXVT.
dman
1
Testowałem go ostatniej nocy z pakietem urxvt 9.15 na moim Debianie 7 (aby mieć pewność, że poprawnie czytałem źródło).
Thomas Dickey,
Chciałem tylko kontynuować i powiedzieć, że to działa jak sen. Jeszcze raz dziękuję, ponieważ trudno byłoby znaleźć te informacje.
dman
7
Dodałem następujące elementy do mojego ~/.Xresourcespliku, aby zmienić kolory na bieżąco, naciskając Ctrli 7lub 8lub 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
Jeśli chcesz ustawić kolor pierwszego planu i tła w tym samym czasie, po prostu połącz polecenia (niektóre kolory są zdefiniowane przez nazwy):
! change to red background
URxvt.keysym.C-7: command:\033]11;#ff0000\007\033]10;yellow\007
Możesz przetestować swoje kolory za pomocą prostego echopolecenia, takiego jak ten:
echo -e '\033]11;#ff0000\007\033]10;yellow\007' # changes to red background and yellow foreground
Uwaga
Użyłem kodu 11 dla koloru tła i kodu 10 dla koloru pierwszego planu . Definicje Urxvt cytowane przez Thomasa Dickeya wskazują na użycie zamiast nich 49 i 39 (które przetestowałem, a także działam ).
Mimo ołowiu nie zmieniłem kolorów podczas pracy z urxvt! Ta technika działa świetnie z Xterm. Dynamiczne kolory nazywają te „sekwencje specjalne OSC”, które zmieniają terminal. Przykładem czerwonego tła jest:echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"
Napisałem rozszerzenie o nazwie urxvt-theme, które dodaje tę funkcjonalność do rxvt-unicode (z prostym menu kontekstowym) przy użyciu zasobów X i dynamicznych kolorów.
Odpowiedzi:
urxvt
2.6 w 2004 r. Dodano obsługę funkcji dynamicznych kolorów xterm . W XTerm Control Sequences jest toOSC
11.OSC
10 ustawia domyślny kolor tekstu. Dziennik zmian wspomniał o części zmiany:ale kod źródłowy opowiada historię, jak zwykle:
Podręcznik
rxvt(7)
nie zawiera użytecznych informacji:Ten prosty przykład ustawia domyślne kolory pierwszego planu (tekstu) i tła :
Podobnie
xterm
, te domyślne kolory można tymczasowo zastąpić kolorami „ANSI”.Funkcję tę można wyłączyć podczas
xterm
korzystania zdynamicColors
zasobu. W przeciwieństwiexterm
,urxvt
nie ma z zasobów ustawienie dla funkcji.VTE również implementuje tę funkcję i również jej nie dokumentuje.
urxvt
przynajmniej zaczął od dokumentacji zrxvt
. W przypadku VTE musisz przeczytać kod źródłowy. Odpowiednia funkcjavteseq.cc
wygląda następująco:Kod ten pochodzi z 2003 roku (kiedy został napisany w C):
Dalsza lektura:
źródło
Dodałem następujące elementy do mojego
~/.Xresources
pliku, aby zmienić kolory na bieżąco, naciskając Ctrli 7lub 8lub 9.Jeśli chcesz ustawić kolor pierwszego planu i tła w tym samym czasie, po prostu połącz polecenia (niektóre kolory są zdefiniowane przez nazwy):
Możesz przetestować swoje kolory za pomocą prostego
echo
polecenia, takiego jak ten:Uwaga
Użyłem kodu 11 dla koloru tła i kodu 10 dla koloru pierwszego planu . Definicje Urxvt cytowane przez Thomasa Dickeya wskazują na użycie zamiast nich 49 i 39 (które przetestowałem, a także działam ).
źródło
Kolory dynamiczne to przykład dynamicznie zmieniających się kolorów. Zaczyna się od użycia tych dwóch .Xresources:
xterm*dynamicColors: true urxvt*dynamicColors: on
Mimo ołowiu nie zmieniłem kolorów podczas pracy z urxvt! Ta technika działa świetnie z Xterm. Dynamiczne kolory nazywają te „sekwencje specjalne OSC”, które zmieniają terminal. Przykładem czerwonego tła jest:
echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"
źródło
echo -e "\033]11;#ff0000\007"
Mam w Xresources następujące informacje do szybkiego przełączania (tak, oparte na dynamicznych kolorach).
Możesz także poszukać innego podejścia tutaj: https://github.com/sos4nt/dynamic-colours
źródło
Napisałem rozszerzenie o nazwie urxvt-theme, które dodaje tę funkcjonalność do rxvt-unicode (z prostym menu kontekstowym) przy użyciu zasobów X i dynamicznych kolorów.
źródło