Menuのマージ
Menuのマージとは、既存の「メニューファイル」に別のメニューファイル(主にマージ用メニューファイル)を結合し、<Menu>を構築することです。<MergeFile>
マージ用メニューファイルを指定する要素です。この要素を記述すると、指定されたメニューファイルがマージされます。
複数指定することができます。
<Menu>要素内で使用します。
マージされる位置
マージ用デスクトップメニューのルート<Menu>が、<MergeFile>が記述された位置に展開されます。ただしマージ用デスクトップメニューのルート<Menu>の<Name>は無視され適用されません。
マージ用メニューファイルの指定方法
マージ用メニューファイルの指定方法には以下の2種類があります。「type」属性でどの指定方法を使用するか決めます。
相対パス指定
「type」属性を記述しない、もしくは「type="path"」を指定すると、相対パスによる指定になります。パスはメニューファイルがあるパスが基準になります。
相対パスのみ指定が可能で、絶対パスは指定できません。
親指定
「type="parent"」を指定すると、全ユーザー共通のフォルダー内の同名ファイルをマージします。(マージ用メニューファイルではなく、通常のメニューファイル)ユーザー固有のデスクトップメニューを作成し、そこに全ユーザー共通のデスクトップメニューをマージしたい時に使用します。
例(type="path")
~/.config/menus/MyDesktopMenu.menus
<Menu><Name>MyRoot</Name>
<Include><All/></Include>
<Menu>
<Name>MyApp1</Name>
<MergeFile type="path">applications-merged/merge1.menu</MergeFile>
</Menu>
</Menu>
~/.config/menus/applications-merged/merge1.menu
<Menu><Name>MyRoot</Name>
<Include><All/></Include>
<Menu>
<Name>MyNetwork</Name>
<Include><Category>Network</Category></Include>
</Menu>
</Menu>
結果
例(type="parent")
~/.config/menus/MyDesktopMenu.menus
<Menu><Name>MyRoot</Name>
<Include><All/></Include>
<Menu>
<Name>MyApp1</Name>
<MergeFile type="parent" />
</Menu>
...
</Menu>
/etc/xdg/menus/MyDesktopMenu.menus
<Menu><Name>MyRoot</Name>
<Include><All/></Include>
<Menu>
<Name>MyNetwork</Name>
<Include><Category>Network</Category></Include>
</Menu>
...
</Menu>
結果
<MergeDir>
マージ用メニューファイルがあるフォルダーを指定する要素です。この要素を記述すると、指定されたフォルダー内のメニューファイルがマージされます。
複数指定することができます。
特徴は<MergeFile>と同じです。
<Menu>要素内で使用します。
パス指定について
絶対パスと相対パスどちらでも指定できます。相対パスを指定した場合は、メニューファイルがあるパスが基準になります。
例
<Menu><!-- 絶対パスで指定 -->
<MergeDir>/usr/share/mymerge</MergeDir>
<!-- 相対パスで指定 -->
<MergeDir>mymerge</MergeDir>
...
</Menu>
<DefaultMergeDirs>
デフォルトのマージ用メニューファイルのパスを指定します。<MergeDir>のデフォルト版です。
特徴は<MergeDir>と同じです。
デフォルトのマージ用メニューファイルのパスは複数あるため、複数の<MergeDir>に展開されます。
例
<Menu><DefaultMergeDirs />
...
</Menu>