Theme file format: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
(27 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
== 7 Temafilsformat ==
= Temafilsformat =
=== 7.1 Introduktion ===
== 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
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
 
== Temaelement ==
=== 7.2 Temaelement ===
=== Färger ===
==== 7.2.1 Färger ====
Färger kan specificeras på flera sätt:
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")
* HTML-stil "#RRGGBB" eller "#RGB", där *R*, *G* och *B* är hexadecimala siffror (t.ex. "#8899FF")
Rad 10: Rad 9:
* Med "SVG 1.0 färgnamn" (t.ex. "cornflowerblue") som måste specificeras i små bokstäver.
* Med "SVG 1.0 färgnamn" (t.ex. "cornflowerblue") som måste specificeras i små bokstäver.


==== 7.2.2 Typsnitt ====
=== 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".
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 ====
=== Tidslinje för Timeout ===
Se figur 7.1
Se figur 7.1
Se figur 7.2
Se figur 7.2


Rad 21: Rad 21:
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.
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 ====
=== 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.
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 ====
=== Etiketter ===
Textetiketter kan placeras på starts
Textetiketter kan placeras på startskärmen. Typsnittet, färgen och den horisontella justeringen kan specificeras för etiketter. Om en etikett ges id "__timeout__", uppdateras även "text"-egenskapen för den etiketten med ett meddelande som informerar användaren om antalet sekunder som återstår till automatisk start. Detta är användbart om du vill att texten visas någon annanstans istället för direkt på tidslinjen.


==== 7.2.7 Stiliserade Boxar ====
=== Startmeny ===
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:
Startmenyn där GRUB visar menyposter från filen ”grub.cfg”. Det är en lista över objekt, där varje objekt har en titel och en valfri ikon. Ikonen väljs baserat på de *klasser* som specificeras för menyposten. Om det finns en PNG-fil med namnet ”myclass.png” i katalogen ”grub/themes/icons”, kommer den att visas för objekt som har klassen *myclass*. Startmenyn kan anpassas på flera sätt, såsom typsnittet och färgen som används för titeln på menyposten, samt genom att specificera stylade boxar för själva menyn och för markeringen av det valda objektet.


Nordväst (nw) Nord (n) Nordost (ne)
=== Stiliserade Boxar ===
Väst (w) Centrum (c) Öst (e)
En av de viktigaste funktionerna för att anpassa layouten är användningen av *stiliserade boxar*. En stiliserad box består av 9 rektangulära (och potentiellt tomma) regioner, som används för att sömlöst rita den stiliserade boxen på skärmen:
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.
* Nordväst (nw) Nord (n) Nordost (ne)
Hörnskivorna (nordväst, nordost, sydost och sydväst) skalas inte.
* Väst (w) Centrum (c) Öst (e)
Centrums
* Sydväst (sw) Söder (s) Sydost (se)
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:
För att stödja alla storlekar av boxar på skärmen, skalas mittskivan och skivorna för toppen, botten och sidorna till rätt storlek för komponenten på skärmen enligt följande regler:


Globala egenskaper.
* Kantremsorna (nord, syd, öst och väst) skalas i riktningen för kanten de är intill. Till exempel skalas västremsan vertikalt.
Konstruktion av komponenter.
* Hörnremsorna (nordväst, nordost, sydost och sydväst) skalas inte.
* Mittremsan skalas för att fylla det återstående utrymmet i mitten.


7.3.1 Globala Egenskaper
Som ett exempel på hur en bild kan delas upp, överväg den stiliserade boxen som används för en terminalvy.


7.3.2 Format
Figur 7.3


Globala egenskaper specificeras med det enkla formatet:
== Skapa Stiliserade Boxbilder ==
Vektorgrafikredigeraren Inkscape är ett mycket användbart verktyg för att skapa bilder för stiliserade boxar. En process som fungerar väl för att skära upp en ritning i nödvändiga bildremsor är:


name1: value1
* Skapa eller öppna ritningen du vill använda.
name2: "value which may contain spaces"
* Skapa ett nytt lager högst upp i lagerstacken. Gör det synligt. Välj detta lager som det aktuella lagret.
* Rita 9 rektanglar på din ritning där du vill ha remsorna. Rensa fyllningsalternativet och ställ in strecket till 1 pixel bred fast linje. Hörnen på remsorna måste mötas exakt; om det är av med en enda pixel kommer det troligen att vara uppenbart när den stiliserade boxen renderas i GRUB-menyn. Du bör förmodligen gå till Arkiv | Dokumentegenskaper | Rutnät och aktivera ett rutnät eller skapa en guide (klicka på en av linjalerna bredvid ritningen och dra över ritningen; släpp musknappen för att placera guiden) för att hjälpa till att placera rektanglarna exakt.
* Högerklicka på rektangeln för mittremsan och välj Objektegenskaper. Ändra "Id" till "slice_c" och klicka på Sätt. Upprepa detta för de återstående 8 rektanglarna och ge dem Id-värden som "slice_n", "slice_ne", "slice_e", och så vidare beroende på plats.
* Spara ritningen.
* Välj alla remsrektanglar. Med remslagret valt kan du enkelt trycka på Ctrl+A för att välja alla rektanglar. Statusfältet bör ange att 9 rektanglar är valda.
* Klicka på lagrets döljikon för remslagret i lagerpaletten. Rektanglarna kommer att förbli valda, även om de är dolda.
* Välj Arkiv | Exportera Bitmap och kryssa i rutan *Batchexport 9 valda objekt*. Se till att *Dölj alla utom valda* inte är ikryssad. klicka på *Exportera*. Detta kommer att skapa PNG-filer i samma katalog som ritningen, uppkallade efter remsorna. Dessa kan nu användas för en stiliserad box i ett GRUB-tema.


name3: #88F
== 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.)


