사용자 메뉴 편집 및 통합하기

다음과 같은 그놈 데스크탑 프로그램을 이용하여 사용자 메뉴를 편집할 수 있습니다:

  • 그놈 메뉴 편집기

사용자들이 간편하게 자신의 메뉴를 편집할 수 있는 메뉴 편집기가 있습니다. 자세한 정보는 그놈 사용자 안내서메인 메뉴 모음 사용하기 부분을 보기 바랍니다. 또는 직접 사용자 메뉴 파일을 만들거나 수정할 수도 있습니다.

사용자 지정 메뉴를 직접 만들려면 $XDG_CONFIG_HOME/menus/applications.menu 파일이 반드시 존재해야 합니다. $XDG_CONFIG_HOME 변수가 설정되어 있지 않으면 기본값인 ~/.config 디렉토리가 사용됩니다. 이곳은 applications.menu 파일을 맨 처음으로 찾아보는 곳이므로, 다른 모든 메뉴 파일보다 우선적으로 사용됩니다.

사용자 메뉴는 2.2항 ― 메뉴 정의 파일 부분에서 설명한 모든 엘리먼트들을 포함할 수 있습니다. 허용된 엘리먼트의 전체 목록은 XDG 메뉴 명세서를 보기 바랍니다.

사용자 메뉴 파일은 시스템 메뉴 파일보다 우선적으로 사용되기 때문에, 시스템 메뉴를 통합하지 않는다면 시스템 메뉴 전체를 완전히 대체할 것입니다. 메뉴를 통합하는 방법은 다음 절에서 설명합니다.

2.6.1. 시스템 메뉴 통합하기

때때로 사용자들은 표준 시스템 메뉴에 특정 항목들을 추가하거나 삭제하기 만을 원합니다. 이렇게 한 가지 만 변경하도록 지원하려면, 사용자 applications.menu 파일에 type="parent" 속성을 포함하는 <MergeFile> 엘리먼트를 사용하는 것이 좋습니다.

<MergeFile> 엘리먼트는 메뉴를 사용자의 메뉴 파일의 내용과 통합되도록 허용합니다. type="parent" 속성을 사용하면, <MergeFile> 엘리먼트의 내용은 무시되고, $XDG_CONFIG_DIRS/menus 디렉토리 내의 다음 applications.menu 파일을 이용해 통합합니다.

예전 명세서

예전 버전의 명세서에는 type 속성이 포함되지 않았고 단순히 <MergeFile> 엘리먼트의 내용으로 통합될 메뉴 파일의 위치를 지정해야 했습니다. 따라서 type="parent" 속성이 사용된 경우에도 <MergeFile> 엘리먼트의 내용에 명시된 위치를 볼 수도 있습니다.

통합 과정은 다음과 같이 수행됩니다:

  • 통합된 메뉴 파일1 내의 최상위 <Menu> 엘리먼트의 하위 엘리먼트들은 기본 메뉴 파일 내의 <MergeFile> 엘리먼트로 바뀝니다.
  • 같은 이름의 <Menu> 엘리먼트들은 하나의 <Menu> 엘리먼트로 합쳐집니다. 이것은 같은 이름을 가진 <Menu> 엘리먼트의 모든 하위 엘리먼트들을 마지막으로 나타나는 메뉴 엘리먼트에 추가하는 방식입니다.

예제 2-3은 시스템 메뉴 파일을 통합하는 사용자 메뉴 파일의 예입니다.

예제 2-3시스템 메뉴 통합하기
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

<Menu>
  <Name>Applications</Name>
  <MergeFile type="parent">/etc/xdg/menus/applications.menu</MergeFile>
  <Menu>
    <Name>Accessibility</Name>
    <Exclude>
      <Filename>dasher.desktop</Filename>
    </Exclude>
  </Menu>
</Menu>

2.6.2. 임의의 메뉴 통합하기

임의의 메뉴 파일도 시스템 메뉴와 동일한 방식으로 통합할 수 있습니다. 차이점은 이 방식의 통합을 위해서는 type 속성이 path로 설정되거나 <MergeFile> 엘리먼트에 포함되어 있지 않아야 합니다.

통합 과정은 <MergeFile> 엘리먼트에 지정된 통합된 메뉴 파일의 위치를 제외하고는 동일한 방식으로 수행됩니다.

1

통합된 메뉴 파일은 $XDG_CONFIG_DIRS/menus 디렉토리 내의 다음 applications.menu 파일을 가리킵니다.