如何仅为特定应用设置GSettings/Dconf配置而不全局生效
如何仅为特定应用设置GSettings/Dconf配置而不全局生效
我太懂你这种糟心的情况了——为了让某个字小到看不清的应用调大字体,改了全局GSettings,结果整个系统里别的软件字体都大得离谱,完全没法正常用!别慌,其实有两个靠谱的方法能单独给目标应用设置GSettings配置,完全不碰全局设置。
方法一:用自定义dconf数据库(适合长期固定设置)
这种方法相当于给目标应用建个专属配置库,启动时让它只认这个库的设置,完全不影响全局:
- 先给你的应用创建一个专属的dconf数据库目录,比如咱就叫
my-app-db:mkdir -p ~/.config/dconf/my-app-db - 初始化这个数据库:
dconf init -f ~/.config/dconf/my-app-db - 往这个专属数据库里写入你需要的设置(比如你要的大字体):
GSETTINGS_BACKEND=dconf:user-db:my-app-db gsettings set org.gnome.desktop.interface document-font-name "Cantarell 25" - 最后用这个专属数据库启动你的目标应用,比如应用是
gedit的话:GSETTINGS_BACKEND=dconf:user-db:my-app-db gedit
这样启动的应用只会用你自定义的字体设置,其他软件还是乖乖用全局的默认配置,完全不冲突。
方法二:用环境变量临时覆盖(适合快速测试或简单设置)
如果只是临时调一下,或者不想折腾单独的数据库,直接用GSETTINGS_OVERRIDE环境变量在启动时指定配置就行,步骤超简单:
- 比如你要启动应用并单独设置字体,直接在命令行这么写:
举个实际例子,启动文档查看器GSETTINGS_OVERRIDE="org.gnome.desktop.interface document-font-name='Cantarell 25'" <你的应用命令>evince的话就是:GSETTINGS_OVERRIDE="org.gnome.desktop.interface document-font-name='Cantarell 25'" evince
要是用桌面图标启动应用怎么办?
很多时候我们都是点桌面图标开软件,这时候只要改一下应用的启动器配置就行:
- 先找到应用的
.desktop文件,系统级的一般在/usr/share/applications,别直接改系统文件,复制一份到用户专属的启动器目录:cp /usr/share/applications/<应用名>.desktop ~/.local/share/applications/ - 打开复制后的
.desktop文件,找到Exec=那一行,把环境变量加到应用命令前面,比如:
原来的Exec=gedit %U改成:Exec=env GSETTINGS_OVERRIDE="org.gnome.desktop.interface document-font-name='Cantarell 25'" gedit %U - 保存后,下次点桌面图标启动应用,它就会自动用你单独设置的配置啦!
小提醒
这些方法对绝大多数GTK/基于GSettings的应用都管用,毕竟它们都是基于GNOME的配置框架的。如果遇到个别应用不支持,那可能得看应用本身有没有自带的配置选项,但这种情况真的很少见~
备注:内容来源于stack exchange,提问作者sextrism
相关产品推荐
相关产品推荐

