我喜欢运行几个脚本来自动安装软件包并在新安装的操作系统上进行一些配置。我使用带有一些扩展的 gnome shell,并正在考虑改进我的脚本来配置它们。
我通常使用 gnome-shell-extension-prefs 或 dconf-editor 配置扩展,并且我知道如何从命令行编辑其他模式。示例:
gsettings set org.gnome.desktop.background picture-options stretched
但是,虽然我可以使用 dconf-editor 在 org.gnome.shell.extensions 下找到并编辑已安装的扩展,但我无法使用 gsettings 访问它们,因为它们似乎没有指定的模式:
No such schema 'org.gnome.shell.extensions.extname'
唯一可以通过 gsettings 访问的扩展似乎是那些预先安装的扩展。
因此,问题是,如何从命令行配置已安装的扩展? 有没有办法将编译的架构分配给 gsettings ~/.local/share/gnome-shell/extensions/
? 也许我找错了方向。
环境:Ubuntu Gnome 14.04(Gnome Shell 3.10.4)
提前致谢。
答案1
最终我自己找到了答案。
sudo cp ~/.local/share/gnome-shell/extensions/extname/schemas/org.gnome.shell.extensions.extname.gschema.xml \
/usr/share/glib-2.0/schemas/ &&
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
复制并编译模式,~/.local/share/gnome-shell/extensions
然后 gsettings 将能够使用它们。
答案2
在 CentOS 7 中 - 我认为在 Ubuntu 中也是如此 - 我通过引入 --schemadir 开关发现了我认为对接受的答案略有改进,如下所示:
# gsettings --schemadir ${schemaDir} set ${schema} ${key} "${value}"
在上面的命令中,gsettings 直接设置${key}
为不位于默认目录中的位置${value}
。(并且没有要求将架构移动到默认目录)${schema}
${schema}
/usr/share/glib-2.0/schemas
一些例子:
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/ list-recursively org.gnome.shell.extensions.org-lab21-putwindow
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/ list-recursively org.gnome.shell.extensions.app-keys
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/ list-recursively org.gnome.shell.extensions.emoji-selector
答案3
我写了这个脚本:用于启用/禁用 gnome-shell-extensions 等的 Bash 脚本。
只需将其 cp 到/usr/bin
或/usr/local/bin
并使其可执行即可:
sudo chmod +x /usr/bin/gnome-shell-extension-cl
查看帮助。
启用扩展:
gnome-shell-extension-cl -e extension-name
禁用扩展:
gnome-shell-extension-cl -d extension-name
答案4
dconf文档说:
dconf API 不是特别友好,并且不能保证稳定。由于这一点以及缺乏可移植性,您几乎肯定希望使用某种包装器 API。GTK+ 和 GNOME 应用程序使用的包装器 API 是 GSettings2,它是 GLib 的一部分。
这里,dconf-editor 是 gsettings 和 dconf 的图形编辑器。
dconf-editor 从 $XDG_DATA_DIRS/glib-2.0/schemas 读取 gsettings 模式以获取键的描述、默认值和允许值。
感谢@albhilazo 和如何从 gschema.xml 文件正确配置 dconf 模式?:
find $HOME/.local/share/gnome-shell/extensions/ -name '*.gschema.xml' -exec cp "{}" "$HOME/.local/share/glib-2.0/schemas" \;
glib-compile-schemas $HOME/.local/share/glib-2.0/schemas/
glib-编译-模式文档说:
在运行时,GSettings 会在 XDG_DATA_DIRS 环境变量中指定的所有目录的 glib-2.0/schemas 子目录中查找架构。安装架构文件的常用位置是 /usr/share/glib-2.0/schemas。
如果你还没有注意到,另一种方法是使用XDG_DATA_DIRS
。我有一个直觉(未经测试)只需在.profile
或中设置以下内容.zshenv
(基于您使用的默认 shell)也可以解决问题。
export XDG_CACHE_HOME=$HOME/.cache
export XDG_CONFIG_DIRS=/etc/xdg
export XDG_CONFIG_HOME=$HOME/.config
export XDG_DATA_DIRS=/usr/local/share/:/usr/share/
export XDG_DATA_HOME=$HOME/.local/share
export XDG_STATE_HOME=$HOME/.cache