Indstillingsfiler

KDE bruger et enkelt tekstbaseret filnavn for alle indstillingsfiler. Det består af par med nøgler og værdier som er placerede i grupper. Alle indstillingsfiler i KDE bruger UTF-8 kodning til tekst udenfor ASCII-området.

Begyndelsen af en gruppe angives af et gruppenavn som er placeret i kantede parenteser. Alle indgange med nøgle og værdi som følger hører til gruppen. Gruppen slutter enten når en ny gruppe begynder, eller når filslutningen nås. Indgange længst oppe i filen som ikke har et gruppenavn forud, tilhører standardgruppen.

Følgende eksempel viser en indstillingsfil som består af to grupper. Den første gruppe indeholder nøglerne LargeCursor og SingleClick, den anden gruppe indeholder nøglerne Show hidden files og Sort by:

[KDE]
LargeCursor=false
SingleClick=true
[KFileDialog Settings]
Show hidden files=false
Sort by=Name

Indgange i en gruppe består af en nøgle og en værdi adskilt af med et lighedstegn. Nøglen kan indeholde mellemrum og kan følges af tilvalg inom hakparenteser. Delen efter likhetstecknet er indgangens værdi. Eventuella blanktegn som omger likhetstecknet ignoreres, ligesom eventuella blanktegn i slutningen. Mer kortfattat er formatet:

indgang=værdi

Hvis det er meningen at en værdi skal indeholde et mellemrum i begyndelsen og slutningen kan det opnås ved at bruge et baglæns skråstreg fulgt af et “s”.

Der er flere andre baglæns skråstreg-koder. Her er en fuldstændig liste:

I følgende eksempel begynder værdien for indgangen Caption med to mellemrum mens indgangen Description indeholder tre linjer tekst. Nye linjer i baglæns skråstreg notation bruges til at skille de tre linjer ad.

[Preview Image]
Caption=\s Min overskrift
Description=Dette er en\nmeget lang\nbeskrivelse.

