Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

KDE, Gnome, Windowmanager, X11, Grafiktreiber und alles was dazu notwendig ist. Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von inne » 29.04.2017 10:24:57

Hallo,

laut https://developer.gnome.org/dconf/unsta ... rview.html, sollte in $XDG_CONFIG_HOME/dconf/user.txt die DConf Datenbank/Registry als INI-Datei abgebildet werden können. Wenn ich das richtig verstanden habe.

Aber wie richtet man das ein?

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 29.04.2017 11:36:09

Da hast du aber etwas interessantes gefunden. Ich verstehe es so, dass man in »/etc/dconf/profile/user« eine Zeile

Code: Alles auswählen

service-db:keyfile/user
eintragen muss, damit die Einstellungen in beide Richtungen mit dieser Textdatei synchronisiert werden. In debian gibt es allerdings nicht einmal dieses Verzeichnis.
Die unpraktische binäre Datenbank wird dann zwar trotzdem erzeugt, aber landet wohl im tmpfs unter »/var/run/user/…«, dh sie wird bei jeder Anmeldung neu mit den Einstellungen aus »$XDG_CONFIG_HOME/dconf/user.txt« erzeugt.


Das einzige was ich auf meinem System gefunden habe ist ein "dconf-Profil" für gdm »/usr/share/dconf/profile/gdm«, das insofern interessant ist, weil dort ein Eintrag existiert, dank dem dconf-Einstellungen auch aus der Textdatei »/var/lib/gdm3/greeter-dconf-defaults« gelesen werden, die - so vermute ich zumindestens - wiederum aus der »/etc/gdm3/greeter.dconf-defaults« generiert wird.

Wenn es also nichts hilft »/etc/dconf/profile/user« anzulegen, kann man immer noch versuchen »/usr/share/dconf/profile/user« anzulegen oder DCONF_PROFILE zu setzen, sodass es auf eine existierende Datei mit dieser Zeile zeigt.

Ich glaube ich werde das ausprobieren, nachdem ich mein ~ gesichert habe...

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von inne » 29.04.2017 12:13:03

smutbert hat geschrieben:Ich glaube ich werde das ausprobieren, nachdem ich mein ~ gesichert habe...
Tu das mal bitte!

Ich hatte folgendes probiert – was aber nicht funktioniert hat.

Code: Alles auswählen

export DCONF_PROFILE=~/.config/dconf/user # default

cat ~/.config/dconf/profile
user-db:user
service-db:keyfile/user

touch ~/.config/dconf/user.txt
Es wurde auch ein ~/.config/dconf/user.txt-lock erzeugt. Aber weder wurden Einstellungen die ich mit dconf-editor gesetz habe in die Datei eingetragen, noch wurden daraus Einstellungen übernommen :-/

// Es muss wohl export DCONF_PROFILE=~/.config/dconf/profile gestetzt werden. Das sehe ich jetzt erst... Mal probieren...

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 29.04.2017 12:48:54

Also was du gemacht hast kommt mir etwas unglücklich vor:
»DCONF_PROFILE=~/.config/dconf/user« ist genau die Datei, in der dconf normalerweise die binäre Datenbank speichert, aber DCONF-PROFILE soltle ja entweder nur der Name eines Profils wie gdm oder user (der default) sein oder eben der Pfad zu einer Textkonfigurationsdatei, die ein Profil definiert wie es zB »/usr/share/dconf/profile/gdm« tut.

Außerdem würde ich in das Profil ausschließlich die Zeile

Code: Alles auswählen

service-db:keyfile/user
schreiben - laut deinem Eingangslink wird die binäre Datenbank dann ohnehin trotzdem angelegt.

Und drittens wo setzt du die Umgebungsvariable denn überhaupt?
Ich vermute die sollte gesetzt werden bevor der dconf-Dienst (vmtl. »/usr/lib/dconf/dconf-service« aus Debiandconf-service) gestartet wird. Ich weiß aber gar nicht wie oder wovon genau das Ding gestartet wird. Wenn du es also über die Umgebungsvariable testen willst, dann würde ich vermutlich als erstes versuchen sie über ~/.profile oder ~/.xessionrc zu setzen.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von inne » 29.04.2017 12:53:29

Da setze ich die auch. Neben der Gnome-Doku habe ich das hier gefunden als Beispiel:

https://github.com/cpatulea/dotfiles/tr ... nfig/dconf
https://github.com/cpatulea/dotfiles/bl ... er/.bashrc (ganz unten)

Ich gehe davon aus, dass da jemand was funktionierendes festgehalten hat.

Neue Schlüssel bzw. eigene werden so auch aus der user.txt in die DB übernommen und andersherum. Aber mit existierenden funktioniert das iwie nicht.

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 29.04.2017 13:25:52

inne hat geschrieben:[…]Aber mit existierenden funktioniert das iwie nicht.
Du meinst welche, die vor der Änderung schon in der Datenbank, also in »~/.config/dconf/user« waren?

Das geht auch schlecht anders, weil er mit dieser Textdatei, ja eine frische binäre Datenbank mit dem Inhalt der Textdatei anlegt (user.txt) füllt und in der steht ja noch nichts drin. Man fängt also sozusagen zwangsweise bei 0 an.

Da müsste man den Inhalt der Original-dconf-Datenbank wohl selbst hineinschreiben. Damit denke ich sollte man alle Einstellungen erhalten

Code: Alles auswählen

