Есть ли возможность изменить цвет фона сеанса rxvt-unicode на лету? Как с Ctrlключом?
У меня есть несколько окон Urxvt, и я хотел бы раскрасить некоторые из них динамически, чтобы помочь мне их различить. Но опять же, я имею в виду на лету ...
urxvtВ 2.6 в 2004 добавлена поддержка функции динамических цветов xterm . В последовательностях управления XTerm это значение равно OSC11. OSC10 устанавливает цвет текста по умолчанию. В списке изменений упоминается часть изменений:
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 "?".
но исходный код рассказывает историю, как обычно:
/*
* 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
*/
Команды операционной системы XTerm
"ESC] Ps; Pt ST"
Установите параметры XTerm. 8-битная ST: 0x9c, 7-битная последовательность ST: ESC \
(0x1b, 0x5c), обратно совместимый терминатор BEL (0x07) также
принятый. любой октет может быть экранирован префиксом SYN (0x16,
^ В).
Этот простой пример устанавливает цвета по умолчанию (текст) и фон :
Например xterm, эти цвета по умолчанию могут быть временно переопределены цветами "ANSI".
Функция может быть отключена при xtermиспользовании dynamicColorsресурса. В отличие от этого xterm, urxvtне имеет настройки ресурса для этой функции.
VTE также реализует эту функцию, а также не документирует ее. urxvtпо крайней мере, началось с документации от rxvt. Для VTE вы должны прочитать исходный код. Соответствующая функция в vteseq.ccвыглядит так:
Этот код восходит к где-то в 2003 году (когда он был написан на 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).
Я не пробовал это, но это настолько впечатляюще и трудно найти, что я его сделаю! Я надеюсь, что это работает в URXVT.
Дман
1
Я тестировал его вчера вечером с urxvt 9.15 на своем Debian 7 (чтобы убедиться, что я правильно читал исходный код).
Томас Дики
Я просто хотел продолжить и сказать, что это работает как сон. Еще раз спасибо, так как эту информацию будет трудно найти.
19
7
Я добавил следующее в мой ~/.Xresourcesфайл, чтобы изменить цвета на лету, нажимая Ctrlи 7или 8или 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
Если вы хотите установить цвет переднего плана и фона одновременно, просто объедините команды (некоторые цвета определяются именами):
! change to red background
URxvt.keysym.C-7: command:\033]11;#ff0000\007\033]10;yellow\007
Вы можете проверить свои цвета с помощью простой echoкоманды, например:
echo -e '\033]11;#ff0000\007\033]10;yellow\007' # changes to red background and yellow foreground
Внимание
Я использовал код 11 для цвета фона и код 10 для цвета переднего плана . Определения для Urxvt, приведенные Томасом Дики, указывают на использование 49 и 39 вместо этого (которые я тестировал и также работаю).
Несмотря на лидерство, я не получил изменение цвета, работая с urxvt все же! Эта техника прекрасно работает с xterm. Dynamic Colors называет эти "escape-последовательности OSC", которые изменяют терминал, например, чтобы сделать фон красным:echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"
Я написал расширение под названием urxvt-theme, которое добавляет эту функциональность в rxvt-unicode (с простым контекстным меню), используя ресурсы X и динамические цвета.
Ответы:
urxvt
В 2.6 в 2004 добавлена поддержка функции динамических цветов xterm . В последовательностях управления XTerm это значение равноOSC
11.OSC
10 устанавливает цвет текста по умолчанию. В списке изменений упоминается часть изменений:но исходный код рассказывает историю, как обычно:
Руководство не
rxvt(7)
дает полезной информации:Этот простой пример устанавливает цвета по умолчанию (текст) и фон :
Например
xterm
, эти цвета по умолчанию могут быть временно переопределены цветами "ANSI".Функция может быть отключена при
xterm
использованииdynamicColors
ресурса. В отличие от этогоxterm
,urxvt
не имеет настройки ресурса для этой функции.VTE также реализует эту функцию, а также не документирует ее.
urxvt
по крайней мере, началось с документации отrxvt
. Для VTE вы должны прочитать исходный код. Соответствующая функция вvteseq.cc
выглядит так:Этот код восходит к где-то в 2003 году (когда он был написан на C):
Дальнейшее чтение:
источник
Я добавил следующее в мой
~/.Xresources
файл, чтобы изменить цвета на лету, нажимая Ctrlи 7или 8или 9.Если вы хотите установить цвет переднего плана и фона одновременно, просто объедините команды (некоторые цвета определяются именами):
Вы можете проверить свои цвета с помощью простой
echo
команды, например:Внимание
Я использовал код 11 для цвета фона и код 10 для цвета переднего плана . Определения для Urxvt, приведенные Томасом Дики, указывают на использование 49 и 39 вместо этого (которые я тестировал и также работаю).
источник
Динамические цвета - пример динамического переключения цветов. Он начинается с использования этих двух .Xresources:
xterm*dynamicColors: true urxvt*dynamicColors: on
Несмотря на лидерство, я не получил изменение цвета, работая с urxvt все же! Эта техника прекрасно работает с xterm. Dynamic Colors называет эти "escape-последовательности OSC", которые изменяют терминал, например, чтобы сделать фон красным:
echo -e "\03echo -e "\033]11;#ff0000\007"3]11;#ff0000\007"
источник
echo -e "\033]11;#ff0000\007"
Для быстрого переключения у меня есть следующие источники: да, они основаны на динамических цветах.
Вы также можете посмотреть другой подход здесь: https://github.com/sos4nt/dynamic-colors
источник
Я написал расширение под названием urxvt-theme, которое добавляет эту функциональность в rxvt-unicode (с простым контекстным меню), используя ресурсы X и динамические цвета.
источник