Linux i ustawienia Dconf. Przejście od menu do konsoli
Systemy na bazie Linuksa to świetna alternatywa dla Windowsa, ale krąży wokół nich parę głupich stereotypów. Jak ten: „Linux jest dla nerdów i trzeba na nim używać konsoli nawet do najprostszych rzeczy”.
To mit. Obecnie istnieje wiele przyjaznych systemów na bazie Linuksa (jak choćby Linux Mint), które pozwalają zmieniać większość ustawień przez przystępne, uporządkowane menu graficzne.
Nie jest natomiast mitem, że konsola ułatwia życie. Pozwala osiągnąć w sekundę to, co wymagałoby paru minut klikania w menu. Dlatego staram się pokazywać obie metody, graficzną i konsolową, obok siebie. Jak we wpisie o ustawianiu języka polskiego.
Tak będzie również tutaj. Pokażę, jak ustalić komendy konsolowe odpowiadające ustawieniom z menu (a przynajmniej tym, które są zapisywane w systemowej bazie).
W ten sposób mam nadzieję podarować czytelni(-cz)kom uniwersalny sposób na dostosowanie systemu pod siebie.
Będzie prosto i przystępnie. Nie trzeba znać konsoli, wystarczy gotowość do czytania (nie taka oczywistość w dobie TikToka!) i kopiowania podsuwanych przeze mnie poleceń.
Zrzuty ekranu z tego wpisu pochodzą z minimalistycznego systemu PorteuX. Na innych, popularniejszych Linuksach interfejs będzie wyglądał inaczej/lepiej.
Jeśli ktoś czyta na wąskim ekranie, to część kodu nie zmieści się na szerokość. Ciemne pola można w takim wypadku przewijać w poziomie.
Konsola i Dconf – pierwsze kroki
Wpis kręci się wokół konsoli, zwanej też Terminalem, więc można zacząć od jej uruchomienia ![]()
W tym celu można kliknąć ikonę z paska (powiedziałbym „dolnego”, ale na niektórych Linuksach jest domyślnie boczny). Taką czarną, nieraz z dolarkiem w rogu. Często działa też skrót klawiszowy Ctrl+Alt+T.
Pojawi się okno z nazwą użytkownika i migającym kursorem. Można tu wpisywać polecenia dla komputera, a ten będzie je wykonywał.
Proponuję najpierw zobaczyć, czy nasz system ma w ogóle ustawienia w formacie pasującym do tego samouczka.
W tym celu trzeba wpisać w konsolę:
dconf
Następnie należy nacisnąć Enter.
Jeśli pojawi się tekst zaczynający się od takich linijek:
…To znaczy, że nasz Linux ma Dconfa, centralną bazę ustawień
Wszystko OK, można jechać dalej.
Jeśli wyskoczy informacja, że polecenie dconf jest nieznane, to znaczy że Dconfa niestety nie mamy. Przykro mi! Ale nadal zapraszam do doczytania samouczka, bo parę rzeczy będzie uniwersalnych.
Domyślnie do konsoli wkleja się rzeczy skrótem Ctrl+Shift+V, a kopiuje przez Ctrl+Shift+C. Sporo osób się na tym nacina.
Osoby bardziej myszkowe będą miały łatwiej; po kliknięciu obszaru konsoli prawym przyciskiem myszy, mogą po prostu wybrać opcję kopiowania/wklejania z menu.
O programie Dconf
Każdy pstryczek, jaki da się zmieniać przez czytelne menu, ma jakiś swój zakulisowy odpowiednik. Zapewne jakiś plik, w którym znajduje się etykieta, zaś obok niej – wartość.
Programy wczytują te ustawienia i zmieniają na ich podstawie swoje zachowanie.
W dawnych czasach niemal każdy program trzymał własne pliki z ustawieniami. Ale było to nieporęczne, więc niektórzy twórcy Linuksów pokusili się o standaryzację.
Tak powstał Dconf – centralna baza z ustawieniami. Coś w stylu rejestru Windowsa, ale prostsze i pod wieloma względami czytelniejsze.
Nie każdy program korzysta z tej bazy, nawet jeśli jest dostępna. Przykładowo duże i niezależne, jak Firefox, raczej zarządzają własnymi ustawieniami i nie integrują się z systemem.
Jest natomiast spora szansa, że jeśli mamy Dconfa, to korzystają z niego programy systemowe. Wszelkiej maści menu od sterowania zasilaniem, systemowymi skrótami klawiszowymi, zachowaniem myszki…
Takie programy można łatwo kontrolować, „rozmawiając” przez konsolę bezpośrednio z Dconfem. Ale jakich słów użyć? Już pokazuję, jak się tego dowiedzieć.
Co się zmieniło?
Jestem wielkim fanem praktycznych przykładów, dlatego oprę ten wpis na własnej historii. Użyję Dconfa do zmiany ustawienia zasilania.
Kontekst? Domyślnie mój laptop na Porteuksie MATE miał włączone przyciemnianie ekranu, kiedy zaczynał ciągnąć prąd z baterii zamiast z kabla. Miało to zaletę (możliwość dłuższego korzystania), ale czasem irytowało.
Postanowiłem stworzyć sobie skrypt, który wyłącza mi na życzenie tryb oszczędny.
Gdybym chciał zmienić ustawienie metodą klasyczną, to kliknąłbym w ikonę na pasku, wybrał zakładkę System, potem Preferences, Hardware i Power Management.
W otwartym w ten sposób menu wszedłbym w zakładkę On Battery Power i zmienił tam opcję odpowiedzialną za przyciemnianie.

