TMUX: изменить цвет превью по выбору сеансов

Если вы не хотите писать собственный код замены Windows для того места, где вы используете ioctl () . Вам нужно будет скомпилировать и связать со средами выполнения Cygwin или MSYS (2) . Однако я не знаю, насколько хорошо эмулируется ioctl () .

Если вы пойдете по этому пути, вы должны знать, что вы больше не можете выполнять кросс-компиляцию только с помощью инструментальной цепочки MinGW. И вам нужно будет использовать вино, если я не ошибаюсь.

Я бы порекомендовал вам начать экспериментировать с MSYS2 . И тестирование вашего кода в реальной среде Windows является обязательным.

0
17.10.2018, 16:12
1 ответ

Эти превью на самом деле не являются «панелями» в терминологии tmux, даже если они разделяют область терминала аналогичным образом. Таким образом, (в текущих tmux, 2.7 )не имеет собственной настройки конфигурации и будет отображаться с помощью active-window-style. Если вы считаете, что это недосмотр, вы можете запросить функцию :

.

Why doesn't tmux do $x?

Please send feature requests by email to tmux-users@googlegroups.com.

Исправление и перекомпиляция

В качестве альтернативы, если вам удобно собирать tmuxиз исходного кода, достаточно просто изменить соответствующие функции.

Вертикальные линии между превью рисуются с помощью screen_write_vline, а рамка вокруг них — с помощью screen_write_box. Обе функции можно найти в screen-write.c, и они содержат эту строку:

    memcpy(&gc, &grid_default_cell, sizeof gc);

gcотносится к типу struct grid_cell, который включает элементы fgи bgдля переднего плана и фона соответственно.

grid_default_cell— это const, определенный вgrid.c. И fg, и bgравны 8, что означает, чтоdefault:будут использовать те же значения, что и window-active-style, или (, если это не было установлено )собственными значениями терминала по умолчанию.

Чтобы переопределить это, вы можете изменить gcсразу после:

    memcpy(&gc, &grid_default_cell, sizeof gc);
    gc.fg = 1;

Это установит красный цвет переднего плана перед рисованием рассматриваемой линии.

Преобразование цвета в int

В файлах конфигурации tmuxраспознает цвета в следующих форматах:

The colour is one of: black, red, green, yellow, blue, magenta, cyan, white, aixterm bright variants (if supported: brightred, brightgreen, and so on), colour0 to colour255 from the 256-colour set, default, or a hexadecimal RGB string such as ‘#ffffff’.

При установке их в источнике вы должны предоставить их как int. Читая функциюcolour_fromstringв colour.c,вы можете найти их числовые представления:

  • Основные цвета :0 -7
  • по умолчанию :8
  • "яркие" варианты основных цветов :90 -97
  • индекс из палитры 256 цветов:COLOUR_FLAG_256 |индекс
  • True Color (24 -бит RGB):COLOUR_FLAG_RGB | 0xRRGGBB
0
28.01.2020, 04:12

Теги

Похожие вопросы