设置终端的“图标标题”是什么意思?

设置终端的“图标标题”是什么意思?

我通常看到设置终端标题的语法为(类似):

echo -e '\e]0;Some Title\a'

但我注意到这个答案使用2而不是0,这促使我做了更多的挖掘。根据这个文件您实际上可以使用以下语法设置“图标名称”和“窗口标题”:

·  ESC]0;stringBEL -- Set icon name and window title to string

·  ESC]1;stringBEL -- Set icon name to string

·  ESC]2;stringBEL -- Set window title to string

   where ESC is the escape character (\033), and BEL is the bell
   character (\007).

Printing one of these sequences within the xterm will cause the window
or icon title to be changed.

但它没有继续解释“图标标题”或“图标名称”的确切含义。当我尝试时,我没有看到0和之间有任何区别2,并且1没有出现做任何事。

0那么什么是“图标标题”,当or1被调用时应该发生什么?

答案1

这是现代窗口管理器可能忽略或未实现的 X11 代码。幸运的是,我没有运行现代的窗口管理器,因此使用 OpenBSD 上的 FVWM,我可以将图标名称设置为blah,然后最小化该 xterm:

看截图

这会生成一个具有该名称的图标。

答案2

Xterm 标题操作方法被简化了。从XTerm 控制序列

OSC Ps ; Pt ST
OSC Ps ; Pt BEL

        Ps = 0  -> Change Icon Name and Window Title to Pt.
        Ps = 1  -> Change Icon Name to Pt.
        Ps = 2  -> Change Window Title to Pt.

OSC可能是escape], 或 0x9d)。

某些应用程序(例如screen)知道三种可能性(0=两者、1=图标、2=标题),尽管需要一段时间才能达到这一点(参见修复)。

根据X商店名称手册页

XStoreName()函数将传递给 window_name 的名称分配给指定的窗口。窗口管理器可以在一些显眼的地方(例如标题栏)显示窗口名称,以便用户轻松识别窗口。某些窗口管理器可能会在窗口图标中显示窗口名称,但鼓励它们使用窗口图标名称(如果应用程序提供了图标名称)。如果字符串不在主机便携式字符编码,结果取决于实现。

该调用设置窗口管理器属性。许多窗口管理器属性是可选的,允许不同的实现。这国际计算机管理协会文件WM_ICON_NAME作为

WM_ICON_NAME属性是一个未解释的字符串,客户端希望在窗口打开时与该窗口关联显示。图标化的(例如,在图标标签中)。在其他方面,包括类型,它与 类似WM_NAME。由于明显的几何原因,通常在 中可见的字符会WM_ICON_NAME少于WM_NAME.

客户端不应尝试在其图标像素图或窗口中显示此字符串;相反,他们应该依靠窗口管理器来完成此操作。

提到的编码XStoreName是一个线索。它是不是UTF-8。经过几年(大约 2000 年代初),将 Unicode 字符串引入到为 ISO-8859-1 (Latin-1) 设计的应用程序中,例如,这颗宝石,一些窗口管理器开发人员想出了扩展窗口管理器提示纠正这种情况并提供延期。它使用不同的窗口属性,例如,_NET_WM_ICON_NAME

客户端应该将其设置为此窗口的图标标题(采用 UTF-8 编码)。如果设置,窗口管理器应优先使用此选项WM_ICON_NAME

再次强调,这是可选的。桌面开发人员可能对如何显示图标有不同的想法,而图形图像似乎得到了更多的关注,通常是以牺牲可达性。然而,它仍然是标准的一部分,被一些窗口管理器使用,例如 fvwm、twm、ctwm。如果有人要做一个无障碍KDE 或 GNOME 版本,他们可能会使用此属性。

答案3

某些终端仿真器(iterm2、tmux)可能会使用“图标标题”变体作为选项卡标题,以便选项卡和窗口标题可以不同。

不幸的是,对于 gnome-terminal、xfce4-terminal、lxterminal 等,情况并非如此。

相关内容