next up previous contents
Nästa: 4.5 Klasser och objekt Upp: 4. Fönstersystemet X Förra: 4.3 X över nätverk

  
4.4 Resurser

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: True
Den 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

klient.objekt.delobjekt (...) .attribut
Resursvariabeln ä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
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: False
att 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.


next up previous contents
Nästa: 4.5 Klasser och objekt Upp: 4. Fönstersystemet X Förra: 4.3 X över nätverk
Goran Andersson
1999-03-08