2. Configuratiebestanden
[ Formaat & syntaxis | Trapsgewijze configuratie | Shell-substitutie | Localisatie | Afschermen van instellingen ]2.1 Formaat & syntaxis
Voor al zijn configuratiebestanden maakt KDE gebruik van eenvoudige, "platte" tekstbestanden, die uit gegroepeerde sleutel/waarde-paren (key-value pairs) bestaan. Alle configuratiebestanden gebruiken UTF-8 als er behoefte is aan lettertekens buiten de ASCII-set.
Het begin van een groep wordt aangegeven door de naam van die groep, omsloten door vierkante haken, gevolgd door de sleutel/waarde-paren die tot die groep behoren. De groep wordt afgesloten als een nieuwe groep begint of als het einde van het bestand bereikt wordt.
Instellingen die aan het begin van het bestand staan en niet door een groepsnaam voorafgegaan worden, maken deel uit van de standaard-groep.
Voorbeeld
Het volgende voorbeeld is een configuratiebestand dat uit twee groepen bestaat. De eerste groep bevat de sleutels LargeCursor en SingleClick, de tweede groep bevat de sleutels Show hidden files en Sort by.
[KDE] LargeCursor=false SingleClick=true [KFileDialog Settings] Show hidden files=false Sort by=Name
Items binnen een groep bestaan uit een sleutel en een waarde, gescheiden door een is-gelijk-aan-teken. De sleutel mag spaties bevatten en mag gevolgd worden door opties binnen vierkante haken. Het deel na het gelijkheidsteken is de waarde van het item. Witruimte die voor of na het gelijkheidsteken staat, wordt genegeerd, net als eventuele witruimte die zich achter het item bevindt.
Wordt een waarde wel degelijk verondersteld een spatie aan het begin of aan het einde te hebben, dan kan die weergegeven worden met een backslash (\), gevolgd door een "s". Er zijn ook andere backslash-codes mogelijk:
- \s kan gebruikt worden als een spatie
- \t kan gebruikt worden als een tab
- \r kan gebruikt worden als carriage return
- \n kan gebruikt worden als linefeed-karakter (nieuwe lijn)
- \\ kan gebruikt worden om de backslash zelf weer te geven
Voorbeeld
Het volgende voorbeeld levert hetzelfde resultaat op als dat van het vorige voorbeeld. Witruimte die de sleutels en/of waarden omringt, wordt genegeerd.
[KDE] LargeCursor= false SingleClick = true [KFileDialog Settings] Show hidden files = false Sort by =Name
Voorbeeld
In onderstaand voorbeeld begint de waarde van het item Caption met twee spaties, het item Description bestaat uit drie regels: linefeeds met backslash-notatie scheiden de verschillende regels.
[Preview Image] Caption=\s My Caption Description=This is\na very long\ndescription.
Lege lijnen worden genegeerd, net als lijnen die voorafgegaan worden door een hash mark (#). Je kan het hash-teken gebruiken om commentaar toe te voegen; merk echter op dat commentaar niet bewaard blijft als een KDE-toepassing zijn configuratiebestanden bijwerkt!
[terug naar boven]2.2 Trapsgewijze configuratie
Er kunnen meerdere configuratiebestanden met dezelfde naam voorkomen in de share/config/-submappen van de verschillende KDE-mappenstructuren. In dat geval wordt de informatie uit al die configuratiebestanden samengevoegd, sleutel per sleutel. Wordt een bepaalde sleutel binnen een bepaalde groep op meerdere plekken gedefinieerd, dan maakt KDE gebruik van de waarde die in de directory tree met de hoogste prioriteit aangetroffen werd. Configuratiebestanden in $HOME genieten altijd de voorkeur.
Wordt een bepaalde sleutel binnen een bepaalde groep meerdere keren gedefinieerd binnen één enkel bestand, dan wordt de waarde van het laatste voorkomen van die sleutel gebruikt.
Dankzij dit trapsgewijs afdalende configuratiesysteem is het mogelijk om gebruikers bepaalde standaardinstellingen aan te bieden (op systeemniveau of binnen de hele organisatie), zonder hen de mogelijkheid te ontnemen om individuele wijzigingen aan die instellingen toe te brengen. KDE zal de instellingen die op een hoger niveau bepaald worden nooit wegschrijven in de configuratiebestanden van gebruikers, onder $KDEHOME, zodat systeemwijzigingen meteen van kracht zijn voor alle gebruikers. Merk op dat die aanpak verschilt van een constructie met /etc/skel; wijzigingen die je daar toebrengt, zullen enkel beginnen gelden voor nieuw aangemaakte gebruikersaccounts.
Soms is het niet de bedoeling dat afzonderlijke gebruikers de standaardinstellingen kunnen aanpassen. In zo'n geval kan je de standaardinstelling vastleggen.
[terug naar boven]2.3 Shell-substitutie
Met "shell-substitutie" (shell expansion) is het mogelijk om standaardwaarden een dynamischer karakter te geven: de waarde van een configuratie-sleutel kan zo ingesteld worden, dat hij afhangt van een omgevingsvariabele of van de uitvoer van een shell-commando.
Om shell-substitutie mogelijk te maken voor een configuratie-item, zet je [$e] achter de sleutel van dat item. Normaalgezien wordt de gesubstitueerde vorm na het eerste gebruik opgeslagen in het configuratiebestand van de gebruiker. Om dat te vermijden, kan je de instelling vastleggen door [$ie] te gebruiken.
Voorbeeld
In dit voorbeeld wordt de waarde van het item Host bepaald door de uitvoer van het programma hostname. De instelling wordt beveiligd, zodat de waarde zeker telkens opnieuw dynamisch bepaald wordt.
De waarde van het item Email wordt ingevuld met de waarden van de omgevingsvariabelen $USER en $HOST. Als gebruiker "pino" ingelogd is op host "sesamstraat", dan zal dat de waarde "pino@sesamstraat" opleveren. Deze waarde wordt niet vastgelegd.
[Mail Settings]
Host[$ie]=$(hostname)
Email[$e]=${USER}@{HOST}
[terug naar boven]
2.4 Localisatie
Je kan alle configuratie-items indexeren met een taalcode. De waarde die de gebruiker aangegeven heeft, wordt gebruikt om de corresponderende sleutelwaarde op te zoeken. Als de standaard-taalinstelling geselecteerd is (Amerikaans Engels) of als er geen index voorhanden is die met de gekozen taal overeenstemt, dan wordt de sleutelwaarde zonder index gebruikt.
Voorbeeld
In dit voorbeeld hangt de waarde van het item Caption af van de gekozen taal. Als de gebruiker voor Frans gekozen heeft (taalcode "fr"), dan wordt de waarde van het item "Ma légende". In alle andere gevallen wordt de waarde "My Caption" gebruikt.
[Preview Image] Caption=My Caption Caption[fr]=Ma Légende[terug naar boven]
2.5 Afschermen van instellingen
Om te vermijden dat gebruikers standaardinstellingen overschrijven, kan je die instellingen beveiligen. Je kan instellingen individueel, per groep of per bestand afschermen. Een afzonderlijk item leg je vast door [$i] toe te voegen achter de sleutel. Een groep configuratie-items leg je vast door [$i] toe te voegen achter de naam van de groep. Om een heel bestand af te schermen, zet je [$i] op de verder lege eerste lijn van het bestand.
Voorbeeld
Hieronder is het item Caption vastgelegd, net als alle instellingen binnen de groep Mail Settings.
[Preview Image] Caption[$i]=My Caption [Mail Settings][$i] Host[$e]=$(hostname) Email=pino@sesamstraat.biz
Als je op die manier een instelling hebt beveiligd, dan worden de items die normaalgezien een hogere prioriteit zouden krijgen gewoon genegeerd.
Ook de wijzigingen die sommige toepassingen aan vastgelegde instellingen zouden willen toebrengen, worden zonder enige waarschuwing genegeerd. Het hangt van de toepassing af hoe op beveiligde instellingen gereageerd wordt. Sommige toepassingen herkennen een dergelijke situatie: ze merken dat de instelling in kwestie centraal afgeschermd wordt, en verwijderen daarom de elementen die normaalgezien controle over de vastgelegde instellingen zouden bieden uit hun gebruikersinterface. Andere toepassingen zullen die instellingen blijven aanbieden, ofschoon ze helemaal geen impact meer hebben. Soms is het echter nog steeds mogelijk om de instelling aan te passen in het draaiende programma. De wijziging blijft dan gelden zolang het programma blijft draaien. Zodra het opnieuw gestart wordt, zal de beveiligde instelling terug van kracht zijn.
[terug naar boven][ Terug naar de inhoudsopgave | Terug naar sectie 1, "De hiërarchie van het bestandssysteem" | Verder naar sectie 3, "Omgevingsvariabelen" ] Over deze site | Laatst gewijzigd: 22 juni 2004, 13:12 door: Tom Verbreyt