Urxvt: muda a cor de fundo na hora

8

Há espaço para mudar a cor de fundo de uma sessão rxvt-unicode em tempo real? Como com a tecla Ctrl ?

Eu tenho um monte de janelas do Urxvt e gostaria de colorir algumas dinamicamente para me ajudar a diferenciá-las. Mas, novamente, quero dizer na hora ...

    
por dman 29.09.2015 / 17:58

5 respostas

13

urxvt 2.6 em 2004 adicionou suporte ao recurso cores dinâmicas do xterm. Em Sequências de Controle do XTerm , isso é OSC 11. OSC 10 define a cor do texto padrão. O changelog mencionou parte da mudança:

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

mas o código-fonte conta a história, como de costume:

 /*
  * 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 
  */

O manual rxvt(7) não fornece informações úteis:

   XTerm Operating System Commands
       "ESC ] Ps;Pt ST"
           Set XTerm Parameters. 8-bit ST: 0x9c, 7-bit ST sequence: ESC \
           (0x1b, 0x5c), backwards compatible terminator BEL (0x07) is also
           accepted. any octet can be escaped by prefixing it with SYN (0x16,
           ^V).

Este exemplo simples define as cores de primeiro plano (texto) e de fundo padrão :

#!/bin/sh
printf '3]10;red
/* 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);
}
7' printf '3]11;green
commit f39e281529827f68fd0e9bba41785d66a21efc1c
Author: Nalin Dahyabhai <[email protected]>
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).
7'

Como xterm , essas cores padrão podem ser substituídas temporariamente por cores "ANSI".

O recurso pode ser desativado em xterm usando o recurso dynamicColors . Ao contrário de xterm , urxvt não tem configuração de recursos para o recurso.

O VTE também implementa o recurso e também não o documenta. urxvt pelo menos iniciado com documentação de rxvt . Para VTE, você precisa ler o código fonte. O recurso relevante em vteseq.cc é assim:

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

Esse código remonta a algum tempo em 2003 (quando foi escrito em C):

 /*
  * 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 
  */

Leitura adicional:

por 13.07.2016 / 02:58
5

Eu adicionei o seguinte ao meu arquivo ~/.Xresources para alterar as cores rapidamente pressionando Ctrl e 7 ou 8 ou 9 .

! change to red background
URxvt.keysym.C-7: command:3]11;#ff0000
! change to red background
URxvt.keysym.C-7: command:3]11;#ff0000
echo -e '3]11;#ff0000
! change to red background
URxvt.keysym.C-7: command:3]11;#ff0000
! change to red background
URxvt.keysym.C-7: command:3]11;#ff0000
echo -e '3]11;#ff0000%pre%73]10;yellow%pre%7'   # changes to red background and yellow foreground
73]10;yellow%pre%7
7 ! change to light background URxvt.keysym.C-8: command:3]11;#ffffff%pre%7 ! change to dark gray background URxvt.keysym.C-9: command:3]11;#777777%pre%7
73]10;yellow%pre%7' # changes to red background and yellow foreground
73]10;yellow%pre%7
7 ! change to light background URxvt.keysym.C-8: command:3]11;#ffffff%pre%7 ! change to dark gray background URxvt.keysym.C-9: command:3]11;#777777%pre%7

Se você deseja definir a cor de primeiro e segundo plano ao mesmo tempo, basta concatenar os comandos (algumas cores são definidas por nomes):

%pre%

Você pode testar suas cores com um simples comando echo , como este:

%pre%

Atenção

Eu usei o código 11 para cor de fundo cor e código 10 para cor de primeiro plano . As definições para Urxvt citadas por Thomas Dickey indicam para usar 49 e 39 em seu lugar (o que Eu testei e também trabalho).

    
por 29.11.2016 / 17:23
2

Dynamic Colors é um exemplo de mudança dinâmica de cores. Começa com o uso desses dois .Xresources:

xterm*dynamicColors: true urxvt*dynamicColors: on

Apesar da liderança, ainda não consegui mudar a cor trabalhando com urxvt! Essa técnica funciona muito bem com o xterm. Cores dinâmicas chama essas "seqüências de escape OSC" que alteram o terminal, o exemplo para tornar o plano de fundo vermelho é: echo -e "echo -e "3]11;#ff0000%code%7"3]11;#ff0000%code%7"

    
por 10.11.2015 / 16:25
2

Eu tenho o seguinte em meus Xresources para troca rápida (sim, é baseado em cores dinâmicas).

