Kickshawは以下のXML要素および属性名、属性値、これらの要素に関連する内容を受け入れます：

<tt><b>要素:</b>				<b>属性名:</b>
menu           		id, label, icon, execute
separator      		label
item           		label, icon
↳action        		name
 ↳prompt       		該当なし
 ↳command      		該当なし
 ↳startupnotify		該当なし
  ↳enabled     		該当なし
  ↳icon        		該当なし
  ↳name        		該当なし
  ↳wmclass     		該当なし

					<b>属性値:</b>
action         		Execute, Exit, Reconfigure,
               		Restart, SessionLogout

					<b>内容:</b>
enabled        		yes, no</tt>

空の文字列で構成されるメニューIDは有効ですが、他のメニューIDと同様にメニュー内で一度しか現れません。

— — —

以下のメニューは同等であり、Openboxと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>

Kickshaw内で表示されるメニューは、Openbox内で表示されるのと同じように常に表示されますので、2つの例の後者はWYSIWYGアプローチに近いです。しかし、メニューが大きい場合、これによってメニューファイルがやや混乱して見える可能性があります。そのため、デフォルトではKickshawは常に前者の形式でメニューを保存します（これはオプション内で変更可能です）。ファイルを保存する際、プログラムはデフォルトでインデントにタブを使用しますが、ファイルを読み込む際にインデントがスペースで行われているかタブで行われているかは関係ありませんし、任意の空白も同様です。

— — —

メニューには、次の例のように矛盾するメニュー属性を含むことができます：

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

この場合、KickshawはOpenboxの例に従い、ルートメニュー内部のicon属性値を表示する一方で、ルートメニュー外部のlabelとexecute属性値を表示します。
