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>

메뉴는 Openbox에서 보이는 것처럼 항상 Kickshaw 안에서 표시되므로, 두 예시 중 후자가 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 특성 값을 표시합니다.
