Wie kann ich die von gnome-tweak-tool vorgenommenen Einstellungen skripten?

14

Ich möchte in der Lage sein, Dinge über die Befehlszeile zu konfigurieren, so dass ich bei einer Neuinstallation des Betriebssystems einfach ein Skript ausführen und meine bevorzugte Konfiguration zurückerhalten kann.

Seit dem "Upgrade" auf Ubuntu 17.10 musste ich Gnome-Tweak-Tool verwenden, um einige Einstellungen nach meinen Wünschen zu erhalten.

Wie kann ich die skriptfähige Übersetzung herausfinden, wenn ich eine Einstellung in der Benutzeroberfläche des Gnome-Tweak-Tools gefunden habe?

Zum Beispiel stimmen die folgenden gsettings-Zeilen mit den relevanten Einträgen im folgenden Screenshot des Gnome-Tweak-Tools überein ...

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"

Screenshot vom Gnome-Tweak-Tool ... aber wie könnte das jemand erraten? Und wie würde ich zum Beispiel herausfinden, wo ich die entsprechenden Einstellungen für Andeutungen und Antialiasing bekomme?

st01
quelle
1
TBH habe ich immer zurückgegriffen greppen der Schlüsselraum zum Beispiel gsettings list-recursively | grep -e alias -e hint- würde gerne wissen , ob es einen besseren Weg
steeldriver
Abgesehen vom Durchsuchen des Quellcodes oder des dconf-Editors (oder von gsettings direkt, wie @steeldriver), kann niemand viel tun.
muru

Antworten:

22

Finden Sie einfach heraus, was eingestellt wird

Anstatt ein ganzes Verzeichnis mit Optionen zu durchsuchen:

  1. Öffnen Sie ein Terminalfenster
  2. Führen Sie den Befehl aus:

    dconf watch /
  3. Nehmen Sie Ihre Änderungen vor und sehen Sie, was das Terminal anzeigt:

    Bildbeschreibung hier eingeben

    ... und da bist du.

Dconf & gsettings

Im Beispiel sehen Sie die Ausgabe von dconf. Gsettings ist das cli- frontend von dconf. Oft können Sie sowohl einen dconfBefehl als auch einen gsettingsBefehl verwenden. In diesem Fall entweder:

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

oder:

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

Wenn der Schlüssel gsettings jedoch vorhanden ist, wird letzterer als bessere Vorgehensweise angesehen, um die Integrität Ihrer dconfDatenbank zu schützen .

Siehe auch hier und hier .

Jacob Vlijm
quelle
Das ist großartig, danke. Kleine Fragen: (1) Woher weiß ich, ob der gsettings-Schlüssel existiert? (2) Worum geht es bei zwei Befehlszeilenschnittstellen, die in jeder Hinsicht mit dem Benutzer identisch sind? (3) Was ist der Unterschied zwischen dem ersten und dem dritten Ihrer "hier"? Sie sehen für mich wie die gleiche Seite aus.
st01
@ st01 Für (1) können Sie entweder den Befehl gsettings einzeln ausführen, um festzustellen, ob er die Aufgabe erfüllt, oder im dconf-Editor (nicht standardmäßig installiert, aber ein großartiges Tool) überprüfen, ob der Schlüssel gsettings (auch) vorhanden ist. (2) gsettings ist das Cli-Frontend zum Bearbeiten der dconf-Datenbank. Gsettings überprüft auch die Integrität der Datenbank und ist daher der direkten Bearbeitung der Datenbank dconf vorzuziehen. Da gsettings höher ist, ist es allerdings langsamer. (3) Ah, das ist albern :), du hast recht. Wird bearbeiten
Jacob Vlijm
@JacobVlijm vielen Dank! Du hast mein Leben gerettet!!
Marslo
8

Für die meisten Einstellungen können Sie diesen Ansatz verwenden:

  • Exportieren Sie die Liste von gsettingsin eine temporäre Datei:

    gsettings list-recursively > /tmp/gsettings.before
  • Nehmen Sie Ihre Änderungen durch gnome-tweak-tool(oder unity-control-center) vor.

  • Exportieren Sie die Liste von gsettingsin eine andere temporäre Datei:

    gsettings list-recursively > /tmp/gsettings.after
  • Vergleichen Sie die beiden Dateien ( .before und .after ) und stellen Sie die Unterschiede fest:

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

    Oder vergleichen und nur die neuen Werte erhalten ( Quelle ):

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

    Oder vergleichen und erhalten Sie nur die neuen Werte, aber ersetzen Sie den Zeilenanfang mit gsettings set, um eine Liste der Befehle zu erstellen, die direkt in Ihrer Skriptdatei ( Quelle ) gespeichert werden sollen :

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

Sie können alle diese Befehle in einer Zeile ausführen (oder Sie können ein Skript erstellen, um den Prozess zu automatisieren):

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

Die nächste Demo wird in Ubuntu 16.04 erstellt. Ich denke, der Ansatz wird auch innerhalb von 17.10 funktionieren:

Bildbeschreibung hier eingeben


Update: Ich habe gerade einen einfachen Weg in Ubuntu 17.10 gefunden:

Bildbeschreibung hier eingeben

pa4080
quelle
1
Sehr nützlich, danke, ich wusste nicht, dass Sie alle Einstellungen wie diese sichern können.
st01
1
Das ist großartig, vielen Dank! Jetzt kann ich meine alte Konfiguration wiederherstellen, wenn ich in gsettings herumspiele.
Nicholas Stommel