如何在GNOME 17.10启动时将指定窗口分配到对应工作区?
解决方案:GNOME 17.10 自动固定窗口到指定工作区和位置
针对你在GNOME 17.10下想要自动固定窗口位置和工作区的需求,结合你已经在用的Auto Move Windows和Workspace Grid扩展,我们可以通过窗口类名精准匹配+自动化窗口规则工具来实现完全无需手动操作的效果。下面是分步实现方案:
1. 让Auto Move Windows精准识别目标程序
很多程序的窗口类名和进程名不一致,这是导致Auto Move Windows失效的常见原因。你需要先获取Keep和Hangouts的真实窗口类名:
- 打开Keep窗口,终端运行命令:
点击Keep窗口,终端会输出类似xprop WM_CLASSWM_CLASS(STRING) = "keep", "Google Keep"的内容,记住第二个值(比如Google Keep)——这是后续匹配要用的核心标识。 - 用同样方法获取Hangouts的窗口类名。
接下来打开GNOME Tweaks(或直接进入Auto Move Windows扩展设置),添加这两个类名,将它们分配到工作区1。这样程序启动时会自动跳转到目标工作区,但还需要调整位置。
2. 用devilspie2自动调整窗口大小和位置
devilspie2是轻量的窗口规则工具,能实时监控窗口创建并自动应用预设的大小、位置规则,完美适配你的场景:
安装devilspie2
终端运行:
sudo apt update && sudo apt install devilspie2
创建窗口规则脚本
先创建配置目录(如果不存在):mkdir -p ~/.config/devilspie2,然后在该目录下创建两个Lua脚本:
Keep的规则脚本(keep.lua)
-- 匹配Google Keep窗口 if get_window_class() == "Google Keep" then -- 设置窗口到屏幕左侧,宽度为屏幕一半、高度全屏 -- 请根据你的屏幕分辨率修改数值,比如1920x1080的屏幕,宽度设为960 set_window_geometry(0, 0, 960, 1080) -- 固定到工作区1(Workspace Grid的工作区编号从1开始) set_window_workspace(1) end
Hangouts的规则脚本(hangouts.lua)
-- 匹配Google Hangouts窗口 if get_window_class() == "Google Hangouts" then -- 设置窗口到屏幕右侧,尺寸与Keep对称 set_window_geometry(960, 0, 960, 1080) set_window_workspace(1) end
添加devilspie2到启动项
打开GNOME的“启动应用程序”设置,添加新项:
- 名称:
Window Auto Setup - 命令:
devilspie2 - 备注:自动调整固定窗口的位置和大小
这样devilspie2会随系统启动,一旦Keep或Hangouts窗口创建,就会自动应用规则。
3. 备选方案:用wmctrl写bash脚本
如果你更习惯命令行工具,可以用wmctrl实现同样效果:
安装wmctrl
sudo apt install wmctrl
创建调整脚本
创建~/setup_fixed_windows.sh文件,内容如下:
#!/bin/bash # 等待程序启动(根据电脑速度调整延迟时间) sleep 5 # 调整Keep窗口:移动到工作区1(wmctrl工作区编号从0开始计数),设置位置大小 wmctrl -r "Google Keep" -t 0 wmctrl -r "Google Keep" -e 0,0,0,960,1080 # 调整Hangouts窗口 wmctrl -r "Google Hangouts" -t 0 wmctrl -r "Google Hangouts" -e 0,960,0,960,1080
配置脚本权限和启动项
给脚本添加执行权限:
chmod +x ~/setup_fixed_windows.sh
然后在“启动应用程序”里添加这个脚本,注意把它放在Keep和Hangouts的启动项之后,确保程序启动后再执行调整。
测试和调整
- 先手动运行脚本或启动
devilspie2,打开Keep和Hangouts验证效果 - 如果窗口位置不对,根据实际屏幕分辨率修改脚本里的数值
- 若
Auto Move Windows仍不生效,用wmctrl -lx查看所有窗口的类名,检查匹配是否正确
内容的提问来源于stack exchange,提问作者SenseiWarren
相关产品推荐
相关产品推荐

