我如何编写脚本来执行 gnome-tweak-tool 所做的设置?

我如何编写脚本来执行 gnome-tweak-tool 所做的设置?

我喜欢能够从命令行配置一些东西,这样当我重新安装操作系统时,我只需运行脚本并恢复我喜欢的配置。

自从“升级”到 Ubuntu 17.10 以来,我发现我必须使用 gnome-tweak-tool 来获得我想要的某些设置。

一旦我在 gnome-tweak-tool GUI 中找到一个设置,我如何找出其可编写脚本的翻译?

例如,以下 gsettings 行与下面 gnome-tweak-tool 屏幕截图中的相关条目匹配...

gsettings set org.gnome.desktop.wm.preferences titlebar-font "Tahoma Bold 8"
gsettings set org.gnome.desktop.interface font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface document-font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface monospace-font-name "FixedSC 10"

来自 gnome-tweak-tool 的屏幕截图 ...但谁能猜到呢?例如,我如何知道在哪里可以找到提示和抗锯齿的相应设置?

答案1

轻松找出正在设置的内容

无需搜索整个选项目录:

  1. 打开终端窗口
  2. 运行命令:

    dconf watch /
    
  3. 进行更改并查看终端显示的内容:

    在此处输入图片描述

    ...你就在那里。

Dconf 和 gsettings

在示例中,您会看到 的输出dconf。Gsettings 是 dconf 的 cli 前端。很多时候,您可以同时使用命令dconfgsettings命令。在这种情况下,可以:

dconf write /org/gnome/desktop/background/show-desktop-icons false

或者:

gsettings set org.gnome.desktop.background show-desktop-icons false

但是,如果 gsettings 键存在,则后者被认为是更好的做法,以保护dconf数据库的完整性。

也可以看看这里这里

答案2

对于大多数设置,您可以使用方法:

  • 将列表导出gsettings到临时文件中:

    gsettings list-recursively > /tmp/gsettings.before
    
  • gnome-tweak-tool通过(或)进行更改unity-control-center

  • 将列表导出gsettings到另一个临时文件中:

    gsettings list-recursively > /tmp/gsettings.after
    
  • 比较两个文件(。前。后) 并得出差异:

    diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'
    

    或者比较并仅获取新值(来源):

    diff /tmp/gsettings.before /tmp/gsettings.after | grep -Po '> \K.*'
    

    或者比较并仅获取新值,但用准备的命令列表替换行的开头gsettings set,这些命令可以直接存储在脚本文件中(来源):

    diff /tmp/gsettings.before /tmp/gsettings.after | sed 's/>/gsettings set/;tx;d;:x'
    

您可以从一行运行所有这些命令(或者您可以创建脚本来自动执行该过程):

gsettings list-recursively > /tmp/gsettings.before; gnome-tweak-tool; gsettings list-recursively > /tmp/gsettings.after; diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

下一个演示是在 Ubuntu 16.04 中创建的。我认为该方法在 17.10 中也适用:

在此处输入图片描述


更新:我刚刚在 Ubuntu 17.10 中找到了一种简单的方法:

在此处输入图片描述

相关内容