为什么 tmux 不做 $x ?

为什么 tmux 不做 $x ?

当我创建多个会话并用于prefix + s在它们之间进行更改时,屏幕的下半部分显示每个窗口的预览及其索引和名称。如何更改显示的窗格边框的颜色?

图片:

会话选择器的屏幕截图

答案1

在 tmux 术语中,这些预览实际上并不是“窗格”,尽管它们以类似的方式共享终端区域。因此(在当前的tmux2.7 中),它们没有自己的配置设置,并将使用active-window-style.如果您认为这是一个疏忽,您可以提出功能要求:

为什么 tmux 不做 $x ?

请将功能请求通过电子邮件发送至[电子邮件受保护]

打补丁并重新编译

或者,如果您习惯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都是bg8,意思是:它将使用与、 或(如果未设置)终端自己的默认值default相同的值。window-active-style

要覆盖此设置,您可以gc随后立即更改:

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

这会将前景设置为红色,然后再绘制相关线条。

颜色到整数的转换

在配置文件中,tmux识别以下格式的颜色:

颜色是以下之一:黑色、红色、绿色、黄色、蓝色、品红色、青色、白色、aixterm 明亮变体(如果支持:明亮红色、明亮绿色等)、256 色集中的 color0 到 color255(默认)、或十六进制 RGB 字符串,例如“#ffffff”。

在源中设置它们时,您必须将它们作为int.从读取函数colour_fromstringcolour.c,你可以找到它们的数值表示:

  • 基本颜色:0-7
  • 默认值:8
  • 基本颜色的“明亮”版本:90-97
  • 索引来自256个调色板COLOUR_FLAG_256 |指数
  • 真彩色(24 位 RGB):COLOUR_FLAG_RGB | 0xRRGGBB

相关内容