将终端 256 调色板重置为默认值

将终端 256 调色板重置为默认值

假设有东西破坏了默认的 256 色调色板。例如,选择颜色 108:

printf "\033]4;108;rgb:ff/00/00\033\\"

我该如何撤消此操作?我搜索了所有当前“重置终端”问题,并尝试过:

reset # You can't see this in the screenshot as it clears the screen
tput init
tput sgr0
printf '\e[0m'

用一个测试模式我们可以清楚地看到颜色#108仍然被破坏:

108 号颜色仍然坏了

我正在运行 GNOME 终端。

想要做类似的事情gconftool --recursive-unset /apps/gnome-terminal,因为这会扰乱所有 open/new 的通用终端配置(例如字体)gnome-terminal。这太过笼统了。

我如何能,从终端内的命令行

  1. 将特定调色板颜色恢复为其默认值?
  2. 将所有调色板颜色恢复为默认值?

由于该问题可以通过发出控制代码来创建,因此我希望它也可以通过使用控制代码来解决。

答案1

不要使用 4,而要使用 104 来重置特定颜色,例如示例中的颜色编号 108:

printf "\033]104;108\033\\"

省略颜色编号以重置整个调色板(全部 256 种颜色):

printf "\033]104\033\\"

注意:GNOME 终端(实际上是 VTE)使用两种“级别”的颜色。通过 VTE 的 API 设置的颜色(或者在 GNOME 终端的情况下,在“首选项”对话框中选择并存储在 gsettings/dconf 中的前 16 种颜色,其余的是 VTE 的硬编码默认值)具有较低的优先级。对于每个插槽,可能的转义序列具有较高的优先级并暂时覆盖此值。带有“104”参数的上述转义序列“重置”,即清除通过转义序列“4”指定的值,从而恢复为 GNOME 终端的首选项对话框中指定的值(或 VTE 的扩展 256 色调色板的默认值)。由于这种设计,gsettings 或 dconf 命令绝对不可能恢复颜色更改转义序列的效果。其他非基于 VTE 的终端仿真器可能采用不同的方法,或者可能根本不支持这些转义序列。

相关内容