$ dconf dump /
aber man kann das auch auf den Inhalt einer bestimmten Datei beschränken. Ich versuche es gerade so

Code: Alles auswählen

$ cp ~/.config/dconf/user ~/.config/dconf/old-dconf-db
$ echo "user-db:old-dconf-db" > ~/profile-old-dconf-db
$ DCONF_PROFILE=~/profile-old-dconf-db dconf dump /
Das Ergebnis ist hier allerdings bei beiden Varianten dasselbe.
Unabhängig davon hilft dir das aber nur weiter, wenn du deine originale dconf-Benutzerdatenbank »~/.config/dconf/user« nicht schon irgendwie überschrieben hast.

Vor lauter Schreiben komme ich aber gar nicht dazu das ganze Auszuprobieren... ich melde mich erst wieder, wenn ich es bei mir versucht habe.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von inne » 29.04.2017 18:32:59

Hast du nun was hin-bekommen?

Ich bin soweit, das ich Änderungen in user.txt und dconf-editor vornehmen kann und die auch synchron gehalten werden. Aber wenn ich als Beispiel diese Schlüssel ändere:
$ cat user.txt
[org/gnome/nautilus/desktop]
network-icon-visible=true
home-icon-visible=true

[org/gnome/desktop/background]
show-desktop-icons=true

Dann werden die Werte zwar entsprechen gesetzt, aber die Änderung passiert nicht im System. Selbst nach Neu-Anmeldung werden die Änderungen nicht angewandt. Erst wenn ich die Werte mit dconf-editor (neu)-setze werden die Änderungen auch im System angewendet. Das verstehe ich nicht.

Also ich setze bspw. /org/gnome/desktop/background/show-desktop-icons=true oder false in user.txt, dann wird das auch zeitgleich im dconf-editor geändert aber nicht umgesetzt. Anders wenn ich den Schlüssel mit dconf-editor setze. Dann wird user.txt aktualisiert und auch die Änderung im System übernommen.

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 29.04.2017 22:00:32

Bei mir läufts perfekt - ich hab:
  • Meine dconf Datenbank direkt nach user.txt gesichert und das Original gelöscht damit ich sicher sein kann woher die Einstellungen kommen und wohin sie gespeichert werden

    Code: Alles auswählen

    $ dconf dump / > ~/.config/dconf/user.txt
    $ rm ~/.config/dconf/user
    
  • »/etc/dconf/profile/user« angelegt mit dem Inhalt

    Code: Alles auswählen

    service-db:keyfile/user
    
  • das System neu gestartet damit ich sicher sein kann, dass keine Prozesse mehr mit dem alten user-Profil von dconf laufen.
Getestet habe ich es dann unter Gnome mit dem gtk3-Theme (gtk-theme)

Code: Alles auswählen

...

[org/gnome/desktop/interface]
gtk-im-module='gtk-im-context-simple'
icon-theme='Faenza-Darker'
gtk-theme='Arc-Darker'

...
Das konnte ich in den Gnome-Einstellungen und mit dconf-editor ändern und die Änderung war sofort in der user.txt sichtbar, genauso konnte ich mit einem Texteditor das Theme ändern und die gtk3-Anwendungen haben sofort ihr Aussehen geändert.

Was ich mir bei dir vorstellen könnte ist, dass entweder aus irgendeinem Grund nicht alle Anwendungen dein angepasstes dconf-user-Profil verwenden - bei nautilus zB hat das Starten irgendetwas mit dbus zu tun und das hat bereits einmal verhindert, dass ich eine Umgebungsvariable vor dem Start von nautilus setzen konnte - erst nach dem Entfernen von »DBusActivatable=true« aus der entsprechenden .desktop-Datei hat es funktoiniert oder dass deine zusätzlich Zeile »user-db:user« irgendwie für unerwartetes Verhalten sorgt.

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 15.06.2017 11:07:39

Perfekt ist es dann doch nicht. Es funktioniert zwar alles, aber in einigen Situationen reagiert die grafische Oberfläche mit diesen Änderungen spürbar langsamer.

So schön ich es also auch finde, dass die Einstellungen in einer Textdatei vorliegen, habe ich die Änderung wieder rückgängig gemacht.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von inne » 15.06.2017 13:42:49

smutbert hat geschrieben:Es funktioniert zwar alles, aber in einigen Situationen reagiert die grafische Oberfläche mit diesen Änderungen spürbar langsamer.
Da ist mir noch nichts aufgefallen.. Kannst du ein konkretes Beispiel benennen?

Code: Alles auswählen

$ wc .config/dconf/user.txt
  87   80 1846 .config/dconf/user.txt

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 15.06.2017 13:50:51

Ein konkretes Beispiel wäre das Eingeben von Adressen oder Suchbegriffen in die Adresszeile des gnome-Browsers. Dabei sind die Denkpausen besonders lästig, aber auch mit dem Texteditor (gedit) habe ich manchmal Verzögerungen gespürt.

Es könnte aber auch an meiner Wahl des Dateisystems (btrfs) liegen...

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie funktioniert $XDG_CONFIG_HOME/dconf/user.txt

Beitrag von smutbert » 25.06.2017 17:57:18

Ok. es hat wohl doch nichts mit der in der Textdatei gespeicherten dconf-Konfiguration zu tun. Ich weiß zwar nicht woran meine Verzögerungen liegen, aber jedenfalls nicht an dconf...

Antworten