URxvt*keysym.Control-Shift-F10: command:3]11;#2c2c2c
URxvt*keysym.Control-Shift-F10: command:3]11;#2c2c2c%pre%73]10;#dcdcdc%pre%73]12;#dcdcdc%pre%73]4;0;#3f3f3f%pre%73]4;1;#705050%pre%73]4;2;#60b48a%pre%73]4;3;#dfaf8f%pre%73]4;4;#9ab8d7%pre%73]4;5;#dc8cc3%pre%73]4;6;#8cd0d3%pre%73]4;7;#dcdcdc%pre%73]4;8;#709080%pre%73]4;9;#dca3a3%pre%73]4;10;#72d5a3%pre%73]4;11;#f0dfaf%pre%73]4;12;#94bff3%pre%73]4;13;#ec93d3%pre%73]4;14;#93e0e3%pre%73]4;15;#ffffff%pre%7
URxvt*keysym.Control-Shift-F11: command:3]11;#000000%pre%73]10;#ffffff%pre%73]12;#ffffff%pre%73]4;0;#000000%pre%73]4;1;#cc0000%pre%73]4;2;#4e9a06%pre%73]4;3;#c4a000%pre%73]4;4;#3465a4%pre%73]4;5;#75507b%pre%73]4;6;#06989a%pre%73]4;7;#d3d7cf%pre%73]4;8;#555753%pre%73]4;9;#ef2929%pre%73]4;10;#8ae234%pre%73]4;11;#fce94f%pre%73]4;12;#729fcf%pre%73]4;13;#ad7fa8%pre%73]4;14;#34e2e2%pre%73]4;15;#eeeeec%pre%7
URxvt*keysym.Control-Shift-F12: command:3]11;#000000%pre%73]10;#a9a9a9%pre%73]12;#a9a9a9%pre%73]4;0;#000000%pre%73]4;1;#cc0000%pre%73]4;2;#00cc00%pre%73]4;3;#cccc00%pre%73]4;4;#0000cc%pre%73]4;5;#cc00cc%pre%73]4;6;#00cccc%pre%73]4;7;#cccccc%pre%73]4;8;#555555%pre%73]4;9;#ff0000%pre%73]4;10;#00ff00%pre%73]4;11;#ffff00%pre%73]4;12;#0000ff%pre%73]4;13;#ff00ff%pre%73]4;14;#00ffff%pre%73]4;15;#ffffff%pre%7
73]10;#dcdcdc%pre%73]12;#dcdcdc%pre%73]4;0;#3f3f3f%pre%73]4;1;#705050%pre%73]4;2;#60b48a%pre%73]4;3;#dfaf8f%pre%73]4;4;#9ab8d7%pre%73]4;5;#dc8cc3%pre%73]4;6;#8cd0d3%pre%73]4;7;#dcdcdc%pre%73]4;8;#709080%pre%73]4;9;#dca3a3%pre%73]4;10;#72d5a3%pre%73]4;11;#f0dfaf%pre%73]4;12;#94bff3%pre%73]4;13;#ec93d3%pre%73]4;14;#93e0e3%pre%73]4;15;#ffffff%pre%7 URxvt*keysym.Control-Shift-F11: command:3]11;#000000%pre%73]10;#ffffff%pre%73]12;#ffffff%pre%73]4;0;#000000%pre%73]4;1;#cc0000%pre%73]4;2;#4e9a06%pre%73]4;3;#c4a000%pre%73]4;4;#3465a4%pre%73]4;5;#75507b%pre%73]4;6;#06989a%pre%73]4;7;#d3d7cf%pre%73]4;8;#555753%pre%73]4;9;#ef2929%pre%73]4;10;#8ae234%pre%73]4;11;#fce94f%pre%73]4;12;#729fcf%pre%73]4;13;#ad7fa8%pre%73]4;14;#34e2e2%pre%73]4;15;#eeeeec%pre%7 URxvt*keysym.Control-Shift-F12: command:3]11;#000000%pre%73]10;#a9a9a9%pre%73]12;#a9a9a9%pre%73]4;0;#000000%pre%73]4;1;#cc0000%pre%73]4;2;#00cc00%pre%73]4;3;#cccc00%pre%73]4;4;#0000cc%pre%73]4;5;#cc00cc%pre%73]4;6;#00cccc%pre%73]4;7;#cccccc%pre%73]4;8;#555555%pre%73]4;9;#ff0000%pre%73]4;10;#00ff00%pre%73]4;11;#ffff00%pre%73]4;12;#0000ff%pre%73]4;13;#ff00ff%pre%73]4;14;#00ffff%pre%73]4;15;#ffffff%pre%7

Você também pode procurar outra abordagem aqui: link

    
por 21.11.2018 / 19:59
0

Eu escrevi uma extensão chamada urxvt-theme que adiciona essa funcionalidade ao rxvt-unicode (com um menu de contexto simples) usando recursos X e cores dinâmicas.

    
por 18.02.2019 / 02:34

Tags