如何编写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. 打开终端窗口
  2. 运行命令:

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

    在此处输入图像描述

    ……你在那里。

Dconf和gsettings

在该示例中,您将看到dconf的输出。 Gsettings是dconf的首选。 很多时候,您可以同时使用dconf命令或gsettings命令。 在这种情况下:

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

要么:

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

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

另见此处和此处 。

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

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

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

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

     gsettings list-recursively > /tmp/gsettings.after 
  • 比较两个文件( .before.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中找到了一个简单的方法:

在此处输入图像描述