为什么加载时间较长的应用程序(NetBeans、Eclipse 等)会“跳转”到当前桌面,即使该进程是在另一个桌面上启动的?
如果我转到桌面 3 并启动一个应用程序,然后在等待时转到桌面 2,那么当应用程序加载完成后,它将在桌面 2 上启动。有没有办法改变这种情况?
答案1
这是一个相当复杂的问题。
谁能想到,窗口管理器 (WM) 应该管理窗口。这包括但不限于它们的位置、尺寸、桌面以及它们是否接受装饰。WM 不以任何方式启动应用程序,它只会查看和管理该进程将生成的窗口。那么,会发生什么呢?
- 切换到桌面 2
- 启动 NetBeans
- 启动画面在桌面 2 上创建为没有任何装饰的窗口
- 切换到桌面 3
- NetBeans 启动画面停留在桌面 2
- NetBeans 完成并最终创建主窗口,该窗口当然会发送到当前桌面,因为它是一个全新的窗口
在这种情况下的问题是窗口管理器完全不知道(或不知道,不确定)WHO该窗口属于。有两种可能性:
找到一个可以执行此操作的窗口管理器...
- ...支持按父进程对窗口进行分组
- ...允许您为每个窗口定义规则
或者你可以得到一个辅助应用程序,例如魔鬼派它允许定义窗口规则。
答案2
如果您使用 compiz(是的,甚至可以在 12.04 以下使用;)),您可以尝试安装compizconfig-settings-manager
,然后转到Place Windows
子菜单添加新的Fixed Window tab
,您将在其中选择应用程序和桌面的类(名称)。
否则,你可以使用控制端这将允许您启动您的应用程序并强制它们转到您的某个桌面。