Minusta on hämmentävää, jopa hämäävää että gsettings on tarkoitettu "korkeamman tason" työkaluksi, monestakin syystä. Kun gconf on korvattu dconfilla, jolle on dconf-editor olemassa, on käyttäjän kannalta erittäin hämäävää se että komentorivillä pitäisi käyttää g-alkuista komentoa gsettings.
Niin no veikkaan että dconf-editor oli aluksi yhtä yksinkertainen muokkain kuin komentorivivastineensa. Siihen on vain sittemmin pultattu tuki GSettings-skeemoille, jotta käyttäjät näkisivät mitä asetuksia käytössä olevat ohjelmat ja kirjastot oikeasti tukevat, vaikka tietokantaan ei olisi asetettu arvoja. Nimi on jäänyt, vaikka ohjelma on nykyisin ennemminkin gsettings-editor.
Ohjelmoijan näkökulmasta GSettingsin ja dconfin suhteessa ei kuitenkaan ole mitään erityisen epäselvää. Jos ohjelma on rakennettu GLibin päälle, kuten GNOME:n ohjelmat ovat, asetuksia on luonnollisinta hallita GLibin GSettings-API:n kautta. Se puolestaan käyttää eri käyttöjärjestelmissä eri backendejä. Linuxissa alla on dconf, Windowsissa taas Windowsin rekisteri.
Mutta vielä hämmentävämpää on se että tämän "korkeamman tason" työkalun käyttäjän pitäisi tietää mitä skeemat ovat, vaikka niitä ei ole oikein missään käyttäjälle esitelty.
gsettingsin manuaalisivu on minusta aika selkeä. Skeemat listataan komennolla:
gsettings list-schemas
Sieltä voi hakea vaikka tässä ketjussa mainitun background-hakemiston:
gsettings list-schemas | grep background
org.gnome.desktop.background
org.gnome.settings-daemon.plugins.background
Ja listata mitä asetuksia se sisältää:
gsettings list-recursively org.gnome.desktop.background
org.gnome.desktop.background picture-opacity 100
org.gnome.desktop.background secondary-color '#2c001e'
org.gnome.desktop.background show-desktop-icons true
org.gnome.desktop.background primary-color '#3bcd426e51eb'
org.gnome.desktop.background color-shading-type 'solid'
org.gnome.desktop.background picture-options 'none'
org.gnome.desktop.background picture-uri ''
org.gnome.desktop.background draw-background true
Validit asetusarvot voi myös tarkistaa:
gsettings range org.gnome.desktop.background color-shading-type
enum
'solid'
'vertical'
'horizontal'
Kun dconf-editor -työkalulla katson tietokantaa, skeemat eivät erotu navigointirakenteesssa, ne näkee vain katsomalla yksittäisten avainten ominaisuuksia.
Oikeastaan dconf-editorin koko näkymä on skeemanäkymä. Tietokantaan kirjoitetut, oletuksista poikkeavat arvot näkyvät siellä seassa lihavoituna. Yksittäisestä avaimesta näkee sitten kuvauksen, oletusarvon ja sallitut arvot, kun avaimen valitsee.
Käyttäjä tuskin kaivaa sitä tietoa sieltä esiin, vaan todennäköisimmin katsoo vain navigointirakenteen ja kopioi sen dconf-komentoon.
No ei sekään ole kiellettyä. Itse kyllä kopioisin gsettings-komentoon, niin saa skeemavalidoinnin kaupan päälle, eikä mene pieleen, jos tekee kirjoitusvirheen. Silloin ei myöskään tarvitse vaihtaa polun pisteitä kauttaviivoiksi, eikä käyttää dconfin outoa merkkijonosyntaksia.
Muualta kuin shell-skripteistä käyttäisin vastaavasti GSettings-rajapintaa.
Kaikkein hämmentävintä on se, että gsettings vaatii aina skeeman voidakseen tehdä yhtään mitään, mutta dconf-tietokannassa on paljon avaimia ilman skeemaa.
Skeemattomia avaimia voi olla, jos joku ohjelma käyttää suoraan dconfia, eikä halua tukea GSettings-skeemoja. Varmaan myös vanhat asetukset jäävät tietokantaan lojumaan käyttämättöminä, jos ohjelman tai kirjaston skeema muuttuu. En kyllä äkkiseltään bongaa omasta järjestelmästäni skeemattomia avaimia dconf-editoria selailemalla.
Tietokantaa on aina helpompi käpistellä dconf-komennolla. Juu, ymmärrän että se on vaaralllista juuri siksi että se ei ole "korkeamman tason" komento, mutta se on selvästi helpompi käyttää kuin gsettings. Ihme sotku.
Minusta taas gsettings on selvästi helpompi, loogisempi ja turvallisempi käyttää.
Se varmistaa, että asetukset menevät oikein perille ja arvot ovat tuettuja. dconf antaa tehdä mitä tahansa:
dconf write /org/gnome/desktop/background/color-shading-type "'peruna'"
dconf read /org/gnome/desktop/background/color-shading-type
'peruna'
Tässä siis peruna ei todellakaan ole skeemassa hyväksytty arvo, ja kyseistä asetusta lukeva ohjelma saakin sen sijaan käyttöönsä asetuksen oletusarvon:
gsettings get org.gnome.desktop.background color-shading-type
'solid'
Jos gsettingsillä yrittää vastaavaa, saa selvän ilmoituksen, että arvo on virheellinen:
gsettings set org.gnome.desktop.background color-shading-type peruna
Annettu arvo on yli sallittujen rajojen