假设我的主进程生成了几个窗口。我想将它们分组在一个会话领导者主窗口中(如果您愿意的话,可以为窗口组提供一个框架迷你桌面)。我可以做什么来实现这个目标?
更多细节:
我一直在玩禅宗,我很好奇我的脚本是否可以创建多个 zenity(或其他)窗口并将它们组合在一个主窗口中,从而允许我一次移动或关闭所有生成的子窗口。
答案1
您可以使用以下命令在 X 服务器内部设置 X 服务器Xephyr
。您可以在屏幕上创建一个窗口,显示新 X 显示的内容:
Xephyr :1
首先,那将是空的。您可以启动指向该新显示器的一个或多个应用程序:
DISPLAY=:1 some-application
该应用程序产生的所有窗口都将显示在 Xephyr 窗口内。
X巢是同一想法的较旧版本,它不支持相同范围的 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 服务器一样,但它确实会立即终止所有内容。