메뉴 정의 파일
메뉴 파일은 그놈 메뉴 모음에서 사용되는 메뉴들의 계층 구조를 정의합니다. 이 파일을 수정하여 모든 사용자에게 적용되는 메뉴를 조정하거나, 지정한 applications.menu 파일의 위치에 따라 특정 사용자에게 적용되는 메뉴를 조정할 수 있습니다.
메뉴 파일은 $XDG_CONFIG_DIRS/menus/applications.menu 파일입니다. 만약 $XDG_CONFIG_DIRS1 변수가 설정되어 있지 않다면, 기본 경로인 /etc/xdg가 사용됩니다. 이것은 사용자가 수정한 버전의 파일은 $XDG_CONFIG_HOME/menus/applications.menu에 존재할 수 있으며, 이 경우 해당 파일이 먼저 사용된다는 것을 의미합니다. 만약 $XDG_CONFIG_HOME 변수가 설정되어 있지 않으면, 기본 경로인 ~/.config가 사용됩니다. 여러 개의 applications.menu 파일이 존재하는 경우에는 $XDG_CONFIG_DIRS 변수 내에서 먼저 나오는 디렉토리가 우선 순위를 가집니다. 이 경우 첫 번째로 찾은 파일이 사용되며 나머지는 무시됩니다.
어떤 순서로 경로를 검색하는지 혼동스러운 사람들을 위해, 아래에서 applications.menu 파일의 위치를 찾기 위한 경로의 목록을 설명합니다:
- $XDG_CONFIG_HOME 변수 내의 각 디렉토리를 순서대로 검색하여 menus/applications.menu 파일을 찾습니다. 만약 $XDG_CONFIG_HOME 변수가 설정되지 않았다면, 기본 값인 ~/.config/ 디렉토리가 사용됩니다.
- $XDG_CONFIG_DIRS 변수 내의 각 디렉토리를 순서대로 검색하여 menus/applications.menu 파일을 찾습니다. 만약 $XDG_CONFIG_DIRS 변수가 설정되지 않았다면, 기본 값인 /etc/xdg/ 디렉토리가 사용됩니다.
- 처음으로 찾은 applications.menu 파일을 사용합니다.
예제 2-1 부분에서 .menu 파일의 예를 보여줍니다. 이 예제에서 최상위 메뉴는 Applications이며, 이는 <Name> 엘리먼트에서 볼 수 있습니다. Applications 메뉴는 하나의 하위 메뉴 만을 포함하지만, 여러 개의 하위 메뉴를 가질 수도 있습니다. 각 하위 메뉴는 <Include> 엘리먼트를 가질 수 있습니다. <Include> 엘리먼트는 매칭 규칙을 사용하여 적절한 데스크탑 엔트리를 걸러내는 작업을 위해 사용됩니다.
예르 들어 <Category> 엘리먼트는 오직 분류 키가 <Category> 엘리먼트의 내용을 포함하는 데스크탑 엔트리를 선택하는 기본 매칭 규칙입니다. 이 예제에서 Accessories 메뉴는 분류 키에 “Utility”를 포함하지만 “System”을 포함하지 않는 데스크탑 엔트리 만을 포함할 것입니다. 분류 키에 대한 자세한 정보는 2.3항 ― 데스크탑 엔트리 파일 부분을 보기 바랍니다.
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd"> <Menu> <Name>Applications</Name> <Directory>Applications.directory</Directory> <!-- Read standard .directory and .desktop file locations --> <DefaultAppDirs/> <DefaultDirectoryDirs/> <!-- Accessories submenu --> <Menu> <Name>Accessories</Name> <Directory>Accessories.directory</Directory> <Include> <And> <Category>Utility</Category> <Not> <Category>System</Category> </Not> </And> </Include> </Menu> <!-- End Accessories --> <!-- possibly more submenus --> </Menu> <!-- End Applications -->
표 2-1는 .menu 파일 내의 엘리먼트 중의 일부에 대해 설명합니다. 보다 자세한 내용은 XDG 메뉴 명세서를 보기 바랍니다.
엘리먼트 | 설명 |
---|---|
<Menu> | 최상위 엘리먼트이며, 하위 메뉴를 정의하는 <Menu> 엘리먼트를 내부에 포함할 수 있습니다. 이러한 하위 메뉴의 배치가 메뉴 구조를 결정합니다. |
<Name> | 메뉴의 이름을 지정합니다. 모든 <Menu> 엘리먼트는 반드시 <Name> 엘리먼트를 포함해야 합니다. |
<Directory> |
메뉴의 이름, 설명, 아이콘 등을 포함하는 디렉토리 엔트리 파일의 이름을 지정합니다. 만약 이 엘리먼트가 없다면 <Name> 엘리먼트의 내용이 메뉴의 이름으로 표시됩니다. 기본적으로 XDG 메뉴 명세서에서 지정한 대로 $XDG_DATA_DIRS/desktop-directories/ 위치 내에서 .directory 파일을 검색합니다. |
<DefaultAppDirs> | 이것은 $XDG_DATA_DIRS/applications/ 내에서 이용 가능한 모든 데스크탑 엔트리를 찾으라는 지시입니다. 만약 이러한 지시가 포함되지 않았다면 이 위치에서는 데스크탑 엔트리를 찾지 않을 것입니다. |
<DefaultDirectoryDirs> | 이것은 $XDG_DATA_DIRS/desktop-directories/ 내에서 이용 가능한 모든 디렉토리 엔트리를 찾으라는 지시입니다. 만약 이러한 지시가 포함되지 않았다면 이 위치에서는 디렉토리 엔트리를 찾지 않을 것입니다. |
<Include> | 메뉴의 내용을 만들어 낼 매칭 규칙의 목록을 포함합니다. 여기에는 <Filename>, <Category>, <And>, <Or>, <Not>, <All> 등의 매칭 규칙이 사용될 수 있습니다. 만약 하나 이상의 규칙이 포함되면 각 규칙들은 논리합(logical OR)으로 연결되므로, 이러한 규칙 중 어느 하나라도 만족하는 데스크탑 엔트리는 모두 포함됩니다. |
<Exclude> | <Include>와 반대되는 엘리먼트로 이 엘리먼트 내의 규칙에 매칭되는 모든 데스크탑 엔트리는 포함된 엘리먼트 집합에서 제외됩니다. 따라서 이 엘리먼트는 반드시 <Include> 엘리먼트 보다 뒤에 나와야 합니다. |
<Filename> | 데스크탑 파일 ID가 <Filename> 엘리먼트의 내용과 일치할 때 데스크탑 엔트리를 선택하는 매칭 규칙. |
<Category> | 분류 키가 <Category> 엘리먼트의 내용과 일치할 때 데스크탑 엔트리를 선택하는 매칭 규칙. |
<And> | <And> 엘리먼트 내에 포함된 모든 매칭 규칙들과 일치할 때 데스크탑 엔트리를 선택하는 매칭 규칙. |
<Or> | <Or> 엘리먼트 내에 포함된 어떤 매칭 규칙들과 일치할 때 데스크탑 엔트리를 선택하는 매칭 규칙. |
<Not> | <Not> 엘리먼트 내에 포함된 어떤 매칭 규칙들과 일치할 때 데스크탑 엔트리를 선택하지 않는 매칭 규칙. |
<All> | 모든 데스크탑 엔트리를 선택하는 매칭 규칙. |