<big>K</big>ickshaw accepte les éléments XML suivants et les noms d'attributs, les valeurs d'attributs et les contenus associés à ces éléments :

<tt><b>Élément :</b>			<b>Noms d'attribut :</b>
menu           		id, label, icon, execute
separator      		label
item           		label, icon
↳action        		name
 ↳prompt       		<i>ne s'applique pas</i>
 ↳command      		<i>ne s'applique pas</i>
 ↳startupnotify		<i>ne s'applique pas</i>
  ↳enabled     		<i>ne s'applique pas</i>
  ↳icon        		<i>ne s'applique pas</i>
  ↳name        		<i>ne s'applique pas</i>
  ↳wmclass     		<i>ne s'applique pas</i>

					<b>Valeurs d'attribut :</b>
action         		Execute, Exit, Reconfigure,
               		Restart, SessionLogout

					<b>Contenu :</b>
enabled        		yes, no</tt>

Des ID de menu composés de chaînes vides sont valides, mais comme tout autre ID de menu, ils ne peuvent apparaître qu'une seule fois dans un menu.

— — —

Les menus suivants sont équivalents et acceptés par Openbox et Kickshaw.

<tt><b>(1)</b> &lt;openbox_menu&gt;

      &lt;menu id="menu1" label="Menu1"&gt;
        &lt;item label="item"/&gt;
      &lt;/menu&gt;

      &lt;menu id="root-menu"&gt;
        &lt;menu id="menu1"/&gt;
      &lt;/menu&gt;

    &lt;/openbox_menu&gt;</tt>

<tt><b>(2)</b> &lt;openbox_menu&gt;

      &lt;menu id="root-menu"&gt;
        &lt;menu id="menu1" label="Menu1"&gt;
          &lt;item label="item"/&gt;
        &lt;/menu&gt;
      &lt;/menu&gt;

    &lt;/openbox_menu&gt;</tt>

Un menu est toujours affiché dans Kickshaw tel qu'il apparaîtrait dans Openbox, de sorte que le dernier des deux exemples est plus proche d'une approche WYSIWYG. L'inconvénient est que pour les grands menus, cela peut rendre un fichier de menu quelque peu déroutant. Pour cette raison, par défaut, Kickshaw enregistre toujours le menu dans l'ancien format (cela peut être modifié dans les options). Lors de l'enregistrement d'un fichier, le programme utilise des tabulations pour les indentations par défaut, mais pour lire le fichier, que ces indentations aient été faites avec des espaces ou des tabulations n'est pas pertinent, comme tout espace blanc.

— — —

Un menu peut contenir des attributs de menu contradictoires, comme dans l'exemple suivant :

<tt>&lt;openbox_menu&gt;

  &lt;menu id="menu1" label="outside" icon="out.jpg" execute="out" /&gt;

  &lt;menu id="root-menu"&gt;
    &lt;menu id="menu1" label="inside" icon="in.jpg" execute="in" /&gt;
  &lt;/menu&gt;

&lt;/openbox_menu&gt;</tt>

Dans ce cas, Kickshaw suit l'exemple d'Openbox et affiche la valeur d'attribut d'icon depuis le menu Root, tandis qu'il affiche les valeurs d'attribut de label et d'execute depuis l'extérieur du menu Root.
