Jak mogę skryptować ustawienia wprowadzone przez gnome-tweak-tool?

15

Lubię konfigurować rzeczy z poziomu wiersza poleceń, aby po ponownej instalacji systemu operacyjnego uruchomić skrypt i odzyskać preferowaną konfigurację.

Od czasu „aktualizacji” do Ubuntu 17.10, stwierdziłem, że muszę użyć narzędzia gnome-tweak-tool, aby uzyskać niektóre ustawienia tak, jak chcę.

Kiedy znajdę ustawienie w graficznym interfejsie gnome-tweak-tool, jak mogę znaleźć jego tłumaczenie skryptowe?

Na przykład następujące linie ustawień są zgodne z odpowiednimi wpisami na zrzucie ekranu narzędzia gnome-tweak poniżej ...

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"

zrzut ekranu z gnome-tweak-tool ... ale jak ktokolwiek mógł to odgadnąć? A jak na przykład dowiedzieć się, skąd wziąć odpowiednie ustawienia podpowiedzi i antyaliasingu?

st01
źródło
1
TBH Zawsze uciekałem się do przeszukiwania kluczowej przestrzeni, np. gsettings list-recursively | grep -e alias -e hint- chciałbym wiedzieć, czy jest lepszy sposób
steeldriver
Oprócz przeglądania kodu źródłowego lub edytora dconf (lub gsettings bezpośrednio, takich jak @steeldriver), niewiele można zrobić.
muru

Odpowiedzi:

23

Łatwo dowiedz się, co jest ustawione

Zamiast przeszukiwać cały katalog opcji:

  1. Otwórz okno terminala
  2. Uruchom polecenie:

    dconf watch /
  3. Wprowadź zmiany i zobacz, co pokazuje terminal:

    wprowadź opis zdjęcia tutaj

    ... i jesteś.

Dconf i ustawienia

W tym przykładzie widać wynik z dconf. Gsettings to program kliencki do dconf. Wiele razy możesz użyć zarówno dconfpolecenia, jak i gsettingspolecenia. W takim przypadku:

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

lub:

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

Jeśli jednak istnieje klucz gsettings, ten ostatni jest uważany za lepszą praktykę, aby chronić integralność dconfbazy danych.

Zobacz także tutaj i tutaj .

Jacob Vlijm
źródło
To jest wspaniałe, dziękuję. Małe pytania: (1) skąd mam wiedzieć, „czy istnieje klucz ustawień?” (2) Jaki jest sens dwóch interfejsów wiersza poleceń, które pod każdym względem są identyczne z użytkownikiem? (3) jaka jest różnica między pierwszym a trzecim z twojego „tutaj”? Dla mnie wyglądają jak ta sama strona.
st01
@ st01 Dla (1) możesz albo uruchomić polecenie gsettings, aby sprawdzić, czy to działa, albo sprawdzić w edytorze dconf (domyślnie nie instalowanym, ale świetnym narzędziem), jeśli istnieje także klucz gsettings. (2) gsettings to frontend cli do edycji bazy danych dconf. Gsettings sprawdza również integralność bazy danych, dlatego lepiej jest bezpośrednio edytować bazę danych dconf. Ponieważ gsettings jest wyższy poziom, jest jednak wolniejszy. (3) Ach, to głupie :), masz rację. Będzie zmieniać
Jacob Vlijm
@JacobVlijm bardzo dziękuję! Uratowałeś mi życie!!
Marslo
8

W przypadku większości ustawień możesz użyć tego podejścia:

  • Wyeksportuj listę gsettingsdo pliku tymczasowego:

    gsettings list-recursively > /tmp/gsettings.before
  • Wprowadź zmiany przez gnome-tweak-tool(lub unity-control-center);

  • Wyeksportuj listę gsettingsdo innego pliku tymczasowego:

    gsettings list-recursively > /tmp/gsettings.after
  • Porównaj dwa pliki ( przed i po ) i uzyskaj różnice:

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

    Lub porównaj i uzyskaj tylko nowe wartości ( źródło ):

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

    Lub porównaj i uzyskaj tylko nowe wartości, ale zamień początek wierszy na, gsettings setaby przygotować listę poleceń, które mogą być przechowywane bezpośrednio w pliku skryptu ( źródło ):

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

Możesz uruchomić wszystkie te polecenia z jednego wiersza (lub możesz utworzyć skrypt automatyzujący proces):

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

Następne demo jest tworzone w systemie Ubuntu 16.04. Myślę, że to podejście zadziała również w terminie 17.10:

wprowadź opis zdjęcia tutaj


Aktualizacja: Właśnie znalazłem łatwy sposób w Ubuntu 17.10:

wprowadź opis zdjęcia tutaj

pa4080
źródło
1
Bardzo przydatne, dziękuję, nie wiedziałem, że możesz zrzucić wszystkie takie ustawienia.
st01
1
To jest wspaniałe, dziękuję bardzo! Teraz mogę przywrócić moją starą konfigurację, gdy mam problemy z ustawieniami.
Nicholas Stommel,