<big>K</big>ickshaw acepta os seguintes elementos XML e nomes de atributos, valores de atributos e contidos asociados a estes elementos:

<tt><b>Elemento:</b>			<b>Nomes de atributos:</b>
menu           		id, label, icon, execute
separator      		label
item           		label, icon
↳action        		name
 ↳prompt       		<i>non aplicable</i>
 ↳command      		<i>non aplicable</i>
 ↳startupnotify		<i>non aplicable</i>
  ↳enabled     		<i>non aplicable</i>
  ↳icon        		<i>non aplicable</i>
  ↳name        		<i>non aplicable</i>
  ↳wmclass     		<i>non aplicable</i>

					<b>Valores de atributos:</b>
action         		Execute, Exit, Reconfigure,
               		Restart, SessionLogout

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

Os IDs de menú que consisten en cadeas baleiras son válidos, pero como calquera outro ID de menú só poden aparecer unha vez nun menú.

— — —

Os seguintes menús son equivalentes e ambos son aceptados por Openbox e 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 menú sempre se mostra dentro de Kickshaw tal e como aparecería en Openbox, polo que o segundo dos dous exemplos está máis preto dun enfoque WYSIWYG. O inconveniente é que para menús grandes, isto pode facer que un ficheiro de menú pareza algo confuso. Por esa razón, por defecto Kickshaw sempre garda o menú no formato primeiro mencionado (isto pode cambiarse dentro das opcións).

Ao gardar un ficheiro, o programa usa tabulacións para as sangrías por defecto, pero para ler o ficheiro, é irrelevante se tales sangrías foron feitas con espazos ou tabulacións, así como calquera espazo en branco.

— — —

Un menú pode conter atributos de menú contraditorios, como no seguinte exemplo:

<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>

Neste caso, Kickshaw segue o exemplo de Openbox e mostra o valor do atributo icon desde dentro do menú raíz, mentres que mostra os valores dos atributos label e execute desde fóra do menú raíz.
