Anında rxvt-unicode oturumunun arka plan rengini değiştirmek için uzak var mı? Olduğu gibi Ctrlanahtarın?
Bir grup Urxvt pencerem var ve onları ayırt etmeme yardımcı olmak için dinamik olarak renklendirmek istiyorum. Ama yine, yani anında ...
Anında rxvt-unicode oturumunun arka plan rengini değiştirmek için uzak var mı? Olduğu gibi Ctrlanahtarın?
Bir grup Urxvt pencerem var ve onları ayırt etmeme yardımcı olmak için dinamik olarak renklendirmek istiyorum. Ama yine, yani anında ...
Yanıtlar:
urxvt
2004 yılında 2.6 xterm'in dinamik renkler özelliği için destek ekledi . In XTerm Kontrol Diziler , bu OSC
11. OSC
10 setleri varsayılan metin rengi. Değişiklik, değişikliğin bir kısmından bahsetti:
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 "?".
ancak kaynak kodu hikayeyi her zamanki gibi anlatıyor:
/*
* 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
*/
Kılavuz rxvt(7)
faydalı bilgiler vermemektedir:
XTerm İşletim Sistemi Komutları "ESC] Ps; Pt ST" XTerm Parametrelerini Ayarlayın. 8 bit ST: 0x9c, 7 bit ST dizisi: ESC \ (0x1b, 0x5c), geriye dönük uyumlu sonlandırıcı BEL (0x07) da kabul edilmiş. herhangi bir sekizliden önce SYN (0x16, ^ V).
Bu basit örnek, hem ön plan (metin) hem de arka plan varsayılan renklerini ayarlar :
#!/bin/sh
printf '\033]10;red\007'
printf '\033]11;green\007'
Mesela xterm
, bu varsayılan renkler "ANSI" renkleri tarafından geçici olarak geçersiz kılınabilir.
Özellik xterm
, dynamicColors
kaynak kullanılırken devre dışı bırakılabilir . Bunun aksine xterm
, urxvt
özellik için kaynak ayarı yoktur.
VTE ayrıca özelliği uygular ve aynı şekilde bunu belgelemez. urxvt
en azından adlı dokümanla başladırxvt
. VTE için kaynak kodunu okumalısınız. İlgili özellik vteseq.cc
şuna benzer:
/* 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);
}
Bu kod 2003'te (C ile yazıldığı zaman) uzanır:
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).
Daha fazla okuma:
Benim için aşağıdaki eklendi ~/.Xresources
basarak anında renklerine değişikliğine dosyası Ctrlve 7ya 8ya 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
Ön plan ve arka plan rengini aynı anda ayarlamak istiyorsanız, sadece komutları birleştirin (bazı renkler adlarla tanımlanır):
! change to red background
URxvt.keysym.C-7: command:\033]11;#ff0000\007\033]10;yellow\007
Renklerinizi aşağıdaki echo
gibi basit bir komutla test edebilirsiniz :
echo -e '\033]11;#ff0000\007\033]10;yellow\007' # changes to red background and yellow foreground
Arka plan rengi için kod 11'i ve ön plan rengi için kod 10'u kullandım . Urxvt tarafından atıf için tanımlamalar Thomas Dickey kullanmak belirtmek 49 ve 39 (I eser de test edilmiş ve olan) yerine.
Dinamik Renkler, dinamik olarak değişen renklere bir örnektir. Bu iki .Xresources kullanarak başlar:
xterm*dynamicColors: true
urxvt*dynamicColors: on
Kurşuna rağmen, urxvt ile çalışırken renk değiştirmedim! Bu teknik xterm ile harika çalışıyor. Dinamik Renkler, terminali değiştiren bu "OSC kaçış dizileri" olarak adlandırır, arka planı kırmızı yapmak için örnek:echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"
echo -e "\033]11;#ff0000\007"
Hızlı geçiş için Xresources'imde aşağıdakiler var (evet, dinamik renklere dayanıyor).
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
Burada başka bir yaklaşıma da bakabilirsiniz: https://github.com/sos4nt/dynamic-colors
X kaynakları ve dinamik renkler kullanarak rxvt-unicode (basit bir bağlam menüsü ile) bu işlevselliği ekleyen urxvt-theme adlı bir uzantı yazdım .