ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 デスクトップ管理者ガイド Oracle Solaris 11.1 Information Library (日本語) |
デフォルトでは、ユーザーメニュー構成ファイルは同じ名前のシステムメニュー構成ファイルよりも優先します。たとえば、applications.menu ファイルがユーザーの $XDG_CONFIG_HOME/menus ディレクトリに存在している場合は、そのユーザーの「Applications」メニューを構成するために、そのファイルがシステムの applications.menu ファイルに代わって使用されます。この置換により、ユーザーは想定するすべてのメニュー項目にアクセスできないことがあります。この状況を回避するため、その他のメニュー構成ファイルと置換するのではなくマージするべきであることをメニュー構成ファイルで指定できます。このプロセスについては、以降のセクションで説明します。
ユーザーが、標準のシステムメニューのほかに、メニュー項目を追加または削除したいだけのことがよくあります。これらの変更をサポートするには、ユーザーの applications.menu ファイル内で <MergeFile> 要素と属性 type="parent" を使用するようにしてください。
<MergeFile> 要素は、メニューをユーザーのメニューファイルの内容とマージできるようにします。要素の type 属性を “parent” と指定すると、<MergeFile> 要素の内容は無視されます。マージには、$XDG_CONFIG_DIRS/menus ディレクトリ内の次の applications.menu ファイルが使用されます。
注 - 以前の仕様には type 属性が含まれていなかったため、<MergeFile> 要素の内容としてはマージされるメニューファイルの場所のみが必要です。その結果、type="parent" の場合であっても、 <MergeFile> の内容で場所が指定されていることがあります。
メニューのマージは次のように実行されます。
マージされるメニューファイルのルートの <Menu> 要素の子は、ベースメニューファイルの <MergeFile> 要素に置き換えられます。
注 - 「マージされるメニューファイル」とは、$XDG_CONFIG_DIRS/menus ディレクトリ内の次の applications.menu を指します。
名前が同じすべての子 <Menu> 要素は、同じ名前を持つ各 <Menu> 要素のすべての子要素をメニュー要素の最後のオカレンスに追加することで、単一の <Menu> 要素に統合されます。
次の例は、システムメニューファイルを明示的にマージするユーザーメニューファイルを示します。
<!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>