支持自定义图标、光标颜色以及所有其他颜色的 Linux 终端

支持自定义图标、光标颜色以及所有其他颜色的 Linux 终端

除了 evilvte 之外,Linux 上是否有任何终端仿真器可以(不会崩溃)允许我在每个主机上指定光标、前台背景颜色并且图标(即正在运行的应用程序最小化时显示的图标)?

我通过 SSH 连接到大量不同的主机,为了便于跟踪我登录到的主机,我为每台主机的终端 Windows 使用了一种独特的配色方案(即背景、前景和光标颜色的独特组合)。为了便于在这些终端会话之间本能地正确导航,我还依赖于自定义终端仿真器设置,以便在最小化时(或在我的 XFCE 桌面上按 ALT-TAB 时)使用的图标反映其使用的配色方案。

(我有一个 perl 程序,可以生成一个终端图形,其背景、前景和光标颜色与我为主机使用的配色方案相匹配,因此我可以轻松地为我应该使用的每个主机生成一个合适的图标)

这种方法的问题不在于它不起作用(它确实很有效!),而在于很难选择一个足够好的终端仿真器来支持全部以下的:

  • 每个会话可定制的图标图形(从某种意义上说,我可以指定磁盘上的任何图像)。
  • 每个会话可自定义背景、前景光标颜色。
  • 最好每个会话都可自定义 ANSI 颜色(包括“亮”颜色 8 到 15),因为如果背景颜色是红色,我想调整 ANSI 红色和亮红色,使它们与背景颜色略有不同。(是的,我也有一个可以自动进行调整的脚本)

现在我依赖 evilvte,因为它是唯一允许我自定义图标以及所有颜色(光标、前景、背景、粗体、暗色和所有 ANSI 颜色)的终端软件。evilvte 的问题在于我必须为每个会话编译一个单独的二进制文件(部分自动化且可行,但坦率地说,这种方法相当丑陋)。此外,evilvte 不支持您减小终端窗口的宽度或高度(即减少列数或行数),尽管允许您增加宽度/高度。evilvte 的另一个潜在问题是,我做了一个相当丑陋的黑客来调整它的所有 ANSI 颜色,这可能适用于未来的 evilvte 版本,也可能不适用。

我尝试过 gnome-terminal,但它最初缺乏自定义光标颜色的功能,并且曾经有一个支持我们决定删除根据每个会话自定义图标的功能。

任何指向一个终端的指针,只要它能提供我需要的所有功能,但没有使用 evilvte 时遇到的麻烦,我都会很感激。

编辑: Matt Jenkins 给出了一个写得很好的答案,他建议我使用 xterm,并提供了一些如何使用它的好提示。不幸的是,xterm 确实有一些限制,使其不适合我的需求(xterm 仅支持单色黑白图标像素图,并且它具有硬编码,以 ANSI 颜色编译)。所以,我没有接受他的答案(单击复选标记),但我仍然“提高”了一分。

答案1

看起来“konsole”是你的朋友。

在对多个终端程序进行广泛调查后,我发现:

  • konsole支持设置自定义配色方案:

在此处输入图片描述

  • konsole支持自定义图标:

在此处输入图片描述

  • konsole支持多个配置文件 - 无需编写脚本。只需为每个服务器创建一个新的配置文件。您甚至可以在配置文件中包含 ssh 命令以自动登录服务器。

在此处输入图片描述

哦,还有konsole选项卡,这样您就可以减少混乱,并在更少的窗口中将服务器分组在一起。(也许您的所有 Web 服务器都在一个窗口中,而您的所有文件服务器都在另一个窗口中,等等)。

为了在窗口管理器中设置图标(“配置文件”图标的单独图标),您需要在 konsole 命令中指定 --icon 标志:

$ konsole --icon /usr/share/icons/oxygen/16x16/apps/java.png

这使:

在此处输入图片描述

将其结合起来--profile应该会产生您想要的结果。

请注意,当您更改选项卡时,此窗口管理器图标不会改变,因此它可以用作图标来识别选项卡组 - 比如说您的所有 Web 服务器 - 或者您不使用选项卡,而只是坚持每个服务器 1 个窗口。

答案2

大多数 Linux 终端软件都会提供命令行标志来设置行为 - 即使是最基本的xterm

让我们解决您的一些要求:

  • 每个会话可定制的图标图形(从某种意义上说,我可以指定磁盘上的任何图像)。

这些与终端程序无关。这些是启动终端程序的“快捷方式”图标(我认为这就是你想要的)。你应该看看。桌面文件格式。

  • 每个会话可定制的背景、前景和光标颜色。

您应该调查一下您最喜欢的终端程序有哪些命令行标志。例如,xterm-fg-bg

$ xterm -fg gold -bg darkblue
  • 最好每个会话都可自定义 ANSI 颜色(包括“亮”颜色 8 到 15),因为如果背景颜色是红色,我想调整 ANSI 红色和亮红色,使它们与背景颜色略有不同。(是的,我也有一个可以自动进行调整的脚本)

ANSI 颜色是预定义标准。它们不应被更改。大多数终端程序将允许您从大量颜色中指定“默认”前景和背景,这些颜色不限于正常的 16 种 ANSI 颜色。要查看这些颜色的完整列表,请查看 rgb.txt 文件。它位于您的 Linux 发行版中的某个位置,包含“标准”X11 颜色。在 Ubuntu 上,它位于 /usr/share/X11/rgb.txt。

作为附加标识,大多数终端程序都会让您设置窗口标题。例如,使用好用的 xterm,您可以使用:

$ xterm -bg darkblue -fg gold -title "My terminal"

甚至输入要执行的命令:

$ xterm -bg darkblue -fg gold -title "Web Server" -e "ssh [email protected]"

最终结果如下:

在此处输入图片描述

将该命令连同指向 Web 服务器图标的指针一起放入“Web Server.desktop”文件的目标中,然后一切就大功告成了!

编辑:

我刚刚读了关于如何使用图标的部分。

设置标题栏中的图标是设置“iconPixmap”X 资源的一种情况。这可以通过-xrm指向“XBM”文件的标志来完成:

$ xterm -xrm '*iconPixmap: /path/to/icon.xbm'

相关内容