首先,如果这不是最好的问题,我很抱歉。我尝试研究堆栈中最好的部分以进行关注,但我仍然不能 100% 确定我已经掌握了它。
因此,我将解释我所追求的结果:
在 Ubuntu 20.04(GNOME Shell 3.36.9 / Xorg)上,我有一个每天早上设置的窗口配置(用于我们公司的站立):一个 Firefox 窗口贴靠在右栏并打开一个 URL,另一个窗口贴靠在左栏并打开另一个 URL。
我知道如何在浏览器中打开 URL,但我想要自动化的事情有点不同:
- 打开新的浏览器窗口中新的工作区(最好位于工作区的顶部)
- 将窗口对齐到右侧
- 打开另一个新的同一工作区中的浏览器窗口,左侧对齐
- 让两个浏览器窗口都打开我想要的 URL
- 在我使用的 Firefox 容器中打开它们可以获得加分,但我知道这是 Firefox 的问题,而不是 Gnome 的问题。
理想情况下,我可以使用 bash 或 python 编写脚本。
我的问题是:这种事情真的可能吗?我应该查看哪些 API 或工具,或者是否有项目已经在做这种事情?这似乎很有用,因为每个人都必须有一组他们想要保存的通用窗口设置。
我对 Gnome 生态系统缺乏了解,因此很难进行搜索。
答案1
您可以使用wmctrl
和来操作窗口xdotool
,此外,诸如devilspie
和 之类的守护进程devilspie2
允许您为特定窗口定义规则。当创建符合您的条件的窗口时,这些工具可以自动操作它们,即调整它们的大小和位置,并将它们移动到不同的工作区。您可能需要登录Xorg 服务器(Ubuntu 21.04 之前的默认设置)。它们在 Wayland 下可能无法工作,或者至少会受到限制。
wmctrl 和 xdotool
如果您只需要在登录时设置配置,则可以使用wmctrl
和xdotool
。使用wmctrl
,您可以移动到不同的工作区,然后让脚本启动应用程序。xdotool
然后可能最适合“搜索”窗口并调整其大小和位置。它具有一个--sync
选项,可使命令等待,直到窗口有效创建。
devilspie 或 devilspie2
devilspie2
是 的后继者devilspie
,它在配置文件中使用不同的语法 (Lua)。使用这些工具,您可以定义规则,说明符合某些条件的窗口应该发生什么。一旦创建了这样的窗口,devilspie
就会根据说明对其进行操作,即调整其大小和位置,将其移动到不同的工作区,...
因此,您可以为要在启动期间放置的特定 Firefox 窗口定义规则。当窗口由自动启动程序或您在启动时运行的脚本创建时,devilspie
将在创建时自动对其进行操作。