Wie speichere ich GNOME-Einstellungen in einer Datei?

13

Ich speichere meine Konfiguration in einem Git-Repository, um sie später problemlos wiederherzustellen.

Kürzlich bin ich auf ein Problem gestoßen, bei dem die GNOME-Einstellungen mit dem gsettingsBefehl geändert werden mussten .

Gibt es eine Möglichkeit, diese Einstellungen in einer Datei zu speichern, die mit einem Link verknüpft oder an einem von GNOME erwarteten vordefinierten Speicherort kopiert werden kann? Ich würde eine Methode bevorzugen, bei der ich kein Skript schreiben muss, um sie aufzurufen gsettings.

Morgan Courbet
quelle
1
Welche Version von Ubuntu?
Panther
1
Ich benutze 17.10 mit Gnome Shell
Morgan Courbet

Antworten:

13

GNOME-Einstellungen werden im Allgemeinen über die GSettings-API gespeichert, die eine Implementierung der DConf-Spezifikation darstellt. Dadurch werden die Einstellungen in einer Binärdatenbank gespeichert, die beim Anmelden nicht ersetzt werden sollte.

Stattdessen müssen die Einstellungen exportiert und dann erneut geladen werden.

Sie können dconf dump / > dconf-settings.inidie Einstellungen in eine INI-Datei sichern und cat dconf-settings.ini | dconf load /diese Einstellungen dann wieder laden. Sie können die /durch einen bestimmten Pfad ersetzen , um zu begrenzen, welche Einstellungen ausgegeben und geladen werden. Siehe man dconfdort für weitere Details.

Wenn Sie einfach einen einzelnen Schlüssel anstatt ganzer Pfade festlegen möchten, ist es besser, gsettingsdiesen mit gsettings getund gsettings setin einem Skript zu verwenden.

Dobey
quelle
Dies bedeutet, dass die gesamte dconfKonfiguration gespeichert und wiederhergestellt wird, oder? Ich möchte genau das speichern, was ich eigentlich brauche. Kann ich dconf loadden Teil, an dem ich gerade interessiert bin?
Morgan Courbet
@ MorganCourbet das wäre dconf readund dconf write, aber gsettingsist ein bequemer dafür, IMO
muru
@MorganCourbet Mit dconf können Sie sich auf bestimmte Pfade (Einstellungsgruppen, z. B. alle Einstellungen für eine bestimmte App) beschränken. Für bestimmte Einzeleinstellungen ist es jedoch besser, einfach die Befehle gsettings get / set zu verwenden.
Dobey
10

Hier eine kleine Korrektur für "Dobey" -Befehle:

Es ist in Ordnung, alle Donf-Einstellungen wie folgt zu speichern:

dconf dump / > dconf-settings.ini

Aber du musst sie so wiederherstellen! ::

dconf load / < dconf-settings.ini
jokx
quelle
2

Siehe man 7 dconf:

KEY FILES
   To facilitate system configuration with a text editor, dconf can
   populate databases from plain text keyfiles. For any given system
   database, keyfiles can be placed into the /etc/dconf/db/database.d/
   directory. The keyfiles contain groups of settings as follows:

       # Some useful default settings for our site

       [system/proxy/http]
       host='172.16.0.1'
       enabled=true

       [org/gnome/desktop/background]
       picture-uri='file:///usr/local/rupert-corp/company-wallpaper.jpeg'

   After changing keyfiles, the database needs to be updated with the
   dconf(1) tool.

Wenn GNOME nur Einstellungen aus einer Datei ohne Skripterstellung abrufen muss, ist dies möglicherweise der einfachste Weg, für die Erstellung der Schlüsseldatei ist jedoch Administratorzugriff erforderlich.

Die andere Option besteht darin, die binäre dconf-Datenbank selbst zu speichern. Dies ist jedoch keine gute Option für die Verwendung mit Git als Versionskontrolle. Die Datenbank befindet sich normalerweise in $XDG_CONFIG_HOME/dconf(dh ~/.config/dconfstandardmäßig). Siehe Abschnitt auf PROFILESder Manpage.

Die Manpage sagt auch:

   The binary database format that dconf uses by default is not suitable
   for use on NFS, where mmap does not work well. To handle this common
   use case, dconf can be configured to place its binary database in
   XDG_RUNTIME_DIR (which is guaranteed to be local, but non-persistent)
   and synchronize it with a plain text keyfile in the users home
   directory.

Es ist jedoch nicht ganz klar, wie dies ohne Skripterstellung geschehen soll.

muru
quelle
Oh OK, ich habe gerade erfahren, dass dconfes damit zusammenhängt gsettings. In der Tat, wenn die Datenbank binär ist, werde ich diese Methode nicht wählen, um sie auf Git zu verfolgen. Ich denke, die erste Methode ist so ziemlich das, wonach ich suche. Ich werde das so schnell wie möglich ausprobieren. Nach dem Ändern der Schlüsseldateien muss die Datenbank mit dem Tool dconf (1) aktualisiert werden. Bedeutet dies, dass ich dconfeinige Parameter ausführen muss , um meine Änderungen zu berücksichtigen?
Morgan Courbet
@MorganCourbet Ja, dconf compilesiehe zum Beispiel: askubuntu.com/a/875922/158442 Es muss jedoch nur einmal durchgeführt werden.
Muru
1
Die Dateien in /etc/dconfdienen jedoch dazu, die Einstellungen systemweit zu beeinflussen, und eignen sich nicht zum Speichern der Einstellungen eines Benutzers in Git. Dies ist für einen Einzelbenutzercomputer möglicherweise in Ordnung, wirkt sich jedoch auch auf den Anmeldebildschirm und die Gastsitzungen aus. Ich würde diese Methode nicht empfehlen. Das Speichern der binären Datenbank in Git wird ebenfalls nicht empfohlen, da dies ein guter Weg ist, um Daten zu verlieren. Hier ist ein wenig Scripting erforderlich.
Dobey
@dobey angesichts des Falles des OP (Touchpad-Einstellungen, Anzeige eines persönlichen Laptops), der die Sperr- und Anmeldebildschirme beeinflusst, wäre ein Bonus :)
Muru