X11

設置終端的“圖示標題”是什麼意思?

  • May 27, 2021

我通常認為將終端標題設置為(類似於)的語法:

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

但我注意到這個答案被用來2代替0,這促使我做更多的探勘工作。根據this document,您實際上可以使用以下語法設置“圖示名稱”和“視窗標題”:

·  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當我嘗試它時,我看不出and之間有任何區別2,並且似乎1沒有做任何事情。

那麼什麼是“圖示標題”,當0或被1呼叫時應該發生什麼?

這是現代視窗管理器可能忽略或未實現的 X11 程式碼。幸運的是,我沒有執行現代的 Window Manger,因此在 OpenBSD 上使用 FVWM,我可以將圖示名稱設置為blah,然後最小化該 xterm:

截圖

這會產生一個具有該名稱的圖示。

Xterm Title HOW-TO已簡化。來自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=both、1=icon、2=title),儘管需要一段時間才能達到這一點(請參閱修復)。

根據XStoreName手冊頁

XStoreName()函式將傳遞給 window_name 的名稱分配給指定的視窗。視窗管理器可以將視窗名稱顯示在一些顯眼的位置,例如標題欄,以便使用者輕鬆辨識視窗。一些視窗管理器可能會在視窗的圖示中顯示視窗的名稱,儘管如果應用程序提供了視窗的圖示名稱,則鼓勵他們使用視窗的圖示名稱。如果字元串不在Host Portable Character Encoding中,則結果取決於實現。

該呼叫設置一個視窗管理器屬性。許多視窗管理器屬性是可選的,允許不同的實現。ICCMWM_ICON_NAME記錄為

該屬性是一個未解釋的字元串,當視窗被圖示化時(例如,在圖示標籤中),WM_ICON_NAME客戶端希望與視窗相關聯地顯示該字元串。其他方面,包括類型,都與. 由於明顯的幾何原因,在 中可見的字元通常少於.WM_NAME``WM_ICON_NAME``WM_NAME

客戶端不應嘗試在其圖示像素圖或視窗中顯示此字元串;相反,他們應該依靠視窗管理器來做到這一點。

提到的編碼XStoreName是一個線索。它不是UTF-8。經過幾年(大約 2000 年代初),將 Unicode 字元串引入為 ISO-8859-1(Latin-1)設計的應用程序,例如這個 gem,一些視窗管理器開發人員提出了擴展視窗管理器提示來糾正這種情況並提供擴展。它使用不同的視窗屬性,例如_NET_WM_ICON_NAME

客戶端應該將此設置為 UTF-8 編碼的此視窗的圖示標題。如果設置,視窗管理器應該優先使用它而不是WM_ICON_NAME.

同樣,這是可選的。桌面開發人員可能對如何顯示圖示有不同的想法,而圖形圖像似乎得到了更多的關注,通常以犧牲可訪問性為代價。但是,它仍然是標準的一部分,被 fvwm、twm、ctwm 等少數視窗管理器使用。如果有人要製作可訪問的 KDE 或 GNOME 版本,他們可能會使用此屬性。

引用自:https://unix.stackexchange.com/questions/265760