如何编写由gnome-tweak-tool进行的设置的脚本?


15

我希望能够从命令行进行配置,因此当我重新安装操作系统时,我可以运行脚本并重新获得我的首选配置。

自从“升级”到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调整工具的屏幕截图 ...但是有人会怎么猜呢?例如,如何确定提示和抗锯齿的相应设置?


1
TBH我一直在求助于键空间,例如gsettings list-recursively | grep -e alias -e hint-很想知道是否有更好的方法
钢铁司机

除了浏览源代码或dconf编辑器(或直接使用gsettings,例如@steeldriver),其他任何人都无法做。
muru 17-10-31

Answers:


23

轻松找出正在设置的内容

而不是搜索整个选项目录:

  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数据库的完整性。

另请参阅此处此处


太好了,谢谢。小问题:(1)我如何知道“ gsettings密钥是否存在”?(2)两个命令行界面在所有意图和目的上与用户相同的意义是什么?(3)您的“这里”的第一个和第三个之间有什么区别?对我来说,它们看起来像是同一页。
st01 2011年

@ st01对于(1),您可以简单地运行gsettings命令,看看它是否起作用,或者如果gsettings键(也存在)存在,请签入dconf编辑器(默认情况下未安装,但是很好的工具)。(2)gsettings是编辑dconf数据库的cli前端。Gsettings还检查数据库的完整性,因此比直接编辑dconf数据库更好。由于gsettings级别较高,因此速度较慢。(3),啊,那真是愚蠢:),你是对的。将会编辑
Jacob Vlijm '17

@JacobVlijm非常感谢!你救了我的命!!
Marslo

8

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

  • 将的列表导出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 '[>|<]'

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

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

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

    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中找到了一种简单的方法:

在此处输入图片说明


1
非常有用,谢谢,我不知道您可以像这样转储所有设置。
st01 2011年

1
太好了,非常感谢!现在,当我在gsettings中混乱时,可以恢复我的旧配置。
Nicholas Stommel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.