cu numele care va fi numele subiectului tău. În ciuda faptului că Metacity va găsi un subiect în ambele directoare de mai sus, este recomandabil să părăsiți subiectul în directorul de acasă în timp ce îl scrieți și depanați. Următorul pas în crearea unei teme este de a edita fișierul numit "metacity-theme-1.xml", pe care trebuie să-l creați în directorul tematic. Acesta este un fișier care conține o descriere XML a temei, în conformitate cu această descriere DTD. Pentru a crea acest fișier, este mai bine să folosiți tema existentă prin copierea fișierului specificat și apoi modificarea acestuia, în loc să creați o nouă temă de la zero. Primele câteva linii vor arăta astfel:
Bazele creării unei teme
Înainte de a scufunda într-o descriere detaliată a fiecărei părți, hai să aruncăm o privire rapidă.
Tipuri de ferestre acceptate
Există 6 tipuri speciale de ferestre pe care Metacity le înțelege:
Când creați o temă pentru Metacity, vă recomandăm să utilizați aplicația metacity-theme-viewer. care este special conceput pentru testarea subiectelor. Pentru a utiliza această aplicație, specificați doar subiectul pe care doriți să îl încărcați ca argument. Acest subiect va fi descărcat și analizat și, dacă există erori în el, veți vedea mesajele de pe linia de comandă. Trebuie să corectați toate erorile înainte ca tema să fie descărcată cu succes.
Această aplicație este de fapt utilă numai pentru proiectarea stilului de decorare a ferestrei, deoarece nu veți putea accesa acțiunile pe care le-ați alocat butoanelor, precum și ferestrele de meniu.
Pentru a comuta la noua temă, utilizați fie gconftool-2
sau interfața cu utilizatorul din Opțiuni -> Tematică -> Detalii temă, selectați fila "Fereastră fereastră". Când folosiți gconftool2-. tu
trebuie să utilizați următoarea comandă -
gconftool-2 - tip = șir - set / apps / metacity / general / theme [theme_name]
Aplicația de vizualizare temă Metacity - pentru testarea temelor
Adânc înăuntru
Cadrul geometriei
Primul lucru pe care trebuie să-l faceți este să creați o "geometrie a cadrului". Numele geometriei ramei se va referi mai târziu la "stilul cadru".
Următoarea diagramă arată diferite dimensiuni pe care le puteți schimba în geometria cadrului:
Specificațiile geometriei cadrului
Geometria cadrului are mai multe atribute opționale, pe care le puteți defini, de asemenea:
Stabilește dacă înălțimea textului din titlu al ferestrei este inclusă în calculul înălțimii. Dacă nu este specificat, valoarea implicită este adevărată.
Utilizați marcajul Pango - xx-mic, x-mic, mic, mediu, mare, x-mare și xx-mare. Dacă nu este specificat, va fi folosit fontul desktop.
Stabilește dacă colțul din stânga sus al ferestrei va fi rotunjit. Dacă nu este specificat, valoarea implicită este falsă.
Stabilește dacă colțul din dreapta sus al ferestrei va fi rotunjit. Dacă nu este specificat, valoarea implicită este falsă.
Stabilește dacă colțul din stânga jos al ferestrei va fi rotunjit. Dacă nu este specificat, valoarea implicită este falsă.
Stabilește dacă colțul din dreapta jos al ferestrei va fi rotunjit. Dacă nu este specificat, valoarea implicită este falsă.
După ce setați geometria cadrului, puteți utiliza moștenirea. Aici există o simplă suprapunere a oricăror valori, de la cele care au fost moștenite de la părinte.
În loc să setați mărimea butoanelor, puteți seta numai factorul de perspectivă.
Operațiuni de desen
"operațiunile de desen" (operațiunile de pictura) reprezintă baza pentru crearea temei Metacity. Pentru a trage cu succes o parte a cadrului, trebuie să setați operația de desen pentru această "piesă de cadru" (partea cadru).
Operațiile de desen sunt, de obicei, descrise la început, dar pot fi, de asemenea, construite direct în locul potrivit [a se vedea exemplu de mai jos]. Pentru operațiile de desen, este permisă următoarea listă de operatori:
Desenează o linie cu culoarea de culoare specificată de la coordonate (x1, y1) la (x2, y2). Culorile pot fi specificate prin nume precum "albastru", hex tip "# FF0099" sau culoare din tema GTK, date în formularul "gtk: base [NORMAL]". exemple de mai jos]. Există atribute adiționale ca lățimea. dash_on_length și dash_off_length. care în mod prestabilit sunt setate la "0".
Desenează un patrulater din (x, y) și cu lățimea specificată și înălțimea înălțimii. Există un atribut suplimentar completat. care este setat la "false" în mod implicit.
Desenează un arc începând de la (x, y) și cu o lățime a spatelui. înălțime. unghiul inițial de start_angle și al doilea unghi de înclinare. Există un atribut suplimentar completat. care este setat la "false" în mod implicit.
Se dă o listă cu alte operații de desen cu numele și valorile date tile_width și tile_height. Există argumente suplimentare (x, y), lățime. înălțime. tile_xoffset și tile_yoffset cu. care implicit au valoarea FIXME.
Stilul de frontieră
Când creați un "stil de cadru", asociați diferite "piese de cadru" și "butoane de fereastră" cu o "geometrie a cadrelor" speciale. În mod normal, trebuie să creați un stil pentru astfel de stări de fereastră ca normal. maximizat. umbrite. maximized_and_shaded și având în vedere dependența de un astfel de lucru, cum ar fi: dacă fereastra se va concentra sau nu.
Mai întâi, vom crea un șablon care va conține toate informațiile necesare pentru desenarea acestui stil de cadru.
La stabilirea stilului ramei, este permisă și moștenirea. Puteți specifica un stil diferit care suprascrie stilul părinte.
Elemente de cadru
Pentru a desena părți ale cadrului, pentru fiecare parte a cadrului trebuie să furnizați o operație de desen. Dacă omiteți orice parte, atunci nu se va trage nimic pentru această parte a cadrului.
Alternativ, după cum sa menționat mai devreme, puteți oferi o operație de desen in linie.
Următoarele diagrame prezintă diferite piese care pot avea un stil în cadrul specificat:
Butoane pentru ferestre
Așa cum am menționat mai devreme, pentru un cadru dat, trebuie să specificați un set minim de butoane pentru acesta. Metodele de desenare ar trebui să fie redate pentru astfel de butoane cât mai apropiate, maximizează, minimizează și meniul, în timp ce pentru fiecare dintre cele două stări - normale și presate. Dacă nu este specificat prelight, pentru această stare va fi folosit normal.
Înainte de a stabili butoanele ferestrei, puteți defini cum să desenați o parte a butonului, în funcție de poziția din interiorul cadrului ferestrei. Dacă toate butoanele dvs. au același fundal, trebuie să specificați numai operațiile de desen pentru left_middle_background și right_middle_background.
Dacă toate aceste informații sunt puse împreună în același stil de cadru "stil cadru", atunci ar putea arăta astfel:
Pictogramele de meniu
În meniul ferestrei, trebuie să specificați pictogramele pentru elementele de meniu Închidere, Maximizare, Reducere maximă și Minimizare. Este suficient să setați doar operațiile de desen pentru starea normală. Puteți specifica, opțional, operațiile de desen pentru toate celelalte stări, după cum sa discutat mai sus.
Listă de stiluri de cadre
După ce am creat diferite stiluri ale cadrului, trebuie să le reflectăm pe diferite stări de ferestre. Acest lucru se face prin crearea
"set de stil cadru". Atributul nume va fi apoi referit la tipul de fereastră specificat.
După cum puteți vedea, trebuie să furnizați un cadru pentru fiecare dintre stările ferestrei și plus, dacă focalizarea ferestrei nu este, și da. Atributul de stil se referă la "stilul de cadru". De asemenea, trebuie să furnizați atributul de redimensionare. setați la "ambele" pentru toate cadrele cu starea normală. De asemenea, puteți specifica în mod opțional cadre pentru alte atribute de redimensionare, cum ar fi nici una. orizontală și verticală.
În cele din urmă, trebuie să oferiți o reflectare a "tipurilor de ferestre" în seturile de cadre "specificate". Pentru fiecare tip de fereastră, este necesară o listă de stiluri - normală. dialog. modal_dialog. meniu. utilitate și frontieră
După cum puteți vedea, crearea temei Metacity va dura ceva timp. Este mai bine să luați subiecte pregătite și să le schimbați ceea ce doriți, în loc să scrieți un subiect de la zero. Multe teme [Crux și Aqua sunt exemple bune] se bazează și pe imagini pe care nu le veți schimba cu ușurință. Deși temele care utilizează imaginile pot părea foarte tentante, trebuie să înțelegeți că redarea unui astfel de subiect va dura mai mult timp.
O bună resursă pentru subiectele Metacity este art.gnome.org. Raportați bug-uri prin bugzilla.gnome.org. selectând componenta "Metacity".