X11

我可以將多個 X 視窗放入一個較大的視窗中嗎?

  • March 12, 2021

假設我的主程序產生了幾個視窗。我想將它們分組在一個會話領導主視窗中(如果你願意的話,一個視窗組的框架迷你桌面)。我能做些什麼來實現這一目標?

更多細節:

我一直在玩zenity,我很好奇我的腳本是否可以創建多個 zenity (或其他)視窗並將它們組合在一個主視窗中,從而允許我一次移動或關閉所有生成的子視窗。

您可以使用Xephyr. 您可以在螢幕上創建一個顯示新 X 顯示內容的視窗:

Xephyr :1

首先,那將是空的。您可以啟動一個或多個指向該新顯示器的應用程序:

DISPLAY=:1 some-application

該應用程序產生的所有視窗都將顯示在 Xephyr 視窗中。

Xnest是相同想法的舊版本,它不支持相同範圍的 X 擴展,但更廣泛地可用。您以相同的方式啟動它:Xnest :1. 這兩個程序都支持許多命令行選項來更具體地配置它們。

在任何一種情況下,您都可能希望在嵌套伺服器中啟動一個視窗管理器,因為否則您的互動選項非常有限。您可以在內部啟動目前視窗管理器的另一個實例或使用不同的實例,方法與啟動應用程序相同DISPLAY=:1 twm &

您可以根據需要製作任意數量的子顯示,每次使用不同的數字。可以編寫整個事情的腳本:

Xephyr :1 &
export DISPLAY=:1
some-application &
some-other-application &

當您關閉 Xephyr 視窗時,所有嘗試使用它的應用程序都會收到 X 錯誤,並且(通常)會以如下方式終止:

Fatal IO error 11 (Resource temporarily unavailable) on X server :1

這是一個錯誤退出,就像您Ctrl-Alt-Backspace退出主 X 伺服器一樣,但它確實會立即終止所有內容。

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