X11

通過遠端 X 伺服器連接在標題欄中隱藏客戶端主機名(Docker 容器 ID)

  • February 18, 2019

在 Docker 容器中執行 GUI 應用程序時,我正在映射 X11 套接字以使應用程序能夠訪問主機上的 X 伺服器,如下所示:

docker run -v /tmp/.X11-unix:/tmp/.X11-unix my_image

問題是預設情況下,WM 將客戶端的主機名(在我的情況下是容器的 ID)添加到標題欄: 停靠視窗的範例

此 ID 不會為使用者增加任何價值。有沒有辦法擺脫這(effbff37ddd9)部分?

我們使用 Openbox 作為視窗管理器。

通過查看 Openbox 的原始碼,我可以得出結論,無法隱藏客戶端名稱部分,因為邏輯在client.c中是硬編碼的:

if (strcmp(localhost, s) != 0)
   self->client_machine = s;
...

然後在這裡

if (self->client_machine) {
   visible = g_strdup_printf("%s (%s)", data, self->client_machine);
   g_free(data);
} ...

解決方法

不過有一個解決方法。通過為容器提供一個合理的主機名,可以使其至少不那麼煩人,並且可能對使用者更有用:

docker run ... -h my-app ...

結果:

在此處輸入圖像描述

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