你能告诉一个窗口在其他窗口后面生成吗?

你能告诉一个窗口在其他窗口后面生成吗?

我有一个脚本可以重新编译并重新启动我在 Linux 中构建的软件项目。然而,我通常不想在程序启动后立即看到它的窗口,因为我想将键盘焦点保持在 vim 窗口上。

通常,我的程序会启动,自动获得焦点,并显示在工作区中其他窗口的顶部。

在linux中是否可以启动一个程序但不让它窃取焦点,并且不让它出现在所有其他窗口之上?

注意:如果重要的话,我正在运行 Fedora 13、GNOME、compiz 并使用 Emerald 主题。

答案1

一些窗口管理器有很多可定制性来完成类似的事情,但是最近的许多窗口管理器(包括metacity和compiz)已经失去了这种定制性。我曾经使用 fvwm 来做类似的事情。一种更简单的独立于 WM 的方法是尝试将焦点重新分配回右侧窗口。看看xdotoolhttp://www.semicomplete.com/projects/xdotool/xdotool。它应该在您的发行版存储库中可用。除其他外,它还可以将焦点分配给特定的窗口。我假设您从终端运行脚本,您不想失去焦点。如果是这样,您应该能够使用 $WINDOWID 检索终端的窗口 ID,并在脚本末尾使用 xdotool 重新聚焦终端。

答案2

另一种方法是让程序连接到不同的 X 服务器。你可以

  1. 在不同的虚拟控制台上运行单独的 X 实例。使用例如 Ctrl-alt-F8 进行切换。
  2. 运行 Xnest 让 X 服务器充当主 Xserver 的客户端

无论哪种方式,您的测试脚本都应该设置 DISPLAY 以将程序重定向到另一个 X 服务器(它可能被命名为:1)。

相关内容