在终端中我使用黑底白字。程序似乎需要白底黑字或类似的内容。由于使用颜色来突出显示重要命令,因此它们强制常规文本为黑色。我的问题是,程序是否可以识别终端、本地和 ssh 中使用的颜色,以便在需要时识别和更改颜色?如果可能的话,我计划提交错误报告,但如果无能为力,我就不会。
答案1
这取决于终端,但简短的答案是肯定的:大多数支持颜色的终端也支持查询颜色设置(甚至更改调色板)的方法。
呈现全屏文本模式界面的程序通常使用诅咒库。它提供了一个功能color_content
查询颜色对的红-绿-蓝值,该值指定背景和前景。这颜色对 0是默认值。
仅打印文本但不移动光标的程序通常通过打印转义序列来更改颜色来实现。理论上,不同的终端可能使用不同的转义序列,但实际上所有现代终端(Windows 上的终端除外,其中终端的工作方式不同)都支持一组基本的转义序列,包括一个设置颜色。有转义序列查询颜色信息(这就是诅咒的工作原理),但它们使用起来有点困难。
所有这些都通过 SSH 透明地进行。