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 一样，每个菜单 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 中的显示方式呈现。因此，两个示例中的后者更接近所见即所得的体验。缺点是，大型菜单采用这种格式时可能显得有些混乱。出于这个原因，默认情况下 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 属性值。
