gsettings - 通过命令行更改隐私设置

blo*_*gpg 5 command-line privacy gsettings dconf

我知道如何通过 GUI(系统设置 > 安全和隐私)更改隐私设置,但我希望能够从命令行执行此操作。

我做了什么来发现

我运行了命令:

dconf watch /
Run Code Online (Sandbox Code Playgroud)

以查看进行了哪些更改。关于命令(来自man dconf):

watch
    Watch a key or directory for changes.
Run Code Online (Sandbox Code Playgroud)

随后,我通过 GUI 更改了设置以查看命令输出中发生的情况。这显示了:

/org/gnome/desktop/privacy/remember-recent-files false
/com/canonical/unity/lenses/remote-content-search 'none'
/org/gnome/desktop/screensaver/ubuntu-lock-on-suspend false
/org/gnome/desktop/screensaver/lock-enabled false
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何使用此信息从命令行更改设置?

Jac*_*ijm 8

编辑这些设置的不同方法

您提到的设置dconf~/.config/dconf(二进制格式)存储在数据库中。该数据库可以直接使用dconf或通过进行编辑gsettings。本答案的最后一部分解释了差异。

获得发布在问题中的信息后,您可以通过两种不同的方式更改相应的设置。
使用您的第一个示例(设置remember-recent-files):

使用 dconf 写:

dconf write /org/gnome/desktop/privacy/remember-recent-files false
Run Code Online (Sandbox Code Playgroud)

或者

使用 gsettings 集:

gsettings set org.gnome.desktop.privacy remember-recent-files false
Run Code Online (Sandbox Code Playgroud)

同样,读取当前设置:

使用 dconf 读取:

dconf read /org/gnome/desktop/privacy/remember-recent-files
Run Code Online (Sandbox Code Playgroud)

或者

使用 gsettings 得到:

gsettings get org.gnome.desktop.privacy remember-recent-files
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,您dconf直接编辑数据库,在后一种情况下您使用的gsettings是 dconf 的 CLI 前端。

更喜欢哪种方式;dconf 还是 gsettings?

为了保护dconf数据库的完整性,一般来说,使用gsettings.

这个链接,我们读到:

dconf 程序可以对 dconf 数据库执行各种操作,例如读取或写入单个值或整个目录。该工具直接在 dconf 上运行,不使用 gsettings 架构信息。因此,它无法对值执行类型和一致性检查。如果需要此类检查,gsettings(1) 实用程序是一种替代方法。您可以gsettings将 cli-frontside 视为dconf.

阅读有关gsettingsdconf 的更多信息