Fakt, przed jakim stałem: „gdy kliknę tę opcję, coś się zmieni na poziomie pierwotnym”. Założenie: to może być zmiana wewnątrz Dconfa.
Skoro zmiana i skoro Dconf, to zarysowało się rozwiązanie – porównać stan Dconfa przed zmianą ze stanem po zmianie.
Najpierw stan przed zmianą. Mam okno z ustawieniami pod ręką, opcję jeszcze niewyłączoną. Przechodzę do konsoli i robię zrzut wszystkich ustawień Dconfa do pliku:
dconf dump / > dc1
Omówienie komendy
Zacznę od rzeczy przed strzałką. Ogólnie mamy tu dconf dump ŚCIEŻKA, gdzie dconf to program nadrzędny, dump to jego podprogram. Całość mówi „zrób zrzut tej części bazy”, albo inaczej: „pokaż mi wszystkie ustawienia, jakie masz w tym miejscu”.
„To miejsce”, czyli ŚCIEŻKA, odwołuje się do hierarchii wewnątrz Dconfa. Wstawiając tu sam ukośnik (/), wskazuję, żeby zacząć zrzut od samej góry. Czyli w praktyce mówię: „zrób zrzut wszystkich ustawień”.
Normalnie ustawienia te wyświetliłyby się w konsoli. Ale dzięki strzałce (>) trafią zamiast tego do pliku o nazwie wskazanej po jej prawej stronie.
Z kolei dc1 to czysto subiektywna nazwa pliku, do którego chcę zapisać zrzut. Na Linuksie nie trzeba dodawać końcówki w stylu .txt. I tak wyjdzie plik tekstowy, a do tego bez końcówki będzie można łatwiej edytować nazwę w kolejnym punkcie.
Po wykonaniu zrzutu wracam do graficznego menu. Odznaczam tam niechcianą opcję – ustawiam, żeby nie przyciemniało ekranu. Mogę też zamknąć menu graficzne, nie będzie mi potrzebne.
Teraz czas na kolejny zrzut przez konsolę (ważne: do pliku o innej nazwie niż poprzednio!).
dconf dump / > dc2
Zamiast wpisywać wszystko od nowa, można nacisnąć wewnątrz konsoli klawisz ze strzałką w górę. W ten sposób wstawi się poprzednio użyta komenda. Wystarczy teraz zmienić nazwę pliku wyjściowego, zmieniając ostatnią cyfrę.
Potem porównanie zrzutów. W roli porównywacza program diff (od difference):
diff dc1 dc2
Powinna pojawić się linijka w tym stylu:
Liczba u góry nie ma większego znaczenia; liczą się linijki rozpoczynające się od strzałek.
Czy to tego szukałem? Trzeba się zdać na znajomość angielskiego.
Jest battery, idle to bezczynność, dim to przyciemnianie. Wartość false – czyli przyciemnienie zostało zapewne wyłączone. Pasuje idealnie!
Gdyby pokazały się inne rzeczy
Jeśli po użyciu polecenia diff nic się nie pokazało, to znaczy że nasza zmiana wykonana przez klikanie menu nie pociągnęła za sobą zmian w Dconfie. Zapewne badany program zapisuje ustawienia gdzie indziej.
Ustalenie miejsca, w którym to robi, może być ciutkę bardziej upierdliwe, ale nadal do przeżycia. W takim wypadku zapraszam do miniwpisu o programie strace.
Czasem, jeśli zmiana opcji stworzyła nową kategorię, oprócz linijki z wartością pojawi się ścieżka zawierająca ukośniki i nawiasy kwadratowe po bokach; na razie można się nią nie przejmować, jeszcze o niej wspomnę.
Czasem może się też pojawić więcej linijek, które niekoniecznie dotyczą naszego ustawienia.
Przykładowo: jeśli niektóre sugerują coś związanego z rozmiarem lub ustawieniem okien (jak np. size=(1002, 716)), to można je zignorować. Wynikają zapewne z tego, że między zrzutami ustawień lekko zmieniliśmy rozmiar okna. A Dconf zapamiętuje nawet takie detale.
To dlatego gorąco radzę, żeby zrobić zrzut tuż przed zmianą i tuż po niej, nie ruszając niczego innego. Będzie mniej szumu w danych.
Ustalenie pełnej ścieżki
Znamy nazwę i wartość nowego ustawienia. To już o krok od sukcesu… Tylko że to tak, jakbyśmy ustalili, jakie konkretne słowa powiedzieć konkretnemu człowiekowi. A nie wiemy, pod jakim adresem go znaleźć.
Przed nami jeszcze ustalenie kategorii (ścieżki wewnątrz Dconfa).
W praktyce: chcemy znaleźć pierwszy tekst w nawiasach kwadratowych nad nowo dodanym ustawieniem.
Można to zrobić przez dopisanie do komendy porównującej pliki argumentu -U 10. Wyśwetli on wtedy kontekst: po 10 linijek przed zmianą i po zmianie:
diff -U 10 dc1 dc2
Jedziemy wzrokiem od nazwy ustawienia (idle-dim-battery) w górę. Jeśli nie widać jeszcze niczego z nawiasami kwadratowymi – to trzeba poszerzyć kontekst, zwiększając liczbę linijek.
W końcu naszym oczom powinna się ukazać pełna ścieżka do zmienionego ustawienia. Zaznaczyłem na czerwono ją oraz ustawienie, od którego wyszliśmy:
[org/mate/power-manager]
...inne linijki...
icon-policy='always'
+idle-dim-battery=false
sleep-computer-ac=1800
sleep-display-ac=600
[org/mate/screenshot]
border-effect='none'
Sposób alternatywny
Jeśli podgląd przez program diff nie do końca nam pasuje, to można też otworzyć zrzut numer dwa w programie less:
less dc2
Potem można nacisnąć ukośnik (/) (żeby przejść w tryb wyszukiwania) i wkleić po nim charakterystyczny fragment znalezionej nazwy ustawienia. Tu na przykład idle-dim.
Potem można przewinąć ekran myszą albo strzałką w górę, aż pokaże się pełna ścieżka.
Żeby wyjść z tego podglądu, należy nacisnąć Q (niejedna osoba pozostała uwięziona wewnątrz lessa!).
Przekształcenie na polecenie konsolowe
Mając pełną ścieżkę, nazwę i wartość ustawienia, stoimy przed taką konstrukcją:
...
idle-dim-battery=false
Kolory dodałem dla czytelności, w konsoli oczywiście paleta jest biało-czarna.
Można to teraz przekształcić na bezpośrednie polecenie dla Dconfa, każące mu ustawić konkretną wartość. Jego ogólna postać jest taka:
dconf write /ŚCIEŻKA/NAZWA WARTOŚĆ
Mogę kopiować fragmenty tekstu ze zrzutu Dconfa i wklejać je do jakiegoś osobnego pliku tekstowego, dopisując parę znaków ręcznie. Stopniowo ułoży mi się komenda.
Efekt końcowy:
dconf write /org/mate/power-manager/idle-dim-battery false
Użycie tej linijki wewnątrz konsoli albo skryptu konsolowego pozwoli osiągnąć w sekundę ten sam efekt co dłuższe klikanie w menu.
Można ją sobie zapisać w bezpiecznym miejscu.
Na co uważać
Tutaj było łatwo, bo ustawiałem tylko prostą wartość false (zmienną zero-jedynkową). Pewne niuanse pojawiają się, kiedy wartością jest tekst (otoczony cudzysłowami) albo lista (między nawiasami kwadratowymi; nie mylić z tymi w ścieżce Dconfa z przykładu).
Co zrobić przy innych wartościach
Jeśli wartością jest tekst między cudzysłowami pojedynczymi, to należy otoczyć go dodatkowo cudzysłowami podwójnymi.
Czyli na przykład ustawienie z Dconfa:
button-power='shutdown'
wyglądałoby w skrypcie tak:
button-power "'shutdown'".
Dlaczego tak jest? Bo końcowy Dconf musi otrzymać dokładnie to, co wyświetla się w zrzucie ustawień. Czyli tutaj: tekst otoczony cudzysłowami.
A podajemy mu ten tekst przez konsolę, która robi po drodze różne przekształcenia i usuwa najbardziej zewnętrzną parę cudzysłowów (jeśli jakaś jest).
Użycie dwóch par pozwala sprostać tym ograniczeniom. Konsola zerwie sobie jedną, druga zostanie dla Dconfa.
A dlaczego używam różnych rodzajów cudzysłowów? Bo gdybym dał pojedyncze i na zewnątrz, i w środku (''shutdown''), to podczas przetwarzania dane zaczęłyby być traktowane jak tekst po ' otwierającym, a przestały nim być po napotkaniu drugiego. To doprowadziłoby do różnorakich błędów.
Analogicznie przy listach w nawiasach. Przy takiej liście:
['windowmanager', 'panel', 'filemanager']
…Nie trzeba się skupiać na cudzysłowach pojedynczych wewnątrz niej. Wystarczy jedna para podwójnych. Na początku i na końcu. Konsola je obedrze, a do Dconfa trafi dokładnie to, co w polu wyżej.
"['windowmanager', 'panel', 'filemanager']"
Poza tym jest też kwestia tego, kiedy warto zmieniać Dconfa przez konsolę.
Przykład pozytywny? Proste, jednorazowe opcje. Gdy na przykład chcemy sobie zrobić prowizoryczny przełącznik między dwoma trybami, z których każdy ma inne ustawienia (zostawiam waszej kreatywności).
Przykład negatywny? Nie polecam dodawania ikon na pasku przez bezpośrednie zmiany Dconfa.
To dlatego, że reguły ich dodawania są ciut bardziej złożone – ikony są numerowane i ma spore znaczenie, co było dodawane pierwsze, ile ikon mamy obecnie itd.
Gdyby skrypt mówił zawsze i niezmiennie: „dodaj skrót do narzędzia X w czwartej zakładce” – to mógłby coś popsuć, gdyby nasz pasek został w jakikolwiek sposób zmieniony względem stanu domyślnego.
Bonus: przykład praktyczny
Osobiście wkręciłem się w używanie systemów w trybie live. Oznacza to, że za każdym razem ładuję z pendrive’a nowy, świeży system z domyślnymi ustawieniami. Taki jak wspomniany już PorteuX w wersji MATE.
A że parę jego domyślnych ustawień wybitnie mi nie leży, to lubię je każdorazowo zmieniać. Gdybym musiał to ciągle robić przez menu graficzne, to bym chyba osiwiał.
Ale dzięki istnieniu sposobu konsolowego po prostu podpatrzyłem, co się zmienia wewnątrz Dconfa. I stworzyłem skrypt, który wydaje mu bezpośrednie polecenia.
Fragment mojego skryptu
# Kierunek przewijania touchpada w stylu smartfona, nie kółka myszy
dconf write /org/mate/desktop/peripherals/touchpad/natural-scroll true
# Otwieranie konsoli kombinacją Ctrl+Alt+T
dconf write /org/mate/marco/global-keybindings/run-command-terminal "'<Primary><Alt>t'"
# Brak przyciemniania ekranu przy zasilaniu z baterii
dconf write /org/mate/power-manager/backlight-battery-reduce false
dconf write /org/mate/power-manager/idle-dim-battery false
Dzięki temu mogę nosić ze sobą znajome środowisko, nawet jeśli za każdym razem ładuję świeży system. Parę dodatkowych sekund – i wszystko ustawia się pode mnie.
Polecam takie życie. To jak każdorazowe resetowanie mieszkania do stanu surowego, po czym teleportowanie do niego sprawdzonych sprzętów ![]()
Wpis jest częścią wielkiej fali poradników ułatwiających przechodzenie na Linuksa. To rodzina systemów znacznie bardziej szanujących użytkowników niz Windows. Ma teraz niepowtarzalną okazję, żeby się przebić i zjednać sobie szersze grono.
Jeśli ktoś chce dać głębszego nura w odkrywanie, co się dzieje w ustawieniach pod powierzchnią, to polecam wpis na temat języka na Mincie MATE. Ostatecznie kończę tam na Dconfie, ale jest przy okazji cała ścieżka rozumowania, która pomogłaby też przy innych plikach z ustawieniami.
Mam też wpis, w którym próbuję tego samego na Mincie Cinnamonie, ale bezskutecznie. W końcu cały czas się uczę ![]()