I detta exempel tilldelas name3 ett färgvärde.
Temafilen innehåller två typer av uttalanden:


==== 7.3.3 Lista över Globala Egenskaper ====
Globala egenskaper.
itle-text Specificerar texten som ska visas överst i mitten av skärmen som en titel.
Konstruktion av komponenter.
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.
== Format ==
Globala egenskaper specificeras med följande enkla format:
<pre>
namn1: värde1
namn2: "värde som kan innehålla mellanslag"
namn3: #88F
</pre>
I detta exempel tilldelas namn3 ett färgvärde.


==== 7.3.4 Konstruktion av Komponenter ====
=== Lista över Globala Egenskaper ===
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.
* '''title-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änd. Kvar för bakåtkompatibilitet.
* '''message-color''' - För närvarande oanvänd. Kvar för bakåtkompatibilitet.
* '''message-bg-color''' - För närvarande oanvänd. 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.


Komponenter skapas i temafilen genom att prefixa typen av komponent med ett '+'-tecken:
=== Komponentkonstruktion ===
Större anpassningsbarhet ges av 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:
<pre>
+ label { text="GRUB" font="aqui 11" color="#8FF" }
+ label { text="GRUB" font="aqui 11" color="#8FF" }
</pre>


egenskaper för en komponent specificeras som "name = value" (blanksteg kring token är valfria och ignoreras) där *value* kan vara:
Egenskaper för en komponent specificeras som "name = value" (blanksteg runt token är valfritt och ignoreras) där *value* kan vara:
 
* ett enda ord (t.ex., "align = center", "color = #FF8080"),
ett enda ord (t.ex. "align = center", "color = #FF8080"),
* en citatsträng (t.ex., "text = "Hello, World!""),
en citatsträng (t.ex. "text = "Hello, World!"") eller
* en tupel (t.ex., "preferred_size = (120, 80)").
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.
===  Komponentlista ===
Egenskaper:
<h3> Komponentlista</h3>
<p>Följande är en lista över komponenterna och de egenskaper de stöder:</p>


id Sätt till "__timeout__" för att visa den förflutna tiden till en automatisk start av standardposten.
<h4>Etikett</h4>
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.
<p>En etikett visar en textlinje.</p>
font Det typsnitt som ska användas för textvisning.
<ul>
color Färgen på texten.
  <li><strong>id:</strong> Ställ in till "__timeout__" för att visa tiden som förflutit till automatisk start av standardvalet.</li>
align Den horisontella inriktningen av texten inom komponenten. Alternativen är "left", "center" och "right".
  <li><strong>text:</strong> Texten som ska visas. Om "id" är inställt på "__timeout__" och ingen "text"-egenskap är inställd visas antalet sekunder. Om inställt på "@KEYMAP_SHORT@", "@KEYMAP_MIDDLE@" eller "@KEYMAP_LONG@" visas fördefinierad genvägsinformation.</li>
visible Sätt till "false" för att dölja etiketten.
  <li><strong>font:</strong> Typsnittet som ska användas för textvisning.</li>
image En komponent som visar en bild. Bilden skalas för att passa komponenten.
  <li><strong>color:</strong> Textens färg.</li>
Egenskaper:
  <li><strong>align:</strong> Textens horisontella justering inom komponenten. Alternativen är "left", "center" och "right".</li>
  <li><strong>visible:</strong> Ställ in till "false" för att dölja etiketten.</li>
</ul>


file Hela sökvägen till bildfilen som ska laddas.
<h4>Bild</h4>
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.
<p>En komponent som visar en bild. Bilden skalas för att passa komponenten.</p>
Egenskaper:
<ul>
  <li><strong>file:</strong> Hela sökvägen till bildfilen som ska laddas.</li>
</ul>


id Sätt till "__timeout__" för att visa den förflutna tiden till en automatisk start av standardposten.
<h4>Tidslinje</h4>
fg_color ForegroundColor för vanlig solidfärgsrendering.
<p>Visar en horisontellt orienterad tidslinje. Den kan renderas med enkla solida fyllda rektanglar eller med ett par pixmap-stylade boxar.</p>
bg_color Bakgrundsfärgen för vanlig solidfärgsrendering.
<ul>
border_color Ramfärgen för vanlig solidfärgsrendering.
  <li><strong>id:</strong> Ställ in till "__timeout__" för att visa tiden som förflutit till automatisk start av standardvalet.</li>
text_color Textfärgen.
  <li><strong>fg_color:</strong> Förgrundsfärg för enkel solidfärgsrendering.</li>
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.
  <li><strong>bg_color:</strong> Bakgrundsfärg för enkel solidfärgsrendering.</li>
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.
  <li><strong>border_color:</strong> Ramfärg för enkel solidfärgsrendering.</li>
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 höjdpunktslådan kan flytta hela vägen (från toppen till botten), och ritas på mittskivan på ramboxen. På 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".
  <li><strong>text_color:</strong> Textfärg.</li>
font Det typsnitt som ska användas för tidslinjen.
  <li><strong>bar_style:</strong> Stilboxens specifikation för ramen på tidslinjen. Exempel: "progress_frame_*.png". Om värdet är lika med "highlight_style" visas inga stilboxar.</li>
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.
  <li><strong>highlight_style:</strong> Stilboxens specifikation för det markerade området på tidslinjen. Exempel: "progress_hl_*.png". Om värdet är lika med "bar_style" visas inga stilboxar.</li>
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.
  <li><strong>highlight_overlay:</strong> Om detta alternativ är inställt på "true" kommer sidoremsorna på höjdpunktsboxen (varje remsa utom mittremsan) att överlappa ramboxens sidoremsor. Mittremsan höjdpunktsboxen kan röra sig hela vägen (från topp till botten), och ritas på mittremsan på ramboxen. På detta sätt kan vi skapa en tidslinje med rundade kanter så att det inte blir något fritt utrymme från höjdpunkten till ramen i övre och nedre tidslinjepositioner. Standard är "false".</li>
Egenskaper:
  <li><strong>font:</strong> Typsnittet som ska användas för tidslinjen.</li>
  <li><strong>text:</strong> 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.</li>
</ul>


id Sätt till "__timeout__" för att visa den förflutna tiden till en automatisk start av standardposten.
<h4>Cirkulär Framstegsindikator</h4>
center_bitmap Filnamnet på bilden som ska ritas i mitten av komponenten.
<p>Visar en cirkulär framstegsindikator. Utseendet på denna komponent bestäms av två bilder: center-bilden och tick-bilden. Centerbilden är generellt större och ritas i mitten av komponenten. Runt omkretsen av en cirkel inom komponenten ritas tick-bilden ett visst antal gånger, beroende på komponentens egenskaper.</p>
tick_bitmap Filnamnet på bilden som ska ritas för bockmarkeringarna.
<ul>
num_ticks Antalet bockar som utgör en full cirkel.
  <li><strong>id:</strong> Ställ in till "__timeout__" för att visa tiden som förflutit till automatisk start av standardvalet.</li>
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".
  <li><strong>center_bitmap:</strong> Filnamnet på bilden som ska ritas i mitten av komponenten.</li>
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.
  <li><strong>tick_bitmap:</strong> Filnamnet på bilden som ska ritas för tick-markeringarna.</li>
boot_menu Visar GRUB:s startmeny. Det möjliggör val av poster och genomförandet av dem.
  <li><strong>num_ticks:</strong> Antalet tick som utgör en full cirkel.</li>
Egenskaper:
  <li><strong>ticks_disappear:</strong> Boolean-värde som indikerar om tick-markeringar ska progressivt visas eller progressivt försvinna när värde närmar sig slut. Specificera "true" eller "false". Standard är "false".</li>
  <li><strong>start_angle:</strong> Positionen för den första tick-markeringen 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.</li>
</ul>


item_font Det typsnitt som ska användas för menyposttitlarna.
=== Gemensamma Egenskaper ===
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:
Följande egenskaper stöds av alla komponenter:


'left'
* '''left''' - Avståndet från behållarens vänstra kant till objektets vänstra kant i något av de tre formaten:
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
x Värde i pixlar
    * '''p%+x''' - Blandning av båda
p% Procent
* '''top''' - Avståndet från behållarens vänstra kant till objektets vänstra kant i samma format.
p%+x blandning av båda
* '''width''' - Objektets bredd i samma format.
'top'
* '''height''' - Objektets höjd i samma format.
Avståndet från behållarens vänstra kant till objektets vänstra kant 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 referera 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 kommer att indikera tiden som förflutit till en automatisk start av standardvalet. Berörda komponenter: "label", "circular_progress", "progress_bar".
'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 =
= Sidslut =
Orginalhemsidan på Engelska :https://www.gnu.org/software/grub/manual/grub/html_node/Theme-file-format.html#Introduction-1
Orginalhemsidan på Engelska :https://www.gnu.org/software/grub/manual/grub/html_node/Theme-file-format.html#Introduction-1
[[GNU GRUB Manual]]
[[GNU GRUB Manual]]
<HR>
<HR>
Rad 193: Rad 176:
https://www.linux.se/kontaka-linux-se/
https://www.linux.se/kontaka-linux-se/
<BR><BR>Tack till [https://datorhjalp.se Datorhjälp Stockholm] som har  sponsrat Linux.se med webserver.
<BR><BR>Tack till [https://datorhjalp.se Datorhjälp Stockholm] som har  sponsrat Linux.se med webserver.
[[Kategori:GRUB]]

Nuvarande version från 23 september 2024 kl. 06.10

Temafilsformat

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

Temaelement

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.

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".

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.

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.

Etiketter

Textetiketter kan placeras på startskärmen. Typsnittet, färgen och den horisontella justeringen kan specificeras för etiketter. Om en etikett ges id "__timeout__", uppdateras även "text"-egenskapen för den etiketten med ett meddelande som informerar användaren om antalet sekunder som återstår till automatisk start. Detta är användbart om du vill att texten visas någon annanstans istället för direkt på tidslinjen.

Startmeny

Startmenyn där GRUB visar menyposter från filen ”grub.cfg”. Det är en lista över objekt, där varje objekt har en titel och en valfri ikon. Ikonen väljs baserat på de *klasser* som specificeras för menyposten. Om det finns en PNG-fil med namnet ”myclass.png” i katalogen ”grub/themes/icons”, kommer den att visas för objekt som har klassen *myclass*. Startmenyn kan anpassas på flera sätt, såsom typsnittet och färgen som används för titeln på menyposten, samt genom att specificera stylade boxar för själva menyn och för markeringen av det valda objektet.

Stiliserade Boxar

En av de viktigaste funktionerna för att anpassa layouten är användningen av *stiliserade boxar*. En stiliserad box består av 9 rektangulära (och potentiellt tomma) regioner, som används för att sömlöst rita den stiliserade boxen på skärmen:

  • Nordväst (nw) Nord (n) Nordost (ne)
  • Väst (w) Centrum (c) Öst (e)
  • Sydväst (sw) Söder (s) Sydost (se)

För att stödja alla storlekar av boxar på skärmen, skalas mittskivan och skivorna för toppen, botten och sidorna till rätt storlek för komponenten på skärmen enligt följande regler:

  • Kantremsorna (nord, syd, öst och väst) skalas i riktningen för kanten de är intill. Till exempel skalas västremsan vertikalt.
  • Hörnremsorna (nordväst, nordost, sydost och sydväst) skalas inte.
  • Mittremsan skalas för att fylla det återstående utrymmet i mitten.

Som ett exempel på hur en bild kan delas upp, överväg den stiliserade boxen som används för en terminalvy.

Figur 7.3

Skapa Stiliserade Boxbilder

Vektorgrafikredigeraren Inkscape är ett mycket användbart verktyg för att skapa bilder för stiliserade boxar. En process som fungerar väl för att skära upp en ritning i nödvändiga bildremsor är:

  • Skapa eller öppna ritningen du vill använda.
  • Skapa ett nytt lager högst upp i lagerstacken. Gör det synligt. Välj detta lager som det aktuella lagret.
  • Rita 9 rektanglar på din ritning där du vill ha remsorna. Rensa fyllningsalternativet och ställ in strecket till 1 pixel bred fast linje. Hörnen på remsorna måste mötas exakt; om det är av med en enda pixel kommer det troligen att vara uppenbart när den stiliserade boxen renderas i GRUB-menyn. Du bör förmodligen gå till Arkiv | Dokumentegenskaper | Rutnät och aktivera ett rutnät eller skapa en guide (klicka på en av linjalerna bredvid ritningen och dra över ritningen; släpp musknappen för att placera guiden) för att hjälpa till att placera rektanglarna exakt.
  • Högerklicka på rektangeln för mittremsan och välj Objektegenskaper. Ändra "Id" till "slice_c" och klicka på Sätt. Upprepa detta för de återstående 8 rektanglarna och ge dem Id-värden som "slice_n", "slice_ne", "slice_e", och så vidare beroende på plats.
  • Spara ritningen.
  • Välj alla remsrektanglar. Med remslagret valt kan du enkelt trycka på Ctrl+A för att välja alla rektanglar. Statusfältet bör ange att 9 rektanglar är valda.
  • Klicka på lagrets döljikon för remslagret i lagerpaletten. Rektanglarna kommer att förbli valda, även om de är dolda.
  • Välj Arkiv | Exportera Bitmap och kryssa i rutan *Batchexport 9 valda objekt*. Se till att *Dölj alla utom valda* inte är ikryssad. klicka på *Exportera*. Detta kommer att skapa PNG-filer i samma katalog som ritningen, uppkallade efter remsorna. Dessa kan nu användas för en stiliserad box i ett GRUB-tema.

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.

Format

Globala egenskaper specificeras med följande enkla format:

namn1: värde1
namn2: "värde som kan innehålla mellanslag"
namn3: #88F

I detta exempel tilldelas namn3 ett färgvärde.

Lista över Globala Egenskaper

  • title-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änd. Kvar för bakåtkompatibilitet.
  • message-color - För närvarande oanvänd. Kvar för bakåtkompatibilitet.
  • message-bg-color - För närvarande oanvänd. 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.

Komponentkonstruktion

Större anpassningsbarhet ges av 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 runt token är valfritt och ignoreras) där *value* kan vara:

  • ett enda ord (t.ex., "align = center", "color = #FF8080"),
  • en citatsträng (t.ex., "text = "Hello, World!""),
  • en tupel (t.ex., "preferred_size = (120, 80)").

Komponentlista

Komponentlista

Följande är en lista över komponenterna och de egenskaper de stöder:

Etikett

En etikett visar en textlinje.

  • id: Ställ in till "__timeout__" för att visa tiden som förflutit till automatisk start av standardvalet.
  • text: Texten som ska visas. Om "id" är inställt på "__timeout__" och ingen "text"-egenskap är inställd visas antalet sekunder. Om inställt på "@KEYMAP_SHORT@", "@KEYMAP_MIDDLE@" eller "@KEYMAP_LONG@" visas fördefinierad genvägsinformation.
  • font: Typsnittet som ska användas för textvisning.
  • color: Textens färg.
  • align: Textens horisontella justering inom komponenten. Alternativen är "left", "center" och "right".
  • visible: Ställ in till "false" för att dölja etiketten.

Bild

En komponent som visar en bild. Bilden skalas för att passa komponenten.

  • file: Hela sökvägen till bildfilen som ska laddas.

Tidslinje

Visar en horisontellt orienterad tidslinje. Den kan renderas med enkla solida fyllda rektanglar eller med ett par pixmap-stylade boxar.

  • id: Ställ in till "__timeout__" för att visa tiden som förflutit till automatisk start av standardvalet.
  • fg_color: Förgrundsfärg för enkel solidfärgsrendering.
  • bg_color: Bakgrundsfärg för enkel solidfärgsrendering.
  • border_color: Ramfärg för enkel solidfärgsrendering.
  • text_color: Textfärg.
  • bar_style: Stilboxens specifikation för ramen på tidslinjen. Exempel: "progress_frame_*.png". Om värdet är lika med "highlight_style" visas inga stilboxar.
  • highlight_style: Stilboxens specifikation för det markerade området på tidslinjen. Exempel: "progress_hl_*.png". Om värdet är lika med "bar_style" visas inga stilboxar.
  • highlight_overlay: Om detta alternativ är inställt på "true" kommer sidoremsorna på höjdpunktsboxen (varje remsa utom mittremsan) att överlappa ramboxens sidoremsor. Mittremsan på höjdpunktsboxen kan röra sig hela vägen (från topp till botten), och ritas på mittremsan på ramboxen. På detta sätt kan vi skapa en tidslinje med rundade kanter så att det inte blir något fritt utrymme från höjdpunkten till ramen i övre och nedre tidslinjepositioner. Standard är "false".
  • font: Typsnittet 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.

Cirkulär Framstegsindikator

Visar en cirkulär framstegsindikator. Utseendet på denna komponent bestäms av två bilder: center-bilden och tick-bilden. Centerbilden är generellt större och ritas i mitten av komponenten. Runt omkretsen av en cirkel inom komponenten ritas tick-bilden ett visst antal gånger, beroende på komponentens egenskaper.

  • id: Ställ in till "__timeout__" för att visa tiden som förflutit till automatisk start av standardvalet.
  • center_bitmap: Filnamnet på bilden som ska ritas i mitten av komponenten.
  • tick_bitmap: Filnamnet på bilden som ska ritas för tick-markeringarna.
  • num_ticks: Antalet tick som utgör en full cirkel.
  • ticks_disappear: Boolean-värde som indikerar om tick-markeringar ska progressivt visas eller progressivt försvinna när värde närmar sig slut. Specificera "true" eller "false". Standard är "false".
  • start_angle: Positionen för den första tick-markeringen 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.

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 de tre formaten:
   * 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 referera 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 kommer att indikera tiden som förflutit till en automatisk start av standardvalet. 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.