Zaawansowana edycja tematów

Większość tej sekcji została wzięta lub na jej wygląd wpłynęła strona podręcznika systemowego o Fluxboksie z wersji 0.1.13. Zazwyczaj strony podręcznika są najbardziej autorytatywne, ale ten dokument powinien być trochę jaśniejszy dla początkującego autora styli.

By zrozumieć jak działa mechanizm styli dobrze jest wiedzieć co nieco jak działają zasoby X11.

Zasoby X11 składają się z klucza i wartości. Klucz składa się z kilku mniejszych kluczy (czasami określanych jako dzieci), rozdzielonych kropką (.). Klucze mogą zawierać gwiazdę (*) i wtedy działają jak maska, co oznacza, że jedna linia wpisanego tekstu może pasować do wielu kluczy. Jest to przydatne w stylach, które np. składają się z jednego lub dwóch kolorów.

Fluxbox pozwala ci na skonfigurowanie jego trzech głównych komponentów: belkę, menu i dekoracje okien. Szczelina automatycznie dziedziczy styl po belce, ale może też być skonfigurowana oddzielnie, jeśli jest taka potrzeba. Małe okienko pokazujące położenie okna podczas jego przenoszenia pożycza styl z belki tytułowej okna.

Poniżej jest kilka przykładów ilustrujących prostą składnię:

Example 9-1. Styl zegara na belce

    toolbar.clock.color:  green

To ustawi color zasobu zegara na belce na green (zielony). Inny przykład:

Example 9-2. Styl menu

    menu*color: rgb:3/4/5

To ustawi kolor zasobu menu i wszystkich jego dzieci na rgb:3/4/5. Zobacz strony manuala od X11, tam znajdziesz opis kolorów. Tak więc powyższe tyczy się menu.title.color jak również menu.frame.color. A tym:

Example 9-3. Styl czcionki

    *font: -b&h-lucida-medium-r-normal-*-*-140-*

ustawiasz zasób czcionki dla wszystkich kluczy na tą nazwę czcionki na raz. Po informacje odnośnie zainstalowanych czcionek w twoim systemie sięgnij po program xfontsel, gfontsel lub xlsfonts.

A teraz to, co czyni Fluxboksa tak widowiskowym, czyli jego możliwość renderowania tekstur w locie. Opisy tekstur są podawana bezpośrednio do kluczy, do których powinny się tyczyć:

Example 9-4. Styl tekstur

    toolbar.clock:   Raised Gradient Diagonal Bevel1
    toolbar.clock.color: rgb:8/6/4
    toolbar.clock.colorTo: rgb:4/3/2

Nie martw się, wyjaśnimy jak działają powyższe dyrektywy. Opis tekstury składa się maksymalnie z pięciu pól, którymi są:

Table 9-1. Dyrektywy tekstur

DyrektywaOpis
Flat / Raised / Sunkennadaj komponentowi wygląd płaski, podniesiony lub wklęsły.
Gradient / Solidrysuj jednym kolorem lub teksturę z gradientu.
Horizontal / Vertical / Diagonal / Crossdiagonal / Pipecross / Elliptic / Rectangle / PyramidWybierz jeden z tych typów tekstur. Działają tylko, jeśli jest użyte razem z gradientem. Horizontal - poziomy, Vertical - pionowy, Diagonal - po przekątnej, Crossdiagonal - po obu przekątnych, Elliptic - eliptyczny, Rectangle - prostokątny, Pyramid - piramidyczny ;-)
Interlacedprzeplataj teksturę (ściemniaj każdą inną linię). Ta opcja jest najczęściej wykorzystywana przy grandientowych teksturach, ale od wersji Blackboksa 0.60.3 (i stąd w każdej wersji Fluxboksa) działa też ze stałymi teksturami.
Bevel1 / Bevel2rodzaj zaciemniana na kantach do użycia. Bevel1 jest domyślne. Zaciemnianie jest umieszczane na brzegach obrazka. Bevel2 jest alternatywą. Zaciemnianie jest umieszczane w odległości jednego piksela od brzegu obrazka.

Abstahując od opisu tekstur, jest również dostępna opcja ParentRelative, która sprawia, że komponent wygląda jak część rodziaca.

Wszystkie gradientowe tekstury są tworzone z dwóch kolorów: color (kolor początkowy) i colorTo (kolor końcowy). Gdy przeplot jest włączony przy użyciu trybu Solid, zasób colorTo jest używane do określenia koloru przeplotu.

Kompletna lista komponentów i jakiego typu wartości zawierają jest dostępna tutaj - Appendix C.

Jest to długa lista, ale pamiętaj, że możesz utworzyć swój styl używając jednej komendy do ustawienia wielu kluczy, na przykład:

Example 9-5. Typowy, krótki styl

    *color:             slategrey
    *colorTo:           darkslategrey
    *unfocus.color:     darkslategrey
    *unfocus.colorTo:   black
    *textColor:         white
    *unfocus.textColor: lightgrey
    *font:              lucidasans-10