如何在GNOME 3下通过脚本指定工作区启动应用(Ubuntu 17)
在Ubuntu 17(GNOME环境)中实现开机启动应用并分配到指定工作区
当然可以实现!在GNOME 3.x环境下,我们可以借助wmctrl这个轻量的命令行窗口控制工具,轻松把指定应用分配到对应工作区。下面是一步步的实现方案:
1. 先安装必要工具
首先得安装wmctrl,它能帮我们通过命令行操作窗口和工作区:
sudo apt update && sudo apt install wmctrl
2. 脚本编写思路
这里要注意一个关键点:应用启动后需要一点时间才能加载出窗口,所以脚本里必须加延迟,不然wmctrl找不到窗口就白忙活了。另外,GNOME的工作区编号是从0开始计数的——第一工作区是0,第二是1,第三是2,别搞混啦。
3. 完整脚本示例
创建一个名为start_apps.sh的脚本文件,把下面内容贴进去:
#!/bin/bash # 启动Firefox并移到第一工作区(编号0) firefox & sleep 5 # 延迟时间根据你的电脑性能调整,确保窗口加载完成 wmctrl -r "Mozilla Firefox" -t 0 # 启动Slack并移到第二工作区(编号1) slack & sleep 4 wmctrl -r "Slack" -t 1 # 启动Spotify并移到第三工作区(编号2) spotify & sleep 3 wmctrl -r "Spotify" -t 2
小细节说明:
- 用
wmctrl -l命令可以查看当前所有窗口的标题,确保-r后面的标题和实际窗口匹配 - 如果窗口标题经常变(比如Firefox打开不同网页标题会变),可以用类名来匹配,更可靠。用
wmctrl -lx查看窗口类名,然后改成这样:wmctrl -r firefox.Firefox -t 0 - 延迟时间
sleep可以灵活调整,硬件好的话可以缩短,反之加长。
4. 设置开机自动运行
- 先给脚本加执行权限:
chmod +x ~/start_apps.sh
- 打开GNOME的「启动应用程序」(直接在搜索栏搜就能找到)
- 点击「添加」,在「命令」栏里填脚本的绝对路径(比如
/home/你的用户名/start_apps.sh),名称和注释随便填就行 - 保存后,下次开机就会自动执行这个脚本,把应用分到对应工作区啦!
额外提醒
如果发现开机时脚本执行太早,桌面环境还没完全加载好,导致工作区分配失败,可以在脚本最开头加个全局延迟:
sleep 10 # 等10秒再启动应用
内容的提问来源于stack exchange,提问作者lusarz




