<big>K</big>ickshaw accepte les éléments XML suivants et les noms d'attributs, valeurs d'attributs et 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>non applicable</i>
 ↳command      		<i>non applicable</i>
 ↳startupnotify		<i>non applicable</i>
  ↳enabled     		<i>non applicable</i>
  ↳icon        		<i>non applicable</i>
  ↳name        		<i>non applicable</i>
  ↳wmclass     		<i>non applicable</i>

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

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

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

— — —

Les menus suivants sont équivalents et sont 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, donc le second 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 difficile à comprendre. Pour cette raison, par défaut, Kickshaw enregistre toujours le menu dans le premier format (cela peut être modifié dans les paramètres). Lors de l'enregistrement d'un fichier, le programme utilise par défaut des tabulations pour les retraits, mais pour la lecture du fichier, que ces retraits aient été faits avec des espaces ou des tabulations n'a pas d'importance, 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 icon depuis le menu racine, tandis qu'il affiche les valeurs d'attribut label et execute depuis l'extérieur du menu racine.
