Urxvt: arka plan rengini anında değiştirme


12

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 ...


1
Hayır. Termite ile yapabilirsiniz ...
jasonwryan

Yanıtlar:


16

urxvt2004 yılında 2.6 xterm'in dinamik renkler özelliği için destek ekledi . In XTerm Kontrol Diziler , bu OSC11. OSC10 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, dynamicColorskaynak 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. urxvten 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:


Bunu denemedim ama bu çok etkileyici ve onu bulmak zor olacak bulmak zor! Umarım URXVT'de çalışır.
dman

1
Dün gece Debian 7'de urxvt 9.15 ile test ettim (kaynağı doğru okuduğumdan emin olmak için).
Thomas Dickey

Sadece bunu takip etmek ve rüya gibi çalıştığını söylemek istedim. Bu bilgiyi bulmak zor olacağı için tekrar teşekkürler.
dman

7

Benim için aşağıdaki eklendi ~/.Xresourcesbasarak 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 echogibi basit bir komutla test edebilirsiniz :

echo -e '\033]11;#ff0000\007\033]10;yellow\007'   # changes to red background and yellow foreground

Dikkat

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.


2

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"


Benim için bunu komut satırına koyarsam, arka planın rengi kırmızıya echo -e "\033]11;#ff0000\007"
döner

2

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


1

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 .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.