我使用透明背景gnome-terminal
。
为了工作,我经常需要通过 SSH 进入 Windows 机器。OpenSSH 会尽职尽责地发送 ANSI 背景颜色,这会导致... 与终端的透明度混合时体验不太理想。
它的外观示例如下:
aptitude
例如,通过运行 可以获得类似的结果。
有没有办法让背景调色板透明(或者至少忽略颜色命令,类似于xterm -cm
)?我尝试在终端首选项中输入 RGBA 和 ARGB 格式的透明 alpha 通道,但看起来终端只是忽略了它们。
如果没有现成的解决方案,我将会破解终端的源代码,在这种情况下,指向哪里查找的指针会非常有帮助。
答案1
正如在https://superuser.com/questions/1164104/semi-transparent-colors-in-terminal,调色板颜色不能包含 Alpha 通道。只有默认背景可以是透明的。
(仅供参考,主流 gnome-terminal 的最新版本根本不支持透明度。旧版本曾经有它,并且一些发行版,包括 Ubuntu,对其进行了修补以将其恢复。)
“OpenSSH 忠实地发送 ANSI 背景颜色”——我对此深表怀疑。ssh 的职责是通过线路发送数据流,使其到达目的地时与发送方发送时完全一样(当然,在发送方加密并在接收方解密之后)。它不是终端仿真器,对转义序列、ANSI 颜色代码等一无所知。它甚至不能保证 ssh 发送的任何内容都会到达接收端的终端仿真器。例如,想想 scp,如果您无法安全地复制包含一些 ANSI 转义的文件,那就太奇怪了。ssh 肯定会让您的数据保持不变。
远程主机上肯定有一些 shell 设置或类似设置决定使用颜色,如果您本地有相同的设置,那么在游戏中没有 ssh 时,它也会同样无法正常工作。您应该在登录过程或提示符中查找发出此序列的人和位置。
虽然从您的屏幕截图和描述中看不清楚,但我怀疑当您第一次到达终端底部并且内容开始滚动时,非透明的灰线开始出现。这是由于大多数图形终端仿真器中脑残的“bce”(背景颜色擦除)功能错误造成的。gnome-terminal
(实际上是底层小vte
部件)从 Ubuntu Yakkety 中出现的 vte-0.44 开始改变了其行为。如果您正在运行 Xenial,您可能想尝试一下:从 Yakkety 更新您的 lilbvte-2.91-0 包,退出全部gnome-terminal 窗口并重新启动。想必您会看到不同的体验,这是您希望看到的体验。但请注意,gnome-terminal (vte) 的新行为不符合标准,您仍会在其他模拟器(例如 xterm)中看到旧行为。有关 gnome-terminal 围绕 bce 功能进行更改的详细信息:https://bugzilla.gnome.org/show_bug.cgi?id=754596。