<big>K</big>ickshaw aceita os seguintes elementos XML e nomes de atributos, valores de atributos e conteúdos associados a esses elementos:

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

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

					<b>Conteúdos:</b>
enabled        		yes, no</tt>

IDs de menu compostos por cadeias vazias são válidos, mas, assim como qualquer outro ID de menu, só podem aparecer uma vez em um menu.

— — —

Os seguintes menus são equivalentes e ambos são aceitos pelo 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>

Um menu é sempre mostrado no Kickshaw como apareceria no Openbox, portanto, o último dos dois exemplos é mais próximo de uma abordagem WYSIWYG. A desvantagem é que, para menus grandes, isso pode tornar um ficheiro de menu um pouco confuso. Por esse motivo, por predefinição, o Kickshaw sempre guarda o menu no formato anterior (isso pode ser alterado nas opções).

Ao guardar um ficheiro, o programa usa tabuladores para avanços por predefinição, mas, ao ler o ficheiro, se esses avanços foram feitos com espaços ou tabuladores é irrelevante, assim como qualquer espaço em branco.

— — —

Um menu pode conter atributos de menu contraditórios, como no exemplo a seguir:

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

Nesse caso, o Kickshaw segue o exemplo do Openbox e mostra o valor do atributo icon de dentro do menu raiz, enquanto mostra os valores dos atributos label e execute de fora do menu raiz.
