Vi har sett att man med hjälp av flaggor på kommandoraden kan välja sådant som de olika fönstrens storlek, bakgrundsfärg och färg på text och annan förgrund. Det blir dock på tok för jobbigt om man måste skriva in alla flaggor varje gång. Och visst finns det ett bättre sätt att konfigurera X-klienterna! Inställningarna görs med hjälp av ett oerhört kraftfullt system som kallas för resurser. Som vanligt i UNIX-sammanhang är detta system tyvärr också oerhört komplicerat, och det krävs tålamod om man ska kunna lära sig behärska det.
Vi ska ta programmet xclock som ett exempel i denna inledande diskussion av resurser. I bruksanvisningen till xclock (ge kommandot man xclock för att läsa den) står det bland annat följande:
X DEFAULTS
This program uses the Clock widget. It understands all of
the core resource names and classes as well as:
width (class Width)
Specifies the width of the clock. The default for
analog clocks is 164 pixels; the default for digi
tal clocks is whatever is needed to hold the clock
when displayed in the chosen font.
height (class Height)
Specifies the height of the clock. The default
for analog clocks is 164 pixels; the default for
digital clocks is whatever is needed to hold the
clock when displayed in the chosen font.
update (class Interval)
Specifies the frequency in seconds at which the
time should be redisplayed.
foreground (class Foreground)
Specifies the color for the tic marks. The default
is depends on whether reverseVideo is specified.
If reverseVideo is specified the default is
lwhite, otherwise the default is black.
hands (class Foreground)
Specifies the color of the insides of the clock's
hands. The default is depends on whether reverseV
ideo is specified. If reverseVideo is specified
the default is lwhite, otherwise the default is
black.
highlight (class Foreground)
Specifies the color used to highlight the clock's
hands. The default is
depends on whether reverseVideo is specified. If
reverseVideo is specified the default is lwhite,
otherwise the default is black.
analog (class Boolean)
Specifies whether or not an analog clock should be
used instead of a digital one. The default is
True.
chime (class Boolean)
Specifies whether or not a bell should be rung on
the hour and half hour.
padding (class Margin)
Specifies the amount of internal padding in pixels
to be used. The default is 8.
font (class Font)
Specifies the font to be used for the digital
clock. Note that variable width fonts currently
will not always display correctly.
Vi ska undan för undan förklara vad allt detta innebär.
Men först ska vi naturligtvis visa vad man kan ha för
nytta av det!
Skapa därför en fil, som tex kan heta resurstest,
och som innehåller följande:xclock.clock.analog: True xclock.clock.height: 80 xclock.clock.width: 80 xclock.clock.padding: 4 xclock.clock.foreground: Black xclock.clock.hands: Black xclock.clock.highlight: Black xclock.clock.update: 1 xclock.clock.chime: TrueDen första raden anger att vi vill att klockan ska vara analog i stället för digital. De båda följande raderna ger storleken (antal punkter) för det fönster klockan ska visas i. Den fjärde raden anger avståndet (antal punkter) från kanten av klockans bild till kanten av det fönster klockan ritas i. Sedan kommer färgen på de små streck som markerar timmar och minuter på urtavlan. Raderna sex och sju ovan anger färg för klockans visare; en inre färg (rad sex) och en kantfärg (rad sju). Det åttonde raden anger intervallet (i antal sekunder) mellan uppdateringarna av klockan. Den sista raden anger att klockan ska tuta till varje hel- och halvtimme.
För att få xclock att följa dessa anvisningar ska vi läsa in filen till X med kommandot xrdb -load resurstest. Gör det, och starta sedan en ny xclock. Ser du att klockfönstret har blivit mindre och att det nu finns en sekundvisare? Ändra nu några av värdena i filen resurstest - välj några snyggare färger eller en annan storklek. Ge därefter åter kommandot xrdb -load resurstest och starta en ny klocka. När du har funnit de inställningar du tycker bäst om, vill du kanske att de ska finnas tillgängliga varje gång du loggar in på nytt? Lägg i så fall in raderna från filen resurstest i en fil med namnet .Xresources i din hemkatalog - om det finns en sådan fil, så läses den nämligen in då du startar X. Det finns en annan resursfil, /etc/X11/Xresources, som systemadministratören sköter. Den är gemensam för alla användare, och den läses in före den privata .Xresources. Filerna heter iallafall så på Debiansystem. På din dator kanske namnen är något annorlunda; granska startfilerna för X eller fråga systemadministratören för att få veta exakt. Nåväl, skriv nu in resurserna för X-clock i din privata resursfil, gå ur X och starta om. Kör sedan xclock och kontrollera att dina ändringar har trätt ikraft.
I de resursfiler som xrdb ska läsa in förekommer rader av formen
resursvariabel: värde
Resursvariabeln kan tex heta xclock.clock.hands,
och värdet kan tex vara Black.
Syntaxen för namnet på en resursvariabel är
klientResursvariabeln är uppbyggd av två eller fler ord som separeras av punkter. Det första ordet är ett namn på klienten, vanligtvis identiskt med namnet på det kommando som startar klienten - som tex xclock. Man kan ta reda på klientnamnet för ett visst fönster genom att ge kommandot xprop och sedan klicka på fönstret. Då spottas en sida text ut. Texten ger information om fönstret, bla en rad i stil med.objekt.delobjekt (...).attribut
WM_CLASS(STRING) = "xclock", "XClock"Detta betyder att man kan använda såväl xclock som XClock som namn för klienten. Många fönsterhanterare har en liknande funktion; om man tex väljer FvwmIdent i fönsterhanterarens meny och sedan klickar på något fönster, så får man information om detta fönster.
Det sista ordet i resursvariabeln, attributet, är namnet på en egenskap hos klienten (eller någon del av klienten). I vårt exempel förekommer attribut som height (höjden), update (tidsintervall i sekunder mellan successiva uppdateringar av klockan) och hands (visarnas färg).
Mellan första och sista ordet av namnet på en resursvariabel kan det förekomma ett eller flera ord, som anger vilken del av klienten som resursvariabeln syftar på. I stället för ''del'' säger man ofta ''objekt'' eller, som i bruksanvisningen ovan, ''widget''. I exemplet med xclock förekommer det enda objektet clock. Men i mer komplicerade fall, som vi diskuterar i avsnitt 4.5, kan det finnas flera objekt. Objekt kan också vara sammansatta av flera mindre delar, delobjekt, som i sin tur kan ha flera delar osv.
Resursvariabelns värde kan vara en textsträng, tex Black. Eller det kan vara ett tal, som 80. Det kan också vara ord som True (dvs sann) eller False (dvs falsk).
När man läser in en resursfil med xrdb -load, tas alla tidigare resursdefinitioner bort. Om man i stället använder xrdb -merge resursfil, så behålls alla gamla definitioner och de nya läggs till de gamla. Oftast ska man använda -merge i stället för -load.
Man får använda jokertecknet *
i resursnamnen. Vanligtvis är tex
xclock*hands: Green xclock*chime: Falseatt föredra framför att skriva ut resursvariablernas namn fullständigt.
Katalogen /usr/lib/X11/app-defaults innehåller resursfiler som ger grundkonfigurationer för ett antal olika X-klienter. Man kan få tips om hur klienten kan konfigureras genom att titta där. Om man vill ändra något värde som står där, så ska man klippa ut definitionen därifrån, klista in den i sin .Xresources och ändra värdet till det man önskar.