W tym artykule chciałbym przybliżyć wam funkcje, budowę i zastosowanie narzędzia Gconf. Gconf jest krótko mówiąc systemem przechowywania preferencji różnych programów jak również samego środowiska graficznego wbudowanym w GNOME 2.
Jego poprzednikiem był gnome-config. Był to bardzo prosty system konfiguracji wykorzystujący pliki .INI. Takie rozwiązanie sprawdzało się tylko przy małych aplikacjach, dlatego już w GNOME 1.4 wprowadzono system gconf, aczkolwiek dopiero w wersji 2 zaczęto wykorzystywać nowy system na szeroką skalę. W budowie jest on troszkę podobny do rejestru systemu Windows, jednak podobieństwo jest małe i najwięcej wspólnego mają graficzne interfejsy do zarządzania kluczami.
Budowa
Wszystkie dane przechowywane są w plikach XML, które znajdują się w odpowiednich katalogach. Ustawienia pobierania są najpierw w trybie tylko do odczytu (gdy nie jesteśmy superużytkownikiem, tak zwanym rootem) z pliku /etc/gconf/gconf.xml.mandatory. Znajdują się tam siłowe, wymuszone ustawienia dla wszystkich użytkowników (słowo „mandatory” w języku angielskim oznacza „obowiązkowy”). Ustawień tych (na wszelki wypadek) nie można zmienić ani usunąć. W następnej kolejności przetwarzany jest plik $(HOME)/.gconf ( $HOME to zmienna środowiskowa oznaczająca ścieżkę do naszego folderu domowego) już w trybie do odczytu i zapisu. Na samym końcu dodawane są wartości domyślne z pliku etc/gconf/gconf.xml.defaults. Są one, tak samo jak wartości obowiązkowe, dla zwykłego użytkownika ładowane w trybie tylko do odczytu, a ich wartość zmienić może jedynie root.
Klucze podzielone są na katalogi lecz te w odróżnieniu od „regedita” mają bardzo intuicyjne nazewnictwo. Łatwo się domyśleć, że w gałęzi /apps znajdują się dane aplikacji, natomiast /system to informacje o systemie. Każdy klucz ma swój schemat, który zawiera skrócony oraz pełny opis klucza, jego domyślną wartość oraz typ wartości (int, string itp). Jest to swego rodzaju dokumentacja, bardzo przydatna dla administratorów.
Zarządzanie w trybie tekstowym
Gconftool jest narzędziem do tekstowego zarządzania gconfem. Pozwala m.in. na pobieranie, modyfikowanie i usuwanie zarówno kluczy jak i ich wartości, instalacje schematów. Przykładowo, aby pobrać informacje o naszym motywie ikon, wydamy polecenie gconftool-2 -g /desktop/gnome/interface/icon_theme. Możemy też zmienić tapetę – gconftool-2 -t string -s /desktop/gnome/background/picture_filename /scieżka/do/tapety. Oczywiście opcji i możliwości jest dużo, aby je poznać najlepiej zapoznać się z manualem do programu gconftool-2 (man gconftool-2).
W trybie graficznym
Gconf-editor to nakładka graficzna na narzędzie gconftool. Dzięki „edytorowi konfiguracji” możemy łatwo zmieniać wartości kluczy bez wpisywania długich komend do terminala.
Gdy uruchomimy narzędzie gconf-editor na koncie administratora lub poprzez sudo gconf-editor, będziemy mogli ustawić wartości obowiązkowe oraz zmienić wartości domyślne. Aby dokonać tego niebezpiecznego czynu (nie polecam zbyt dużej zabawy z domyślnymi ustawieniami…), należy po uruchomieniu edytora konfiguracji z menu „Plik” wybrać „nowe okno ustawień obowiązujących” (lub użyć skrótu klawiszowego CTRL+M”) lub „nowe okno ustawień domyślnych” (albo CTRL+D na klawiaturze).
Tanie triki na GNOMiki ;)
Gconf-editor pozwala jak żadne inne narzędzie modyfikować system wedle własnego uznania. Poniższa tabela to ciekawy spis kluczy, których modyfikacja może dać ciekawe efekty…
| klucz/gałąź | opis i sugestie |
|---|---|
| /apps/notification-daemon/popup_location | Położenie „dymku informacyjnego”. Możliwe wartości to „top_left”,”top_right”,”bottom_left” and „bottom_right” |
| /desktop/gnome/volume_manager/autoipod_command | polecenie wykonywane automatycznie po podłączeniu iPoda (zwykłego odtwarzacza mp3 firmy noname również), domyślnie uruchamiany jest rhythmbox (odtwarzacz audio). Ciekawym rozwiązaniem byłaby synchronizacja danych pomiędzy katalogiem z muzyką a odtwarzaczem muzyki |
| /desktop/gnome/url-handlers/ | W tej gałęzi przechowywane są „łapacze linków” (dziwna nazwa, ale zgadza się z funkcją). Przykładowo gdy /desktop/gnome/url-handlers/gg/command ma wartość gaim-url-handler "%s", to po kliknięciu na link gg:2813235 zostanie uruchomiony komunikator gaim z oknem rozmowy z numerem 2813235… Każda podgałąź gałęzi musi zawierać 3 klucze – command (komenda), enabled (włączony lub wyłączony) oraz needs_terminal (polecenie uruchamiane w terminalu) |
| /apps/nautilus/desktop/computer_icon_visible | Określa czy ikona „Komputer” ma się znajdować na pulpicie. |
| /apps/nautilus/desktop/*_icon_visible | Jak wyżej, analogicznie postępujemy wstawiając w miejsce gwiazdki wyraz home (folder domowy), documents (dokumenty), network (sieć) lub trash (kosz) |
| /apps/nautilus/desktop/computer_icon_name | Alternatywna nazwa dla ikonki Komputer |
| apps/nautilus/desktop/*_icon_name | Jak wyżej, analogicznie postępujemy wstawiając w miejsce gwiazdki wyraz home (folder domowy), documents (dokumenty), network (sieć) lub trash (kosz) |
| /apps/nautilus/desktop/volumes_visible | Określa czy ikonka urządzenia ma być automatycznie dodawana do pulpitu. |
| /apps/nautilus/preferences/confirm_trash | Jeśli odznaczymy, to nie będzie potrzeby potwierdzania każdej operacji przeniesienia pliku do kosza |
| /apps/nautilus/preferences/show_desktop | Możemy wyłączyć pokazywanie ikon :] |
| /apps/nautilus/icon_view/captions | Lista podpisów pod ikoną w widoku ikon lub na pulpicie. Ilość wyświetlanych podpisów zależy od stopnia powiększenia. Dopuszczalne wartości to: „size”, „type”, „date_modified”, „date_changed”, „date_accessed”, „owner”, „group”, „permissions”, „octal_permissions” i „mime_type”. |
| /apps/gnome-session/options/show_splash_screen | Jeżeli odhaczymy, to nie będzie wyświetlany ekran powitalny |
| /apps/nautilus/preferences/executable_text_activation | Co robić w wykonywalnymi plikami tekstowymi kiedy są aktywowane (pojedynczym lub podwójnym kliknięciem). Dopuszczalne wartości: „launch” – uruchomienie jako program, „ask” – pytanie co zrobić poprzez okno dialogowe, „display” – wyświetlanie jako pliki tekstowe. |
| /apps/nautilus/preferences/desktop_is_home_dir | Określa, czy Nautilus użyje katalogu domowego użytkownika jako pulpitu. Jeżeli nie, wówczas jako pulpit użyty zostanie katalog ~/Desktop. |
| /apps/gnome-screenshot/include_border | Dołączanie do zrzutu ekranu ramki menedżera okien |
| /apps/gnome-screenshot/border_effect | Efekt dodawany do zewnętrznej części krawędzi przy robieniu zrzutu ekranu korzystając z domyślnego narzędzia GNOME. Dopuszczalne wartości to „shadow” (cień), „none” (brak) oraz „border”. |
Przykład zastosowania
Na koniec wykorzystamy w praktyce istnienie gconfa. Poniższy skrypt został napisany w bashu, do poprawnego działania potrzebuje programów zenity i scrot [ten pierwszy jest domyślnie zainstalowany w Ubuntu, ten drugi musiałem zainstalować (sudo apt-get install scrot)]. Scrot to świetna aplikacja konsolowa do tworzenia zrzutów ekranu, a zenity to program do wyświetlania graficznych okienek z ustaloną przez nas zawartością. Skrypt wyświetla informacje o motywie ikon/GTK/Metacity oraz o czcionce GTK/Metacity po czym robi zrzut ekranu.
#!/bin/bash
ikony=`gconftool-2 -g /desktop/gnome/interface/icon_theme`
motyw_gtk=`gconftool-2 -g /desktop/gnome/interface/gtk_theme`
motyw_metacity=`gconftool-2 -g /apps/metacity/general/theme`
czcionka_gtk=`gconftool-2 -g /desktop/gnome/interface/font_name`
czcionka_meta=`gconftool-2 -g /apps/metacity/general/titlebar_font`
scrot %Y-%m-%d.png -q100 -d 1&
zenity --info --text "
ikony : $ikony
motyw GTK :$motyw_gtk
motyw metacity :$motyw_metacity
czcionka gtk: $czcionka_gtk
czcionka metacity :$czcionka_meta
A teraz uśmiechnij się do zdjęcia ;)
"
Efekt końcowy wygląda mniej więcej tak:

Rys. 2 Robimy zrzut ekranu, trochę mniej standardowo
Zachęcamy do zamieszczania w komentarzach swoich skryptów wykorzystujących Gconf a także innych ciekawych zastosowań tego rozbudowanego konfiguratora.

JakiLinux



Fajny artykuł, dzięki :]
Jedyna rzecz z gnome którą chciałbym zobaczyc w kde.
A jak za dużo namieszacie to też jest rozwiązanie: how-to-cleanup-your-gnome-registry
Widzę, że ostateczna wersja tego świetnego artykułu wreszcie ujrzała światło dzienne :)
@szejk, jesteś pierwszą osobą, która chwali gconf :) Zazwyczaj zarówno użytkownicy zarówno kde jak i gnome 'jadą' po gconf'ie za zbytnie podobieństwo do windowsowego rejestru.
Dla mnie może być, brakuje mi za to opisu sporej części opcji, czy choćby info o typie i formacie danych jakie należy wprowadzać w pola. Dlatego, ten artykuł jest bardzo przydatny.
Niezłe to, niezłe. Kto powiedział że wszystko w windowsie jest złe? Przydało by się takie coś globalnie, nie tylko dla gnome. Tzn. żeby więcej aplikacji chciało z tym współpracować.
@marb
Akurat ja uważam że windziany rejestr to jest jedna z lepszych rzeczy w tym systemie, może trochę przerośnięty ale jak sie dba o system to nie ma większego problemu z nim. Jedynie regedit jest do dupy , do dziś nie zrobili w nim na przykład wyszukiwania przyrostowego. Pozatym rejestr dostarcza wspólne api dla całego systemu i wszystkich aplikacji a nie jak w linuksie co plik konfiguracyjny to inny format.
Z drugiej strony jednak rejestr windowsowy edytować jest naprawdę trudno — łatwo coś zepsuć, to robota dla profesjonalisty. Edycja plików konfiguracyjnych w /etc, szczególnie jak są dobrze opisane, to banał.
Rejestr GNOME jest trochę poręczniejszy od tego z Windows, ale cały czs ma za mało dokumentacji. Ideałem byłoby wspólne API i rejestr, ale z możliwością edycji dla konkretnej aplikacji i z sensownie rozmieszczoną dokumentacją. No i oczywiście przyrostowe backupy robione automatycznie.
@michuk
Prawda, takie połączenie najlepszych cech rejestru windowsa i gconfa opartego na plikach xml było by idealne. Jak by wypracowano standart jakiś że wszystkie pliki konfiguracyjne są oparte np o xml to o ile łatwiej by było pisać wszelkie narzędzia konfiguracyjne takie jak webmin czy yast. Dzis twórcy tych narzędzi muszą praktycznie dla każdego programu pisać odzielny algorytm parsujący. Po za tym pliki xml dalej moża edytować przy pomocy vima ;)
Ale fajnie by było jakbyś opisał więcej opcji :]
Nom, przydalby sie opis wiekszej ilosci opcji, np. jak zmienic kolor zegarka na systrayu?
skoro już tak o Gnome, to zapraszam: http://www.gnome.yoyo.pl :) Poszukuję: admina, 2 moderatorów i oczywiście userów :]
@rootkit: po co nowe forum o GNOME? Nie lepiej stworzyć podforum na forum.jakilinux.org? Są już userzy, admini, moderatorzy :) Think about it.
XFce ma swoje forum i calkiem niezle im idzie (www.xfce.daxa.pl) także czemu ma nie powstać małe forum o Gnome? :-)
Nie jestem fanem rozdrobnienia i zakładania kont na 100 forach traktujących o każdej bibliotece systemu. Wydaje mi się, że lepiej jest gromadzić społeczność w jednym miejscu (albo chociaż w kilku miejscach, a nie kilkuset). Jest już forum PLUGu, jest Polskie Forum Linuksowe, jest forum jakilinux.org (może coś przeoczyłem), a oprócz tego jest usenet z tematycznymi grupami. Wydaje mi się, że starczy. Ale to tylko moje zdanie, nie bierz tego jako krytyka tej konkretnej inicjatywy. Ja ogólnie stoję na stanowisku, że lepiej się łączyć niż dzielić :)
Traktuje to forum jako miejsce, w którym można "posegregować" wszystkie problemy, FAQ, tricki i pytania – będzie można łatwiej znaleźć info o interesującym zagadnieniu (w tym wypadku gnome), nie trzeba będzie przeszukiwać całego neta, forum ubuntu albo suse, żeby znaleźć jedną rzecz dotyczącą jednego programu :] Poza tym polityka unixowa: wiele małych programów (for) sprawdza się dużo lepiej niż jedno duże :)
Coś podobnego z GUI pod KDE – Elektra, jednak opis współpracy tego "cuda" z Gconf nie nastraja optymizmem:
Z paroma innymi "backend'ami" opisywanymi na tej stronie też nie jest dobrze. Choć kilka już "fully working". ;) Jest jeszcze KCfg Creator i KConfigEditor, oba autorstwa Zacka Rusina. Co do Elektry to w tym małpowaniu rejestru Windows poszedł autor trochę za daleko – stara strona na sourceforge "The Linux Registry", dobrze, że nowa strona nie ma "rejestr" w nazwie. Jedną ikonkę to nawet bezpośrednio skopiował z regedit'a (choć to szczegół, ciekawe jak to ma się do licencji).
@rootkit: dlatego wymyślono coś takiego jak subfora.
Jasne i wielu biednych userów zakłada po 50 kont na różnych forach szukając odpowiedniego do zadania pytania….
Jak tam chcecie. IMHO rozdrobnienie tylko i wyłącznie utrudnia znalezienie pomocy.
Świetna robota. Przydałby się więcej tych trików tak jak ktoś pisał wyżej! ;D
Jak najbardziej zgadzam się z michukiem. Również nie lubię mieć masy loginów. Swoją drogą myślałem, że po zarejestrowaniu się na jakilinux.org będę miał konto na forum, a tu masz :P
No niestety forum było wdrażana "na chybcika" i nie zrobiliśmy integracji (chyba nikt jeszcze zresztą nie zrobił pomiędzy WP a pubBB). Riklaunim pracuje nad tym.
Co do tanich chwytów na GNOMiki… kilka jest też w:
http://portal.suse.pl/wiki/index.php/GNOME http://portal.suse.pl/wiki/index.php/Metacity
ale to pewnie już każdy zna :>
Nie zna! ;]. Dzięki Ci obi_gl za np.
Rozmiar ikon na pulpicie
Polecam:
http://it-static.pl/index.php?q=personalizacja-gn…