按主機對終端機視窗進行顏色編碼

按主機對終端機視窗進行顏色編碼

我經常使用 ssh 在不同的主機上工作,有時我會對在哪台電腦上執行命令感到困惑。我偶爾會差點向錯誤的主機發出halt(8) 指令。

理想情況下,我想根據我目前登入的主機對終端視窗的頂部功能區進行顏色編碼。我使用 Openbox 和 gnome-terminal,但會考慮切換到任何能讓這種事情變得簡單或至少可能的終端模擬器。

有誰知道有什麼方法可以做到這一點?如果您能向我指出以編程方式更改視窗顏色的方法,我並不害怕自己做一些工作。

答案1

「窗戶顏色」是指窗框的顏色嗎?如果是這樣,請告訴您的視窗管理器根據視窗標題設定視窗邊框的顏色,因為大多數視窗都有user@host: /path.它可以很容易地透過其視窗類別檢查這是否是終端,然後在標題更改時解析標題並更新使用的顏色。但我不知道涉及的流程,所以我不知道需要多少工作。

但這是可能的。

(我不知道 openbox 是否可以做到這一點,但經過思考,這是更簡單的方法)

更新:

查看 openbox 的源代碼後,我認為修補該framerender_frame函數,openbox/framerender.c以便如果視窗是一個終端,具體取決於標題中的主機,則使用不同的主題而不是全局主題ob_rr_theme,該主題具有您想要的該視窗的顏色它。

[在 的上下文中framerender_frame,視窗標題可能是self->client->title]

這樣做需要進行更改framerender_frame,以便它ob_rr_theme透過本地引用全局theme,並且需要編寫程式碼來載入主機:主題地圖和其他主題

偽代碼(即這不會運行):

RrTheme* theme = ob_rr_theme;
if "gnome-terminal" equals self->client->class: # for example only
    host = parse_title(self->client->title)
    theme = lookup host in by_host if not found use theme
# and then in the rest of framerender_frame use theme instead of ob_rr_theme

其中by_host將主機字串映射到RrTheme主題

相關內容