gnome 扩展首选项存储在哪里?

Sal*_*ouh 8 paths gnome-shell-extension

我正在为我的 gnome 设置创建一个 dotfiles git repo,并希望 Gnome 扩展的精确设置可以跨安装传输

我发现扩展本身存储在~/.local/share/gnome-shell/extensions 目录中,但在该 目录中找不到我在扩展中设置的首选项(例如屏幕截图工具),它只是 Javascript 和样式文件

更令人困惑的是,为了观察变化......

我在整个主目录上初始化了一个 git repo,并为干净的工作区提交了所有内容,然后更改了扩展的键绑定,但 git 没有通过以下方式检测到任何更改 git diff

这里发生了什么?我在哪里可以找到像 XML 或 JSON 甚至.conf 扩展的首选项文件?

PJ *_*ngh 9

架构文件

如果您全局安装了扩展,则默认扩展设置位于以下目录中的*.xml文件中:

/usr/share/gnome-shell/extensions/<extension directory>/schemas
Run Code Online (Sandbox Code Playgroud)

如果您在本地安装了扩展程序(这似乎是您的情况),则默认扩展程序设置位于以下目录中的*.xml文件中:

~/.local/share/gnome-shell/extensions/<extension directory>/schemas
Run Code Online (Sandbox Code Playgroud)

*.xml文件中,<key>标签将列出键。该<default>标签将包含默认值。您可以手动编辑这些文件。为了跨系统传输设置,您需要更新扩展的*.xml “gschema”文件。

在您上面引用的示例扩展中,设置位于屏幕截图配置

如果在已安装的系统上编辑这些文件,则需要通过运行以下命令之一来重新编译“gschema”。

如果您已全局安装扩展,请执行:

sudo glib-compile-schemas /usr/share/gnome-shell/extensions/<extension directory>/schemas
Run Code Online (Sandbox Code Playgroud)

如果您在本地安装了扩展,请执行:

glib-compile-schemas ~/.local/share/gnome-shell/extensions/<extension directory>/schemas
Run Code Online (Sandbox Code Playgroud)

这将在扩展的架构目录中创建一个更新的gschemas.compiled文件。

设置

当您使用 GUI(扩展的设置对话框)更改设置时,更改实际上存储在gsettings 中

您可以使用Dconf 编辑器来定位特定“gsetting”的键和值。

使用以下命令安装Dconf 编辑器

sudo apt install dconf-editor
Run Code Online (Sandbox Code Playgroud)

(您也可以使用gsettings命令行工具代替Dconf 编辑器GUI 工具)。

*.xml文件中的<schema>or<path>标签(如上所述)将告诉您在Dconf Editor 中导航到哪个模式。(提示,它将在 下)。在* .XML/org/gnome/shell/extensions/也文件将其键可配置列表。

您可以在Dconf Editor 中搜索架构和密钥,并进行更改。

根据我的经验,大多数扩展设置都存储在“可重定位”模式中。实际上,这意味着您只能在至少设置一次之后才能使用Dconf 编辑器搜索和更改它们。否则,密钥在Dconf Editor中将不可用,因此您将无法更改其值。这是因为当没有gsettings覆盖它们时,将使用*.xml文件中的默认值(如上所述)。

因为您想跨安装传输这些设置,请尝试导出您的gsettings,并将它们加载到您的新机器上。有关说明,请参阅另一个问题的答案。(这种方法实际上可能比编辑*.xml文件更容易,如上所述)。

注意变化

观察gsettings更改的一个好方法是运行以下命令:

dconf watch /
Run Code Online (Sandbox Code Playgroud)

这将显示您刚刚更改的架构和键。

dconf使用以下命令安装命令行工具:

sudo apt install dconf-cli
Run Code Online (Sandbox Code Playgroud)

  • 纯金!导出设置并加载它们会更好!非常感谢 (2认同)