- Phase de préparation.
- Configuration.
- Thèmes.
- En-tête d'un fichier de thème.
- Images internes.
- Taille des éléments.
- Informations relatives aux textes.
- Couleurs utilisées.
- Images pour les boutons des barres de titre.
- Briques de base pour l'affichage.
- Bordure de mise en évidence des fenêtres.
- Corps des fenêtres clientes.
- Poignées de client pour le redimensionnement.
- Menus racine et client.
- Panneaux de basculement.
- Annexes.
Phase de préparation
1.1. La compilation
Les programmes suivants seront nécessaires à la compilation de Firebox :
- un compilateur C (comme GCC).
- [optionel] Autotools (autoconf, automake) si certains fichiers sont modifiés.
- les fichiers d'entête et les bibliothèques Xlib (paquet de development), distribués avec XOrg.
- le XML C parser and toolkit de Gnome, fichiers d'entête et les bibliothèques (paquet de development).
- [optionel] les fichiers d'entête et les bibliothèques X FreeType (paquet de development).
- [optionel] l'extension XOrg XRender.
- [optionel] les fichiers d'entête et les bibliothèques pour traiter le format PNG.
- [optionel] les fichiers d'entête et les bibliothèques pour traiter le format JPEG.
Une fois que toutes les dépendences sont installées, tout est prêt pour compiler. Décompressez l'archive puis, depuis le sommet de l'arborescence créée, lancez :
$ ./configure
$ make install
Compiler en utilisant les sources du dépôt Subversion peut être plus difficile. Consultez la FAQ à ce propos.
1.2. Le lancement
Dans la plupart des cas, le binaire Firebox se situe dans /usr/local/bin/.
1.2.1. En utilisant la commande startx.
La version longue est :
$ startx /usr/local/bin/firebox -- :3
... où 3 est l'indice d'un affichage libre.
Pour lancer Firebox en ne lançant que startx, vous devez éditer voter fichier $HOME/.xinitrc. Ce dernier
est un script shell, dont un contenu typique pour lancer Firebox est :
# [...]
exec firebox
Ensuite assurez vous que le fichier possède les droits nécessaires :
$ chmod 700 .xinitrc
1.2.2. Avec un Display Manager.
La meilleure chose à faire est de consulter la documentation relative à votre gestionnaire d'affichage spécifique pour y ajouter des éléments.
Une alternative consite à éditer le fichier $HOME/.xsession. Ce petit fichier peut être identique au .xinitrc ci-dessus.
Avec cette méthode, vous devrez choisir "defaut" comme cible dans le gestionnaire d'affichage.
Dans ce cas, aucun droit d'exécution n'est requis.
Configuration.
Pour l'instant, veuillez utiliser l'éditeur de préférences.
Thèmes.
Cette partie décrit la structure XML des fichiers de thème.
Même si elle est plutôt détaillée, le mieux sera toujours de jeter un coup d'oeil aux thèmes existants. Cette méthode permet d'apprendre les rudiments rapidement !
Pour un apprentissage plus sûr (et plus rapide), on peut suivre les étapes suivantes :
- commencer par lire les bases, au moins les sections 3.7.1 et 3.7.2.
- analyser le petit thème intitulé "Learning theme for beginners" (voir la page des téléchargements).
- essayer de modifier les éléments les plus visuels.
Le thème courant est chargé à partir de ~/.firebox/themes/current, qui peut être soit un répertoire soit un lien
symbolique. Dans tous les cas, il doit contenir un fichier theme.xml.
3.1. En-tête d'un fichier de thème.
La première section d'un fichier de thème est une en-tête contenant des informations sur le thème lui-même.
Toutes ses balises sont situées dans :
<FireboxTheme>
<Header>
...
</Header>
</FireboxTheme>
La balise Header est composée de plusieurs balises qui ne peuvent avoir que des chaînes de caractères comme valeurs :
- Title : nom arbitraire donné au thème.
- Version : version du thème.
- Require : version de Firebox requise pour obtenir un thème pleinement fonctionnel, par exemple '0.5.0'.
- Date : date de création.
- Author : nom de l'auteur.
- Link : une quelconque URL de référence.
3.2. Images internes.
3.2.1. Fond d'écran.
Firebox peut gérer à la fois des écrans de veilles ou des images comme fonds d'écran. Comme des programmes ne peuvent pas être joints aux thèmes sans difficulté, seules les images sont supportées ici.
Les images de fond d'écran sont définies comme ceci :
<FireboxTheme>
<Background>
<Picture>mon_image.png</Picture>
</Background>
</FireboxTheme>
3.2.2. Flèches pour les menus.
Il y a trois types de flèches pour les menus. Elles peuvent être définies comme cela :
<FireboxTheme>
<SystemPictures>
<SubmenusArrow>mon_image1.png</SubmenusArrow>
<DMenuLeftArrow>mon_image2.png</DMenuLeftArrow>
<DMenuRightArrow>mon_image3.png</DMenuRightArrow>
</SystemPictures>
</FireboxTheme>
3.3. Taille des éléments.
Les six balises de cette section sont situées dans :
<FireboxTheme>
<Sizes>
...
</Sizes>
</FireboxTheme>
3.3.1. Fenêtres d'encadrement.
La balise Borders définit la taille des fenêtres d'encadrement ; elle a quatre attributs :
|
|
La balise TitleBar spécifie des informations à propos des icônes et des boutons de la barre de titre ; ainsi, elle a aussi quatre attributs utiles :
|
|
3.3.2. Menus.
La balise Menu est utilisée pour définir la hauteur requise pour les éléments de menu. Si une taille n'est pas précisée, alors sa valeur par défaut est la hauteur de de la police de caractère avec laquelle l'étiquette est imprimée (ou 0 pour une barre de séparation).
- header : hauteur d'une en-tête de menu.
- entry : hauteur de quasiment tous les éléments de menu.
- separator : hauteur d'une barre de séparation.
La hauteur finale d'un élément de menu est égale à :
MAX(taille définie par l'utilisateur, taille requise pour l'impression) + 2 x compensation verticale (voir ci-dessous).
La balise Gap fournit des valeurs de compensation supplémentaires ; elle peut contenir les attributs suivants :
La balise Icon donne la taille des icônes grâce à ses attributs :
|
|
3.3.3. Panneaux de basculement.
Comme il y a deux sortes de panneaux, la balise Panel peut contenir plus qu'une seule balise :
- Icon : propriétés de l'aire réservée aux images dans les panneaux.
- Window : propriétés du panneau affiché lors du basculement de fenêtres.
- Desktop : propriétés du panneau affiché lors du basculement de bureaux.
La balise Icon a les attributs suivants :
- hsep : taille des bords gauche et droit ; espace entre l'aire des images et le texte.
- vsep : taille des bordures supérieure et inférieure.
- size : taille de l'aire des images.
|
La balise Window and Desktop peut avoir les attributs :
|
|
3.4. Informations relatives aux textes.
Les propriétés des textes sont situées dans :
<FireboxTheme>
<Text>
...
</Text>
</FireboxTheme>
Cinq types de police de caractères sont utilisées. Chacune est matérialisée par une balise :
- ClientTitle : police pour le titre des clients.
- MenuHead : police pour les en-têtes de menu.
- MenuItem : police pour les éléments de menu.
- Hit : police pour les caractères reconnus tapés dans le menu dynamique.
- Panel : police pour les panneaux.
Afin de définir ses propriétés, chaque balise peut avoir trois sous-balises.
3.4.1. Nom de police.
Le texte de la balise Font décrit la police à utiliser pour un texte donné.
Cette chaîne est celle produite pour des outils tels que xfontsel.
3.4.2. Alignement.
Le texte de la balise TextAlignment définit où le texte est placé dans la zone.
Il y a trois valeurs possibles :
- Left : le texte est à gauche.
- Center : le texte est centré.
- Right : le texte est à droite.
Par défault, seul le texte de barre de titre est centré. Tous les autres sont imprimés à gauche.
3.4.3. Position des ombres.
La balise TextShadow peut avoir les attributs suivants :
- alpha : canal alpha de l'ombre.
- x : décallage de l'ombre, 1 par défaut.
- y : décallage de l'ombre, 1 par défaut.
3.5. Couleurs utilisées.
Comme les objets de thème sont utilisés pour le rendu, il n'y a pas besoin de beaucoup d'autres définitions de couleur supplémentaires. Seules les couleurs d'impression manquent. C'est pourquoi 2x4=8 balises ont été introduites. Tout d'abord, celles de base :
- ClientTitle : couleur du texte de barre de titre.
- SwitcherTitle : couleur du texte des panneaux.
- MenuHead : couleur du texte des en-têtes de menu.
- MenuItem : couleur du texte des autres éléments de menu.
Comme des ombres peuvent être ajoutées, quatre balises supplémentaires sont aussi ajoutées :
- ClientTitleShadow : couleur de l'ombre de la barre de titre.
- SwitcherTitleShadow : couleur de l'ombre pour les panneaux.
- MenuHeadShadow : couleur de l'ombre pour les en-têtes de menu.
- MenuItemShadow : couleur de l'ombre pour les autres éléments de menu.
Par défaut, la couleur des ombres est toute noire.
Toutes ces balises sont situées dans :
<FireboxTheme>
<Colors>
...
</Colors>
</FireboxTheme>
Chaque balise peut avoir quatre attributs pour raffiner les couleurs selon un état donné :
- normal : état par défaut.
- disabled : l'élément est désactivé.
- active : la souris est au-dessus de l'élément ou la fenêtre a le focus.
- selected : l'élément est sélectionné.
Selon la cible, utiliser toutes les couleurs n'a pas toujours du sens dans tous les cas. Par exemple, les panneaux n'ont pas d'état sélectionné.
Voici un exemple de définition de couleur :
<Colors>
<MenuItem normal="#c0c0c0" active="#ffffff"/>
</Colors>
3.6. Images pour les boutons des barres de titre.
Toute cette section est située dans :
<FireboxTheme>
<TitleBarButtons>
...
</TitleBarButtons>
</FireboxTheme>
Il y a quatre états pour les boutons de la barre de titre :
- Normal : état par défaut.
- Pressed : quand un bouton est pressé ou quand il reste sélectionné.
- Hover : quand la souris survole un bouton.
- FocusLess : quand la fenêtre qui contient le bouton n'a pas le focus.
Pour chacun de ces quatre état, quatre sortes de bouton peuvent être définis :
- Close : typiquement, le bouton avec une croix.
- Maximize : utilisé pour agrandir une fenêtre autant que possible.
- Minimize : réduit la fenêtre.
- StrongStick : place la fenêtre sur chaque bureau virtuel en premier plan.
Selon la position de chacun de ces boutons, quatre images peuvent être fournies :
- Default : rendu par défaut.
- LeftEnd : quand le bouton est à la gauche de son groupe.
- RightEnd : quand le bouton est à la droite de son groupe.
- Alone : quand le bouton est seul.
Les noms de fichier doivent être donnés sans chemin. Et tous les définitions doivent être groupées. Par exemple :
<TitleBarButtons>
<Normal>
<Close>
<Default>button_close_n.png</Default>
<LeftEnd>button_close_n_left_end.png</LeftEnd>
</Close>
<Maximize>
<Default>button_max_n.png</Default>
</Maximize>
</Normal>
<Pressed>
<Close>
<Default>button_close_s.png</Default>
</Close>
</Pressed>
<FocusLess>
<Maximize>
<Default>button_u.png</Default>
<Alone>button_u_alone.png</Alone>
</Maximize>
</FocusLess>
</TitleBarButtons>
Si une position n'est pas utilisée, alors l'image par défaut est utilisée. Si un bouton n'apparaît pas pour un état donné, alors la version en dur est utilisée.
3.7. Briques de base pour l'affichage.
3.7.1. Base commune.
Une brique fait référence à une aire à peindre Toutes les briques de base partagent des coordonnées à l'écran et une taille.
Les coordonnées sont données par la balise Position. Cette balise a deux attributs principaux :
- x : abscisse de l'élément.
- y : ordonnée de l'élément.
Ces deux attributs peuvent avoir des valeurs numériques, mais aussi quelques mots clefs spéciaux :
- %MIN_POSITION% : position à gauche dans l'aire disponible.
- %MID_POSITION% : position centrée dans l'aire disponible.
- %MAX_POSITION% : position à droite dans l'aire disponible.
- %APPICON% : taille de l'icône de l'application dans la barre de titre.
- %MINI_DESK% : taille de la table des mini-bureaux dans le panneau de basculement.
- %LBUTTONS% : largeur du groupe de boutons gauche de la barre de titre.
- %RBUTTONS% : largeur du groupe de boutons droit de la barre de titre.
- %WIN_TOP_LEFT% : position du coin supérieur gauche de la fenêtre utilisateur dans la fenêtre d'encadrement.
- %WIN_TOP_RIGHT% : position du coin supérieur droit de la fenêtre utilisateur dans la fenêtre d'encadrement.
- %WIN_BTM_LEFT% : position du coin inférieur gauche de la fenêtre utilisateur dans la fenêtre d'encadrement.
- %WIN_BTM_RIGHT% : position du coin inférieur droit de la fenêtre utilisateur dans la fenêtre d'encadrement.
- %EAST% : taille de la bordure droite dans la fenêtre d'encadrement.
- %NORTH% : taille de la bordure supérieure dans la fenêtre d'encadrement.
- %WEST% : taille de la bordure gauche dans la fenêtre d'encadrement.
- %SOUTH% : taille de la bordure infériure dans la fenêtre d'encadrement.
Par défaut, une position est initialisée avec les valeurs suivantes :
<Position x="0" y="0"/>
Par ailleurs, les valeurs peuvent être combinées avec plus et moins. Par exemple :
<Position x="%SOUTH% + 23 - %RBUTTONS%"/>
Pour résumer (tous les carrés ont une taille de 20x20) :
|
A: par defaut ; pas besoin de définition. B: <Position x="31" y="%MID_POSITION%"/> C: <Position x="%MID_POSITION%" y="%MID_POSITION%"/> D: <Position x="%MID_POSITION% + 20" y="%MID_POSITION% - 20"/> E: <Position x="%MAX_POSITION% - 20" y="%MAX_POSITION%"/> |
Pour calculer la taille d'un élément, il y a la balise Size qui fonctionne come la balise Position ; ainsi, elle a aussi deux attributs principaux :
- width : largeur de l'élément.
- height : hauteur de l'élément.
Ces deux attributs peuvent avoir des valeurs numériques, mais aussi quelques mots clefs spéciaux :
- %MAX_SIZE% : taille de l'aire disponible.
- %APPICON% : taille de l'icône de l'application dans la barre de titre.
- %MINI_DESK% : taille de la table des mini-bureaux dans le panneau de basculement.
- %LBUTTONS% : largeur du groupe de boutons gauche de la barre de titre.
- %RBUTTONS% : largeur du groupe de boutons droit de la barre de titre.
- %WIN_WIDTH% : largeur de la fenêtre utilisateur.
- %WIN_HEIGHT% : hauteur de la fenêtre utilisateur.
- %EAST% : taille de la bordure droite dans la fenêtre d'encadrement.
- %NORTH% : taille de la bordure supérieure dans la fenêtre d'encadrement.
- %WEST% : taille de la bordure gauche dans la fenêtre d'encadrement.
- %SOUTH% : taille de la bordure infériure dans la fenêtre d'encadrement.
Par défaut, une taille est initialisée avec les valeurs suivantes :
<Size width="%MAX_SIZE%" height="%MAX_SIZE%"/>
Pour continuer avec le panneau d'exemple (en considérant que %APPICON% est égal à 28 pixels) :
|
A: <Size width="50" height="20"/> B: <Size width="20"/> C: <Size width="20" height="%MAX_SIZE% - %APPICON%"/> D: <Size height="20"/> E: <Size width="20" height="20"/> |
La seule exception pour les tailles par défaut est avec les images (voir plus bas) : les valeurs par défaut sont égales aux dimensions de l'image.
3.7.2. Comment fonctionne la machine ?
Les formes de fenêtres et les objets de rendu partagent bon nombre de points communs. C'est pourquoi ils sont manipulés d'une manière similaire.
Tous les deux sont définis par une position et une taille. Donc tous les deux peuvent avoir une balise Position et une balise Size comme propriétés de base. ag as basic properties. Les formes de fenêtres et les objets de rendu vont ensuite étendre ces propriétés avec leurs propres balises.
Un autre point majeur est que toute forme ou tout objet de rendu peut contenir d'autres formes ou d'autre objets.
Ainsi, les éléments sont manipulés comme ceci : le père d'abord, les enfants ensuite. Et, à chaque fois qu'un élément est traité, sa zone de travail est restreinte à celle de son père.
Par exemple :
<ThemeObject type="rect"> |
|
Les zones rouges ne sont pas les mêmes, même si elles ont la même définition. Cela vient de leur aire parente jaune, à partir de laquelle leur taille et leur position sont calulées.
3.7.3. Formes de fenêtre.
Les formes définissent des régions qui sont soustraites de la surface d'origine de la cible. Basiquement, leur principal office est de produire des fenêtres non rectangulaires.
Ainsi, la balise Shape peut avoir deux attributs :
- xsi:type : type de la forme.
- operation: si la valeur est 'subtract', alors la forme est soustraite à la région soustraite à la surface finale (<-> la forme est ajoutée).
Par défaut, la attribut operation n'est pas utilisé.
Quatre types de formes sont supportés.
Le type placebo_shape est une forme de thème vide. Son unique fonction est de contenir d'autres formes de thème.
Le type rect_shape définit une forme rectangulaire. Il n'y a pas besoin de balise supplémentaire autre que les balises Position and Size (si nécessaires).
Par exemple :
<Shape xsi:type="rect_shape">
<Position x="5" y="5"/>
<Size width="%MAX_SIZE% - 5" height="%MAX_SIZE% - 5"/>
</Shape>
Le type poly_shape crée une forme polygonale. Il utilise autant de balises Point qu'il le faut, lesquelles sont simplement des balises Position renomées.
Par exemple :
<Shape xsi:type="rect_shape">
<Size width="66" height="77"/>
<Point x="5" y="5"/>
<Point x="15" y="25"/>
<Point x="45" y="33"/>
</Shape>
Enfin, le type img_shape charge le canal alpha d'une image pour construire une forme. Comme pour l'objet de thème, il conduit à deux balises de plus :
- Source : nom de fichier de l'image à charger.
- Scale : politique à suivre quand la taille diponible n'est pas égale à la taille de l'image.
Les valeurs correctes pour cette dernière balise sont :
- width : seule la largeur est préservée.
- height : seule la hauteur est préservée.
- center : pas encore supporté.
- scretch : l'image est étirée ; c'est le choix par défaut.
- tiled : l'image résultante est répétée.
Par exemple :
<Shape xsi:type="img_shape">
<Source>picture.png</Source>
<Scale>tiled</Scale>
</Shape>
3.7.4. Objets de rendu.
Les objets de thème sont de petites briques pour le rendu. La balise ThemeObject peut avoir seulement un attribut :
- xsi:type : type de l'objet.
Quatre types d'objets sont supportés.
Le type placebo est un objet de thème vide. Son seul office est de contenir d'autres objets de thème, ou de marquer certaines zones pour un traitement ultérieur avec sa balise Area, qui doit avoir l'une des valeurs suivantes :
- lbuttons : pas encore supporté.
- title : fait référence au titre de la barre de titre.
- rbuttons : pas encore supporté.
- menuhead : fait référence à l'étiquette d'une en-tête de menu.
- menuitem : fait référence à l'étiquette d'un élément de menu.
- apps : fait référence au nom de l'application dans le panneau de basculement.
- desktops : fait référence à la désignation du bureau dans le panneau de basculement.
Le type line dessine des lignes ou des polygones. Il utilise autant de balises Point que nécessaire, ces dernière étant simplement des balises Position renomées. La couleur de rendu est fournie par l'attribut border d'une balise Colors.
Par exemple :
<ThemeObject xsi:type="line">
<Colors border="#000000"/>
<Point x="2" y="2"/>
<Point x="%MAX_POSITION%" y="10"/>
</ThemeObject>
Le type rect dessine un rectangle, rempli ou non. Il utilise les attributs bg et border d'une balise Colors pour le rendu. Si l'un de ces attributs est manquant, alors le fond ou la bordure (selon l'attribut en question) est ignoré.
Par exemple :
<ThemeObject xsi:type="rect">
<Colors bg="#000000" border="#00ff00"/>
<Position x="1" y="1"/>
<Size width="%MAX_SIZE% - 1" height="%MAX_SIZE% - 1"/>
</ThemeObject>
Le type img dessines des images. Comme pour les formes de thème, il conduit à deux balises de plus :
- Source : nom de fichier de l'image à charger.
- Scale : politique à suivre quand la taille diponible n'est pas égale à la taille de l'image.
Les valeurs correctes pour cette dernière balise sont :
- width : seule la largeur est préservée.
- height : seule la hauteur est préservée.
- center : pas encore supporté.
- scretch : l'image est étirée ; c'est le choix par défaut.
- tiled : l'image résultante est répétée.
Par exemple :
<ThemeObject xsi:type="img">
<Source>picture.png</Source>
</ThemeObject>
Enfin, le type gradient définit des dégradés. Un tel objet s'appuie sur plusieurs balises Point, qui contiennent toutes les propriétés de la balise Position, plus un attribut supplémentaire nomé color qui donne la couleur courante pour le point courant.
Par exemple :
<ThemeObject xsi:type="gradient">
<Position x="1" y="1"/>
<Size width="%MAX_SIZE% - 1" height="%MAX_SIZE% - 1"/>
<Point color="#ff0000"/>
<Point color="#0000ff" x="%MAX_POSITION%" y="%MAX_POSITION%"/>
</ThemeObject>
3.8. Bordure de mise en évidence des fenêtres.
Les définitions des bordures de mise en évidences sont situées ici :
<FireboxTheme> |
|
La balise Normal est utilisée lors du basculement entre fenêtre, l'autre avec une urgence.
Toutes les deux peuvent avoir des forme et de objets de thème.
3.9. Corps des fenêtres clientes.
Tout d'abord, un forme de fenêtre pour les clients non rectangulaires peut être définie dans la balise Client, située dans :
<FireboxTheme>
<Client>
...
</Client>
</FireboxTheme>
Le rendu des corps client est divisé en quatre parties :
Les balises Border et Body sont des cas exceptionnels : elles sont dessinées sur la même zone. La première est dessinée d'abord, la seconde ensuite. Alors, les sept poignées sont ajoutées. Ainsi, même si les bordures sont des fonctionnalités requises par les fenêtres utilisateurs, il n'y a pas besoin d'avoir recours à des objets de thème pour les dessiner car la balise Body peut s'en charger. Firebox ne vérifie pas si elles se superposent ou non. |
|
Comme les parties dépendent de l'état de leur fenêtre d'encadrement, chaque balise peut avoir deux balises supplémentaires :
- Focused : la fenêtre a le focus.
- Unfocused : la fenêtre n'a pas le focus.
Ces deux états peuvent contenir des objets de thème pour le rendu.
Si l'état sans focus n'a pas été défini, alors celui avec focus est utilisé.
Par exemple, un échantillon de corps de fenêtre pourrait être :
<FireboxTheme>
<Client>
...
<TitleBar>
<Focused>
...
</Focused>
</TitleBar>
</Client>
</FireboxTheme>
3.10. Poignées de client pour le redimensionnement.
Afin de permettre un redimensionnement avec la souris, de petites zones sont attachées à chaque fenêtre d'encadrement. Pour chacune de ces zones, une balise est définie : TopLeft, TopRight, MidLeft, MidRight, BottomLeft, BottomMid, et BottomRight.
Toutes celles-ci sont situées dans :
<FireboxTheme>
<ClientHandlers>
...
</ClientHandlers>
</FireboxTheme>
Comme les zones dépendent de l'état de leur fenêtre d'encadrement, chaque balise contient deux balises supplémentaires :
- Focused : la fenêtre a le focus.
- Unfocused : la fenêtre n'a pas le focus.
Ces deux balises d'état peuvent contenir des objets de thème pour le rendu.
Si l'état sans focus n'a pas été défini, alors celui avec focus est utilisé.
3.11. Menus racine et client.
Menus sont composés de quelques éléments :
|
|
3.11.1. Planche de menu.
Si nécessaire, une forme de thème globale et un objet de thème global peuvent être définis dans la balise Board :
<FireboxTheme>
<Menu>
<Board>
...
</Board>
</Menu>
</FireboxTheme>
3.11.2. En-tête de menu.
Une en-tête peut être définie avec une forme de thème et un objet de thème. Tous sont situés dans une balise appelée Base :
<FireboxTheme>
<Menu>
<Head>
<Base>
...
</Base>
</Head>
</Menu>
</FireboxTheme>
Comme le texte d'un élément peut être entouré par un rendu particulier, il est aussi possible d'ajouter un objet de thème supplémentaire dans la balise Caption :
<FireboxTheme>
<Menu>
<Head>
<Caption>
...
</Caption>
</Head>
</Menu>
</FireboxTheme>
3.11.3. Eléments communs.
Selon la position de l'élément à rendre, il existe une définition raffinée. Ainsi trois balises (FirstItem, Item et LastItem) sont utilisées pour dessiner des éléments de menu.
Ces définitions sont situées dans :
<FireboxTheme>
<Menu>
<FirstItem>
...
</FirstItem>
<Item>
...
</Item>
<LastItem>
...
</LastItem>
</Menu>
</FireboxTheme>
NB: la balise FirstItem n'est pas utilisée si une en-tête de menu a déjà été dessinée dans le même menu.
NB2: pour le menu dynamique, seule la balise Item est utilisée.
Selon l'état à dessiner, ces balises peuvent avoir des sous-balises appelées Selected et Normal. Chacune peut contenir à la fois une forme de thème et un objet de thème.
Comme le texte de ces éléments peut être entouré par un rendu particulier, il est aussi possible d'ajouter un objet de thème supplémentaire dans la balise ItemCaption :
<FireboxTheme>
<Menu>
<Head>
<ItemCaption>
...
</ItemCaption>
</Head>
</Menu>
</FireboxTheme>
3.11.4. Barre de séparation.
La barre de séparation peut ne pas toujours être une simple barre. Parce que sa disposition est impliquée dans le rendu global du menu, sa forme doit être prise en considération.
C'est pourquoi une forme de thème et un objet de thème peuvent se trouver dans la balise Separator :
<FireboxTheme>
<Menu>
<Separator>
...
</Separator>
</Menu>
</FireboxTheme>
3.11.5. Planche du menu dynamique.
Comme le menu dynamique partage beaucoup de choses avec les menus communs, il n'a pas besoin d'une partie spéciale pour son rendu.
Son fond de panneau est le seul élément qui peut être personnalisé. Ainsi, la balise DMenuBoard permet de le définir grâce à un objet de thème spécial.
Cette définition est située dans :
<FireboxTheme>
<Menu>
<DMenuBoard>
...
</DMenuBoard>
</Menu>
</FireboxTheme>
3.12. Panneaux de basculement.
3.12.1. Panneau des fenêtres.
.La balise WindowPanel décrit l'apparence du panneau montré lors du basculement de fenêtres.
Elle peut contenir a forme de thème et un objet de thème ; tous les deux sont enregistrés dans :
<FireboxTheme> |
|
3.12.2. Panneau des bureaux.
La balise WindowPanel décrit l'apparence du panneau affiché lors d'un basculement de bureaux.
Elle peut contenir a forme de thème et un objet de thème ; tous les deux sont enregistrés dans :
<FireboxTheme> |
|
3.12.3. Cellules des bureaux.
Pour personnaliser les petites cellules du panneau des bureaux, deux objets de thème de plus peuvent être utilisés.
Ils sont situés dans :
<FireboxTheme>
<DesktopPanel>
<SelectedDeskCell>
...
</SelectedDeskCell>
<DeskCell>
...
</DeskCell>
</DesktopPanel>
</FireboxTheme>
Annexes.
4.1. Raccourcis clavier par défaut.
Les combinaisons de touches ont la syntaxe suivante : Modificateur[Modificateur[Modificateur...]]-Touche. Les modificateurs disponibles sont :
- S - la touche Shift.
- C - la touche Control.
- A - la touche Alt.
Voici les raccourcis clavier de base par défaut :
| AS-Tab | Montre la fenêtre cliente précédente. |
| A-Tab | Montre la fenêtre cliente précédente. |
| CA-Left | Déplace au bureau virtuel précédent. |
| CA-Up | Déplace au bureau virtuel supérieur. |
| CA-Right | Déplace au bureau virtuel suivant. |
| CA-Down | Déplace au bureau virtuel inférieur. |
| A-S | Affiche le menu dynamique personnalisé. |
| A-P | Affiche le menu dynamique contenant tous les programmes de $PATH. |
| A-Return | Lance un terminal en utilisant la variable d'environnement $TERM. |
Quand un menu normal se montre, les raccourcis suivant sont utilisés par défaut :
| Left | Sélectionne le menu parent, s'il existe. |
| Up | Sélectionne l'élément précédent, ou le premier si aucun. |
| Right | Sélectionne le premier sous-menu, s'il existe |
| Down | Sélectionne l'élément suivant, ou le premier si aucun. |
| Return | Exécute l'élément de menu sélectionné. |
| Escape | Cache le menu courant. |
Voici les raccourcis clavier utilisés par défaut avec les menus dynamiques :
| End | Sélectionne le dernier élément du menu dynamique. |
| Right | Sélectionne l'élément suivant, ou le premier si aucun. |
| C-Right | Sélectionne le premier élément de la rangée d'éléments suivante. |
| Left | Sélectionne l'élément précédent, ou le premier si aucun. |
| C-Left | Sélectionne le premier élément de la rangée d'éléments précédente. |
| Home | Sélectionne le premier élément du menu dynamique. |
| BackSpace | Supprime le dernier caractère tapé. |
| Return | Exécute l'élément de menu sélectionné. |
| Escape | Cache le menu dynamique. |
4.2. Schémas de validation XML.
Les fichiers se trouvent dans le répertoire schemas/ du paquet principal.
La commande typique pour valider un schéma XML est exécuter :
$ xmllint --schema schema_de_référence.xsd mon_fichier_à_valider.xml > /dev/null
Pour les définitions de thème, le bon schéma est theme.xsd.