Tomme linjer i indstillingsfiler ignoreres, ligesom linjer som begynder med et nummertegn (“#”). Nummertegnet kan bruges til at tilføje kommentarer i indstillingsfiler. Det bør noteres at når et KDE-program opdaterer en indstillingsfil, bevares kommentarerne ikke.

Det kan være flere indstillingsfiler med samme navn i undermappen share/config i forskellige mappetræer i KDE. I dette tilfælde kombineres informationen i alle disse indstillingsfiler nøgle for nøgle. Hvis samme nøgle i en vis gruppe er defineret på mere end et sted, bruges nøgleværdien som blev læst fra mappetræet med højest prioritet. Indstillingsfiler under $KDEHOME har altid højest prioritet. Hvis en nøgle i en vis gruppe defineres flere gange i en enkelt fil, bruges den sidste indgangs værdi.

Hvis $HOME/.kde/share/config/foobar indeholder:

[MyGroup]
Color=red
Shape=circle
og /etc/opt/kde3/share/config/foobar indeholder
[MyGroup]
Color=blue
Position=10,10
bliver resultatet:
[MyGroup]
Color=red
Shape=circle
Position=10,10

Hvis $HOME/.kde/share/config/foobar indeholder

[MyGroup]
Color=red
Shape=circle
[MyGroup]
Color=green
og /opt/kde_staff/share/config/foobar indeholder
[MyGroup]
Color=purple
Position=20,20
og /etc/opt/kde3/share/config/foobar indeholder
[MyGroup]
Color=blue
Position=10,10
bliver resultatet:
[MyGroup]
Color=green
Shape=circle
Position=20,20

For at hindre brugere i at sætte standardindstillinger ud af kraft, kan indstillinger markeres som uforanderlige. Indstillinger kan gøres uforanderlige individuelt, pr gruppe eller pr fil. En individuel indgang kan låses ved at tilføje [$i] efter nøglen, f.eks.:

Color[$i]=blue

En gruppe med indgange kan låses ved at placere [$i] efter gruppenavnet, f.eks.:

[MyGroup][$i]

For at låse hele filen, indledes filen med [$i] på en enkelt linje, dvs.:

[$i]

Hvis $HOME/.kde/share/config/foobar indeholder:

[MyGroup]
Color=red
Shape=circle
og /etc/opt/kde3/share/config/foobar indeholder:
[MyGroup][$i]
Color=blue
Position=10,10
bliver resultatet:
[MyGroup]
Color=blue
Position=10,10

Hvis $HOME/.kde/share/config/foobar indeholder:

[MyGroup]
Color=red
Shape=circle
og /opt/kde_staff/share/config/foobar indeholder
[MyGroup]
Color=purple
Shape=rectangle
og /etc/opt/kde3/share/config/foobar indeholder
[MyGroup][$i]
Color=blue
Position=10,10
bliver resultatet:
[MyGroup]
Color=purple
Shape=rectangle
Position=10,10

Såkaldt “skalekspansion” kan bruges for at sørge for mere dynamiske standardværdier. Med skalekspansion kan værdien for en indstillingsnøgle skabes fra værdien af en miljøvariabel eller fra udskriften af et skalkommando. For at aktivere skalekspansion for en indstillingsindgang, skal nøglen følges af [$e]. Normalt skrives den ekspanderede form til brugerens indstillingsfil efter første brug. For at forhindre dette, anbefales at låse indstillingsindgangen ved at bruge [$ie]. Brugeren kan så naturligvis ikke ændre den så.

I følgende eksempel afgøres værdien på Host med uddata fra programmet hostname. Denne indstilling er også låst for at sikre at værdien altid afgøres dynamisk.

Værdien af indgangen Email afgøres ved at udfylde værdierne for miljøvariablerne $USER og $HOST. Når anna logger ind på annas_maskine resulterer det i en værdi som er lig med anna@annas_maskine. Indstillingen er ikke låst.

[Mail Settings] 
Host[$ie]=$(hostname)
Email[$e]=${USER}@${HOST}

De fleste indstillingsindgange kan indekseres med en sprogkode. I dette tilfælde bruges sproget som brugeren har valgt at bruge på desktoppen til at slå nøglens værdi op. Hvis standardsproget (amerikansk engelsk) er valgt, eller hvis der ikke er indeks som svarer til det valgte sprog, bruges nøgleindgangen uden indeks.

I følgende eksempel afhænger værdien af indgangen Caption af sproget. Hvis brugeren har valgt fransk som sprog (sprogkode fr) bliver indgangens værdi “Ma Légende”. I alle øvrige tilfælde bruges værdien “My Caption”.

[Preview Image]
Caption=My Caption
Caption[fr]=Ma Légende

I følgende eksempel afhænger værdien af indgangen Caption af sproget. Hvis brugeren har valgt fransk som sprog (sprogkode fr) bliver indgangens værdi “Ma Légende”. I alle øvrige tilfælde bruges værdien “My Caption”.

[Preview Image]
Caption=My Caption
Caption[fr]=Ma Légende

I almindelighed er indgangene som kan findes i en indstillingsfil ikke dokumenterede. Fra KDE 3.2 er dette begyndt at ændres. Der er filer i $KDEDIR/share/config.kcfg som sørger for en formel beskrivelse af de mulige indgange i en indstillingsfil. De bruges af den nye indstillingseditor i KDE når de er tilgængelige.

Her er et eksempel på en XML-indstillingsfil:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
<kcfg>
    <kcfgfile name="korganizerrc"/>
    <group name="General">
         <entry type="Bool" key="Auto Save">
             <label>Enable automatic saving of calendar</label>
             <default>true</default>
         </entry>
         <entry type="Int" key="Auto Save Interval">
             <default>10</default>
         </entry>
    </group>
</kcfg>

Den har samme effekt som:

[General]
Auto Save=false
Auto Save Interval=25