Ubuntu 22.04下为不同工作区配置不同默认浏览器的方案咨询
Ubuntu 22.04下为不同工作区配置不同默认浏览器的方案咨询
嗨,刚好我之前折腾过类似的需求,针对你在Ubuntu 22.04上想给工作区分别指定Chrome和Firefox作为默认浏览器的问题,这里有几个实用的方案,帮你搞定:
一、先搞定「识别当前工作区」的问题
Ubuntu 22.04用的是GNOME桌面,我们可以用gdbus命令直接从GNOME Shell获取当前激活的工作区索引(注意索引是从0开始计数的,第一个工作区是0,第二个是1),命令如下:
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "global.workspace_manager.get_active_workspace().index"
执行后会返回类似(true, "0")的结果,其中引号里的数字就是当前工作区的索引,我们可以用cut命令把它提取出来,方便后续脚本使用。
二、写一个「浏览器分流脚本」
我们可以写一个中间脚本,让它根据当前工作区自动启动对应的浏览器,步骤如下:
- 创建一个脚本文件,比如放在你的用户目录下:
touch ~/browser-launcher.sh - 编辑脚本内容,把下面的代码复制进去(记得把
你的用户名替换成实际的用户名):
#!/bin/bash # 提取当前工作区索引 WORKSPACE=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "global.workspace_manager.get_active_workspace().index" | cut -d '"' -f 2) # 根据工作区选择启动的浏览器 if [ "$WORKSPACE" -eq 0 ]; then # 假设工作区0是你的工作区,启动Firefox exec firefox "$@" elif [ "$WORKSPACE" -eq 1 ]; then # 工作区1是私人区,启动Chrome exec google-chrome "$@" else # 其他工作区默认启动Chrome(你可以改成Firefox) exec google-chrome "$@" fi
- 给脚本添加可执行权限:
chmod +x ~/browser-launcher.sh
三、把脚本设置为系统默认浏览器
光有脚本还不够,我们需要把它注册成系统认可的浏览器应用:
- 创建一个桌面配置文件:
touch ~/.local/share/applications/browser-launcher.desktop - 编辑这个文件,复制以下内容(同样替换
你的用户名):
[Desktop Entry] Name=Workspace Browser Launcher Exec=/home/你的用户名/browser-launcher.sh %u Type=Application Terminal=false MimeType=x-scheme-handler/http;x-scheme-handler/https;text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
- 更新桌面应用数据库,让系统识别这个新应用:
update-desktop-database ~/.local/share/applications/
- 设置为默认浏览器:
- 打开系统「设置」→「默认应用」→「Web」
- 在列表里找到「Workspace Browser Launcher」,选中它就可以了
四、有没有其他替代方案?
- GNOME扩展:理论上有扩展可以实现根据工作区切换默认应用,但我试过几个要么维护不及时,要么兼容性差,不如脚本稳定可靠。
- 窗口规则工具(如devilspie2):可以配置根据工作区自动打开特定浏览器,但它是针对窗口的,不是修改默认浏览器,适合另一种场景——比如你手动打开浏览器时自动移到对应工作区,但没法处理点击链接自动打开的情况。
你提到的那个线程思路是完全正确的,核心就是识别当前工作区然后做分流,上面的脚本就是这个思路的具体实现,在Ubuntu 22.04上亲测可用。
备注:内容来源于stack exchange,提问作者Nemo
相关产品推荐
相关产品推荐

