Theme file format
7 Temafilsformat
7.1 Introduktion
GRUB:s grafiska meny stödjer teman som kan anpassa layouten och utseendet på GRUB:s startmeny. Temat konfigureras genom en vanlig textfil som specificerar layouten för olika GUI-komponenter (inklusive startmenyn, tidslinjen för timeout och textmeddelanden) samt utseendet med hjälp av färger, typsnitt och bilder. Ett exempel finns tillgängligt i docs/example_theme.txt
7.2 Temaelement
7.2.1 Färger
Färger kan specificeras på flera sätt:
- HTML-stil "#RRGGBB" eller "#RGB", där *R*, *G* och *B* är hexadecimala siffror (t.ex. "#8899FF")
- Som kommaseparerade decimala RGB-värden (t.ex. "128, 128, 255")
- Med "SVG 1.0 färgnamn" (t.ex. "cornflowerblue") som måste specificeras i små bokstäver.
7.2.2 Typsnitt
De typsnitt som GRUB använder är i "PFF2 font format" för bitmap-typsnitt. Typsnitt specificeras med fulla typsnittsnamn. För närvarande finns det inga förutsättningar för en önskelista av typsnitt eller härledning av ett typsnitt från ett annat. Typsnitt laddas med kommandot "loadfont" i GRUB (loadfont). För att se listan över laddade typsnitt, kör kommandot "lsfonts" (lsfonts). Om det finns för många typsnitt för att passa på skärmen, gör "set pager=1" innan du kör "lsfonts".
7.2.3 Tidslinje för Timeout
Se figur 7.1 Se figur 7.2
Tidslinjer används för att visa den återstående tiden innan GRUB startar standardmenyalternativet. För att skapa en tidslinje som visar den återstående tiden före automatisk start, skapa enkelt en "progress_bar"-komponent med id "__timeout__". Detta indikerar för GRUB att tidslinjen ska uppdateras allt eftersom tiden går, och den ska göras osynlig om nedräkningen till automatisk start avbryts av användaren.
Tidslinjer kan valfritt ha text som visas på dem. Denna text styrs av variabeln "text" som innehåller en printf-mall där enda argumentet %d är antalet sekunder som återstår. Dessutom ersätts speciella värden "@TIMEOUT_NOTIFICATION_SHORT@", "@TIMEOUT_NOTIFICATION_MIDDLE@" och "@TIMEOUT_NOTIFICATION_LONG@" med standard- och översatta mallar.
7.2.4 Cirkulär Tidsindikator
Den cirkulära tidsindikatorn fungerar på liknande sätt som tidslinjen. När den ges ett id av "__timeout__", uppdaterar GRUB den cirkulära tidsindikatorns värde för att indikera den återstående tiden. För den cirkulära tidsindikatorn används två bilder för att rendera den: *center*-bilden och *tick*-bilden. Centerbilden renderas i mitten av komponenten, medan tick-bilden används för att rendera varje markering längs omkretsen av indikatorn.
7.2.5 Etiketter
Textetiketter kan placeras på starts
7.2.7 Stiliserade Boxar
Ett av de viktigaste funktionerna för att anpassa layouten är användningen av *stylade boxar*. En stylad box består av 9 rektangulära (och potentiellt tomma) regioner, som används för att sömlöst rita den stylade boxen på skärmen:
Nordväst (nw) Nord (n) Nordost (ne) Väst (w) Centrum (c) Öst (e) Sydväst (sw) Syd (s) Sydost (se) För att stödja alla storlekar av boxar på skärmen, skalas centrumskivan och skivorna för topp, botten och sidor till rätt storlek för komponenten på skärmen enligt följande regler:
Kantskivorna (nord, syd, öst och väst) skalas i riktningen för kanten de gränsar till. Till exempel skalas västskivan vertikalt. Hörnskivorna (nordväst, nordost, sydost och sydväst) skalas inte. Centrums 7.3 Temafilhandbok Temafilen är en vanlig textfil. Rader som börjar med "#" ignoreras och anses vara kommentarer. (Observera: Detta kanske inte är fallet om den föregående raden slutade där ett värde förväntades.)
Temafilen innehåller två typer av uttalanden:
Globala egenskaper. Konstruktion av komponenter.
7.3.1 Globala Egenskaper
7.3.2 Format
Globala egenskaper specificeras med det enkla formatet:
name1: value1 name2: "value which may contain spaces"
name3: #88F
I detta exempel tilldelas name3 ett färgvärde.
7.3.3 Lista över Globala Egenskaper
itle-text Specificerar texten som ska visas överst i mitten av skärmen som en titel. title-font Definierar typsnittet som används för titelmeddelandet överst på skärmen.
title-color Definierar färgen på titelmeddelandet. message-font För närvarande oanvänt. Kvar för bakåtkompatibilitet. message-color För närvarande oanvänt. Kvar för bakåtkompatibilitet. message-bg-color För närvarande oanvänt. Kvar för bakåtkompatibilitet. desktop-image Specificerar bilden som ska användas som bakgrund. Den kommer att skalas för att passa skärmstorleken eller proportionellt skalas beroende på skalningsmetoden.
desktop-image-scale-method Specificerar skalningsmetoden för *desktop-image*. Alternativen är "stretch", "crop", "padding", "fitwidth", "fitheight". "stretch" för att passa skärmstorleken. Annars är det proportionell skalning av en del av *desktop-image* till en del av skärmen. "crop" en del av *desktop-image* kommer att skalas proportionellt för att passa skärmstorlekarna. "padding" hela *desktop-image* kommer att innehållas på skärmen. "fitwidth" för att passa *desktop-image*'s bredd med skärmbredden. "fitheight" för att passa *desktop-image*'s höjd med skärmhöjden. Standard är "stretch". desktop-image-h-align Specificerar den horisontella inriktningen av *desktop-image* om *desktop-image-scale-method* inte är lika med "stretch". Alternativen är "left", "center", "right". Standard är "center". desktop-image-v-align Specificerar den vertikala inriktningen av *desktop-image* om *desktop-image-scale-method* inte är lika med "stretch". Alternativen är "top", "center", "bottom". Standard är "center". desktop-color Specificerar färgen för bakgrunden om *desktop-image* inte specificeras. terminal-box Specificerar filnamnsmönstret för de stylade boxskivorna som används för kommandoradsfönstret. Till exempel kommer "terminal-box: terminal_*.png" att använda bilderna "terminal_c.png" som mittenområdet, "terminal_n.png" som den norra (övre) kanten, "terminal_nw.png" som det nordvästra (övre vänstra) hörnet, och så vidare. Om bilden för någon skiva inte hittas, kommer den helt enkelt att lämnas tom. terminal-border Specificerar bredden på terminalfönstrets ram.
terminal-left Specificerar den vänstra koordinaten för terminalfönstret. terminal-top Specificerar den övre koordinaten för terminalfönstret.
terminal-width Specificerar bredden på terminalfönstret.
terminal-height Specificerar höjden på terminalfönstret.
7.3.4 Konstruktion av Komponenter
Större anpassningsbarhet ges genom komponenter. Ett träd av komponenter bildar användargränssnittet. *Behållare* är komponenter som kan innehålla andra komponenter, och det finns alltid en enda rotkomponent som är en instans av en *duk*-behållare.
Komponenter skapas i temafilen genom att prefixa typen av komponent med ett '+'-tecken:
+ label { text="GRUB" font="aqui 11" color="#8FF" }
egenskaper för en komponent specificeras som "name = value" (blanksteg kring token är valfria och ignoreras) där *value* kan vara:
ett enda ord (t.ex. "align = center", "color = #FF8080"), en citatsträng (t.ex. "text = "Hello, World!"") eller en tupel (t.ex. "preferred_size = (120, 80)"). 7.3.5 Komponentlista Följande är en lista över komponenter och de egenskaper de stödjer.
label En etikett visar en rad text. Egenskaper:
id Sätt till "__timeout__" för att visa den förflutna tiden till en automatisk start av standardposten. text Texten som ska visas. Om "id" är inställt på "__timeout__" och ingen "text"-egenskap är inställd, kommer antalet sekunder att visas. Om det är inställt på "@KEYMAP_SHORT@", "@KEYMAP_MIDDLE@" eller "@KEYMAP_LONG@" kommer fördefinierad genvägsinformation att visas. font Det typsnitt som ska användas för textvisning. color Färgen på texten. align Den horisontella inriktningen av texten inom komponenten. Alternativen är "left", "center" och "right". visible Sätt till "false" för att dölja etiketten. image En komponent som visar en bild. Bilden skalas för att passa komponenten. Egenskaper:
file Hela sökvägen till bildfilen som ska laddas. progress_bar Visar en horisontellt orienterad tidslinje. Den kan renderas med hjälp av enkla solida fyllda rektanglar eller med hjälp av ett par pixmap-stylade boxar. Egenskaper:
id Sätt till "__timeout__" för att visa den förflutna tiden till en automatisk start av standardposten. fg_color ForegroundColor för vanlig solidfärgsrendering. bg_color Bakgrundsfärgen för vanlig solidfärgsrendering. border_color Ramfärgen för vanlig solidfärgsrendering. text_color Textfärgen. bar_style Stylade boxspecifikationen för ramen på tidslinjen. Exempel: "progress_frame_*.png" Om värdet är lika med "highlight_style" kommer inga stylade lådor att visas. highlight_style Stylade boxspecifikationen för det markerade området på tidslinjen. Denna låda kommer att användas för att måla bara det markerade området på linjen och kommer att ökas i storlek när linjen närmar sig slutförandet. Exempel: "progress_hl_*.png". Om värdet är lika med "bar_style" kommer inga stylade lådor att visas. highlight_overlay Om detta alternativ är inställt på "true" kommer höjdpunktslådans sidlappar (varje skiva förutom mittskivan) att överlappa ramboxens sidlappar. Och mittskivan på höjdpunktslådan kan flytta hela vägen (från toppen till botten), och ritas på mittskivan på ramboxen. På så sätt kan vi göra en tidslinje med rundformade kanter så att det inte blir något fritt utrymme från höjdpunkten till ramen i topp- och bottenpositionerna för rullningslisten. Standard är "false". font Det typsnitt som ska användas för tidslinjen. text Texten som ska visas på tidslinjen. Om tidslinjens ID är inställt på "__timeout__" och värdet för denna egenskap är inställt på "@TIMEOUT_NOTIFICATION_SHORT@", "@TIMEOUT_NOTIFICATION_MIDDLE@" eller "@TIMEOUT_NOTIFICATION_LONG@", kommer GRUB att uppdatera denna egenskap med ett informativt meddelande när timeout närmar sig. circular_progress Visar en cirkulär tidsindikator. Utseendet på denna komponent bestäms av två bilder: *center*-bilden och *tick*-bilden. Centerbilden är generellt större och kommer att ritas i mitten av komponenten. Runt omkretsen av en cirkel inom komponenten kommer tick-bilden att ritas ett visst antal gånger, beroende på komponentens egenskaper. Egenskaper:
id Sätt till "__timeout__" för att visa den förflutna tiden till en automatisk start av standardposten. center_bitmap Filnamnet på bilden som ska ritas i mitten av komponenten. tick_bitmap Filnamnet på bilden som ska ritas för bockmarkeringarna. num_ticks Antalet bockar som utgör en full cirkel. ticks_disappear Boolean-värde som indikerar om bockmarkeringarna progressivt ska visas eller progressivt försvinna när *value* närmar sig *end*. Ange "true" eller "false". Standard är "false". start_angle Positionen för den första bockmarkeringen som ska visas eller försvinna. Mätt i "parrots", 1 "parrot" = 1/256 av den fulla cirkeln. Använd värden "xxx deg" eller "xxx °" för att ange vinkeln i grader. boot_menu Visar GRUB:s startmeny. Det möjliggör val av poster och genomförandet av dem. Egenskaper:
item_font Det typsnitt som ska användas för menyposttitlarna. selected_item_font Det typsnitt som ska användas för den valda menyposten, eller "inherit" (standard) för att använda "item_font" för den valda menyposten också. item_color Färgen som ska användas för menyposttitlarna. selected_item_color Färgen som ska användas för den valda menyposten, eller "inherit" (standard) för att använda "item_color" för den valda menyposten också. icon_width Bredden på menypostikonerna. Ikonerna skalas till angiven storlek. icon_height Höjden på menypostikonerna. item_height Höjden på varje menypost i pixlar. item_padding Mängden utrymme i pixlar som ska lämnas på varje sida av menypostinnehållet. item_icon_space Utrymmet mellan en postikon och titeltexten, i pixlar. item_spacing Mängden utrymme som ska lämnas mellan menyposter, i pixlar. menu_pixmap_style Bildfils mönstret för menyns ramstylade box. Exempel: "menu_*.png" (detta kommer att använda bilder som "menu_c.png", "menu_w.png", "menu_nw.png" etc.) item_pixmap_style Bildfils mönstret för postens stylade box. selected_item_pixmap_style Bildfils mönstret för den markerade postens highlight-stylade box. scrollbar Boolean-värde som indikerar om rullningslisten ska ritas om ram- och tumstylade boxar är konfigurerade. scrollbar_frame Bildfils mönstret för hela rullningslisten. Exempel: "scrollbar_*.png" scrollbar_thumb Bildfils mönstret för rullningslistens tumme (den del av rullningslisten som rör sig när rullning sker). Exempel: "scrollbar_thumb_*.png" scrollbar_thumb_overlay Om detta alternativ är inställt på "true" kommer rullningslistens tumme sidlappar (varje skiva förutom mittskivan) att överlappa rullningslistens ram sidlappar. Och mittskivan på rullningslistens tumme kan flytta hela vägen (från toppen till botten), och ritas på mittskivan på rullningslistens ram. På så sätt kan vi göra en rullningslist med rundformade kanter så att det inte blir något fritt utrymme från tummen till ramen i topp- och bottenpositionerna för rullningslisten. Standard är "false". scrollbar_slice Ramstylade boxens skiva där rullningslisten kommer att ritas. Möjliga värden är "west", "center", "east" (standard). "west" - rullningslisten kommer att ritas i västskivan (högerjusterad). "east" - rullningslisten kommer att ritas i östskivan (vänsterjusterad). "center" - rullningslisten kommer att ritas i mittskivan. Obs: i fallet med "center" skiva: a) Om rullningslisten ska ritas minskas menypostens bredd med rullningslistens bredd och rullningslisten ritas på höger sida av mittskivan. b) Om rullningslisten inte kommer att ritas är menypostens bredd bredden på mittskivan. c) Vi behöver inte nödvändigtvis menyns pixmap box för att visa rullningslisten. scrollbar_left_pad Vänster rullningslistens stoppning i pixlar. Används inte om "scrollbar_slice" är "west". scrollbar_right_pad Höger rullningslistens stoppning i pixlar. Används inte om "scrollbar_slice" är "east". scrollbar_top_pad Topp rullningslistens stoppning i pixlar. scrollbar_bottom_pad Botten rullningslistens stoppning i pixlar. visible Sätt till "false" för att dölja startmenyn. canvas Canvas är en behållare som tillåter manuell placering av komponenter inom den. Den ändrar inte positionerna för sina barnkomponenter. Den tilldelar alla barnkomponenter deras föredragna storlekar. hbox *hbox*-behållaren lägger ut sina barn från vänster till höger och ger var och en sin föredragna bredd. Höjden på varje barn sätts till maximum av de föredragna höjderna för alla barn. vbox *vbox*-behållaren lägger ut sina barn från toppen till botten och ger var och en sin föredragna höjd. Bredden på varje barn sätts till maximum av de föredragna bredderna för alla barn. 7.3.6 Gemensamma egenskaper Följande egenskaper stöds av alla komponenter:
'left' Avståndet från behållarens vänstra kant till objektets vänstra kant i något av följande format:
x Värde i pixlar p% Procent p%+x blandning av båda 'top' Avståndet från behållarens vänstra kant till objektets vänstra kant i samma format.
'width' Objektets bredd i samma format.
'height' Objektets höjd i samma format.
'id' Identifieraren för komponenten. Detta kan vara vilken godtycklig sträng som helst. ID:t kan användas av skript för att hänvisa till olika komponenter i GUI-komponentträdet. För närvarande finns det ett speciellt ID-värde som GRUB känner igen:
"__timeout__" Komponent med detta ID kommer att uppdateras av GRUB och indikera den förflutna tiden till en automatisk start av standardposten. Berörda komponenter: "label", "circular_progress", "progress_bar".
Sidslut
Orginalhemsidan på Engelska :https://www.gnu.org/software/grub/manual/grub/html_node/Theme-file-format.html#Introduction-1 GNU GRUB Manual
Det här är en maskinöversättning av GNU-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp Stockholm som har sponsrat Linux.se med webserver.