Grips voor Greybird aanpassen

Uit Xubuntuvraagstukken
Naar navigatie springenNaar zoeken springen

Inleiding

In Xubuntu is de standaard vensterbeheerder "Greyird". Een heel mooi vormgegeven venster, helaas niet erg handig in het gebruik als je gewend bent om een venster bij de hoeken en randen te pakken om groter en kleiner te maken. Maar natuurlijk is dat wel aan te passen, al kost het wel wat werk.

stap 1: bestanden kopiëren

Kopieer de map /usr/share/themes/Greybird-dark gekopieerd naar ~/.local/share/themes/Greybird-dark-thick.

terminal

sudo cp /usr/share/themes/Greybird-dark ~/.local/share/themes/Greybird-dark-thick

Hiermee heb je een thema gekopieerd dat je zelf kan bewerken zonder dat de systeemthema's overhoop gehaald worden.

Uit de map /usr/share/themes/Daloa/xfwm4 de volgende bestanden gekopieerd (bestaande bestanden overschrijven) naar ~/.local/share/themes/Greybird-dark-thick/xfwm4:

bottom-active.xpm 
bottom-inactive.xpm     
left-active.xpm   
left-inactive.xpm   
right-active.xpm   
right-inactive.xpm   
bottom-left-active.xpm
bottom-left-inactive.xpm   
bottom-right-active.xpm   
bottom-right-inactive.xpm

stap 2: de opbouw van XPM bestanden

Dit stuk kostte me wat meer hoofdbrekens. Het eerste was de kleurcodering en het tweede de opbouw van de XPM bestanden. Maar laten we eerst kijken naar de opbouw van een bestand. Ik heb gekozen voor ~/.themes/Greybird-dark-thick/xfwm4/bottom-inactive.xpm (bestand openen in een tekstverwerker als mousepad):

/* XPM */
static char * bottom_inactive_xpm[] = {
"24 5 5 1",
"     c None",
"+    c #E0E0FF s inactive_hilight_1",
"@    c #A0A0FF s inactive_shadow_1",
"$    c #B0B0B0 s inactive_mid_2",
"#    c #C0C0C0 s inactive_color_2",
"########################",
"########################",
"########################",
"++++++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@@@@@"};


Dit is de weergave van een stukje onderrand als het venster niet actief is. Als we bij regel 3 beginnen, dan staan er 4 getallen. Dit betekent dat het stukje rand wat wordt beschreven [24px breed][5px hoog][5 kleuren bevat][1 teken per pixel] is.

Vervolgens worden er 5 regels (dus regel 4 t/m 8) waarin een symbool aan een kleur wordt gekoppeld. Hier kom ik straks nog op terug. De spatie is gekoppeld aan "none" en geeft transparant weer.

En vervolgens een blok waarin weergegeven wordt welk pixel welke kleur moet krijgen. In dit geval moeten er 5 regels zijn (5px hoog) en elke regel moet 24tekens breed zijn (excl de aanhalingstekens en komma's).

Kanttekening 1:
Voor een onderrand is de breedte van een XPM volgens mij niet van belang. Bij de Daloa is deze 24px breed, maar bijvoorbeeld bij de Greybird-dark is deze origineel maar 2px breed. Ik heb nog niet gemerkt dat een mindere breedte niet zou werken. De hoogte is in dit geval wel van belang.

Je zou het kunnen gebruiken om een repeterende versiering op de rand te kunnen maken. Hieronder zie zie je een voorbeeld, waarin ik een paar pixels transparant heb gemaakt. emoticon

deze mogelijkheden zijn er om vensterranden te "versieren".

Bij de zijranden gaat het dus juist dat de breedte wel van belang is, maar niet de hoogte. Maar dat lijkt me evident.

Bij de hoeken is de breedte en hoogte wel van belang.

Kanttekening 2:
De kleuren zijn opgebouwd uit een symbool, dan de c voor color, de hex code van de kleur en bij Daloa een s en een verwijzing naar een standaardkleur van het thema. Hier heb ik wat mee zitten worstelen, omdat ik niet heb kunnen vinden waar deze kleuren gedefinieerd worden. Wat ik heb gelezen zou het in de gtkrc bestand van het thema moeten staan. Voor Greybird-dark, het thema dat ik gebruik, heeft inderdaad een ~/.themes/Greybird-dark_thick/gtk-2.0/gtkrc. Helaas heb ik nog niet uitgevonden wat dan de standaardkleuren van het thema zijn. Het merkwaardige is dat in de XPM bestand van Greybird-dark de verwijzing naar het thema niet worden gebruikt, maar Daloa er wel gebruik van maakt. Waarschijnlijk om de vensters van Daloa beter bij een gekozen thema aan te laten sluiten.

stap 3: Het bewerken van XPM bestanden

Nu ik door had hoe het XPM bestand was opgebouwd kon ik het ook voor elkaar krijgen om de hoeken en de randen van ons eigen Greybird-dark-thick vensterthema netjes te laten aansluiten.

Hiervoor opende ik het bestand voor de linker bovenhoek van een actief venster ~/.themes/Greybird-dark_thick/xfwm4/top-left-active.xpm met mousepad:

/* XPM */
static char * top_left_active_xpm[] = {
"8 24 4 1",
"    c None",
".   c #6C6C6C",
"+   c #000000",
"@   c #3B3E3F",
"     ...",
"   ..+++",
"  .@@@@@",
" .@@@@@@",
" .@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@"};


De hoek is 8px breed en 24px hoog. De spaties in de eerste regel van de code geven mooi de ronding van de hoek van het venster weer. Maar voor ons is de onderste regel van belang, die moet gaan aansluiten bij de linkerrand. De secret code is ".@@@@@@@", waar de "." staat voor een iets lichtere kleur grijs dan de "@".

Het bestand van de actieve linker rand is

/* XPM */
static char * left_active_xpm[] = {
"5 24 5 1",
"    c None",
"+   c #E0E0FF s active_hilight_1",
"@   c #A0A0FF s active_shadow_1",
"$   c #B0B0B0 s active_mid_2",
"#   c #C0C0C0 s active_color_2",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###",
"@+###"};


En nu is het wat verwarrend, want de kleurcodes komen totaal niet overeen en de breedte van de rand in de hoek (8px) lijkt anders dan de breedte van de rand (5px). Dat laatste maakt niet uit.

We moeten er voor zorgen dat de "@" nu de kleur krijgt van de "." uit ons Greybird-dark bestand en de "+"en de "#" de kleur van "@ " uit het Greybird bestand.

De kleurcodes moeten dan als volgt worden:

...
"    c None",
"+   c #3B3E3F",
"@   c #6C6C6C",
"$   c #B0B0B0 s active_mid_2",
"#   c #3B3E3F",
...

Deze aanpassing - die met "sed" te automatiseren is - is ook nodig voor de alle bestanden die we uit Daloa hebben gekopieerd:

bottom-active.xpm
bottom-inactive.xpm     
left-active.xpm   
left-inactive.xpm   
right-active.xpm   
right-inactive.xpm   
bottom-left-active.xpm
bottom-left-inactive.xpm   
bottom-right-active.xpm   
bottom-right-inactive.xpm

Bronnen