Urxvt: thay đổi màu nền khi đang bay


12

Có cách nào để thay đổi màu nền của phiên rxvt-unicode khi đang bay không? Thích với Ctrlchìa khóa?

Tôi có một loạt các cửa sổ Urxvt và tôi muốn tô màu một cách linh hoạt để giúp tôi phân biệt chúng. Nhưng một lần nữa, ý tôi là trên đường bay ...


1
Không. Bạn có thể với Mối , mặc dù ...
jasonwryan

Câu trả lời:


16

urxvt2.6 vào năm 2004 đã thêm hỗ trợ cho tính năng màu động của xterm . Trong Trình tự điều khiển XTerm , đây là OSC11. OSC10 đặt màu văn bản mặc định. Thay đổi được đề cập đến một phần của sự thay đổi:

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

nhưng mã nguồn kể câu chuyện, như thường lệ:

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

Hướng dẫn rxvt(7)không cung cấp thông tin hữu ích:

   Các lệnh hệ điều hành của XTerm
       "ESC] Ps; Pt ST"
           Đặt tham số XTerm. ST 8 bit: 0x9c, chuỗi ST 7 bit: ESC \
           (0x1b, 0x5c), bộ kết thúc tương thích ngược BEL (0x07) cũng
           Đã được chấp nhận. bất kỳ octet nào cũng có thể được thoát bằng cách thêm tiền tố vào nó bằng SYN (0x16,
           ^ V).

Ví dụ đơn giản này đặt cả tiền cảnh (văn bản) và nền mặc định màu sắc:

#!/bin/sh
printf '\033]10;red\007'
printf '\033]11;green\007'

Giống như xterm, những màu mặc định này có thể bị ghi đè tạm thời bằng màu "ANSI".

Tính năng này có thể bị vô hiệu hóa trong xtermviệc sử dụng dynamicColorstài nguyên. Không giống như xterm, urxvtkhông có cài đặt tài nguyên cho tính năng.

VTE cũng thực hiện tính năng này và tương tự như vậy không ghi lại nó. urxvtít nhất là bắt đầu với tài liệu từ rxvt. Đối với VTE, bạn phải đọc mã nguồn. Các tính năng có liên quan trong vteseq.cchình như thế này:

/* 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);
}

Mã đó bắt đầu từ khoảng năm 2003 (khi nó được viết bằng 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).

Đọc thêm:


Tôi đã không thử điều này nhưng điều này rất ấn tượng và khó tìm Tôi sẽ làm cho nó được chấp nhận! Tôi hy vọng nó hoạt động trong URXVT.
dman

1
Tôi đã thử nghiệm nó đêm qua với urxvt 9.15 trên Debian 7 của tôi (để chắc chắn rằng tôi đã đọc đúng nguồn).
Thomas Dickey

Tôi chỉ muốn theo dõi về điều này và nói rằng nó hoạt động như một giấc mơ. Cảm ơn một lần nữa vì thông tin này sẽ khó tìm.
dman

7

Tôi thêm vào phần sau đây để tôi ~/.Xresourcestập tin để thay đổi màu sắc một cách nhanh chóng nhấn Ctrl7hay 8hay 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ếu bạn muốn đặt màu nền trước và màu nền cùng một lúc, chỉ cần ghép các lệnh (một số màu được xác định theo tên):

! change to red background
URxvt.keysym.C-7: command:\033]11;#ff0000\007\033]10;yellow\007

Bạn có thể kiểm tra màu sắc của mình bằng một echolệnh đơn giản , như lệnh này:

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

Chú ý

Tôi đã sử dụng mã 11 cho màu nền và mã 10 cho màu nền trước . Các định nghĩa cho Urxvt được trích dẫn bởi Thomas Dickey chỉ ra rằng sử dụng 49 và 39 thay vào đó (mà tôi đã thử nghiệm và cũng hoạt động).


2

Màu sắc động là một ví dụ về màu sắc chuyển động. Nó bắt đầu bằng việc sử dụng hai .Xresource này:

xterm*dynamicColors: true urxvt*dynamicColors: on

Mặc dù dẫn đầu, tôi đã không thay đổi màu sắc làm việc với urxvt! Kỹ thuật này hoạt động tuyệt vời với xterm. Màu sắc động gọi đây là "chuỗi thoát OSC" làm thay đổi thiết bị đầu cuối, ví dụ để làm nền đỏ là:echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"


Đối với tôi màu nền thay đổi thành màu đỏ nếu tôi đặt nó trong dòng lệnh:echo -e "\033]11;#ff0000\007"
erik

2

Tôi có các mục sau trong Xresource của mình để chuyển đổi nhanh (vâng, nó dựa trên màu sắc động).

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

Bạn cũng có thể xem một cách tiếp cận khác tại đây: https://github.com/sos4nt/dynamic-colors


1

Tôi đã viết một phần mở rộng được gọi là urxvt-theme có thêm chức năng này cho rxvt-unicode (với menu ngữ cảnh đơn giản) sử dụng tài nguyên X và màu sắc động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.