レイアウト要素
<Menu>のレイアウトに関する要素です。<Menu>の順番を入れ替えたり、<Menu>を別の<Menu>経移動するなど、UIの表示に関係する操作が可能です。
<Move>
<Move>は既存の<Menu>を新しい位置に移動する要素です。<Move>要素内には必ず<Old>と<New>要素がペアで必要になります。
<Menu>要素内で使用します。
複数の<Move>を記述することができます。
メニューパスの基準パスについて
以前記述した通りメニューパスは相対パスですが、相対パスの基準は<Move>要素を記述した<Menu>が基準になります。<Old>
移動元のメニューパスを指定します。<New>
移動先のメニューパスを指定します。例
以下のデスクトップメニューがあるとします。<Menu>
<Menu>
<Name>MyApp1</Name>
<Include><All /></Include>
</Menu>
<Menu>
<Name>MyApp2</Name>
<Include><Category>WebBrowser</Category></Include>
<Menu>
<Name>MyApp2Sub</Name>
</Menu>
</Menu>
</Menu>
以下のように表示されます。
MyApp1
MyApp2
次に以下のように<Move>要素を追加します。
<Menu>
<Move>
<Old>MyApp1</Old>
<New>MyApp2/MyApp2Sub</New>
</Move>
<Menu>
<Name>MyApp1</Name>
<Include><All /></Include>
</Menu>
<Menu>
<Name>MyApp2</Name>
<Include><Category>WebBrowser</Category></Include>
<Menu>
<Name>MyApp2Sub</Name>
</Menu>
</Menu>
</Menu>
MyApp2
「MyApp1」が「MyApp2/MyApp2Sub」に移動します。<Layout>
<Layout>要素は各項目の順番(一般的には表示順)を定義する要素です。<Menu>要素内で使用します。
<Layout>要素内で使用出来る要素
<Layout>要素内は、以下の要素でレイアウトの指定を行います。- <Filename>
- <Menuname>
- <Separator>
- <Merge>
各要素は混在して使用することができます。
デフォルトのレイアウト
<Layout>要素内が空の場合や<Layout>要素を記述しない場合は、デフォルトのレイアウトが使用されます。<DefaultLayout>を参照してください。
要素の適用範囲
<Layout>を記述した<Menu>にのみ適用されます。優先順位について
複数の<Layout>を記述した場合、後から記述された<Layout>の内容が優先されます。要素の順番について
<Layout>要素内の要素の順番が各項目の順番になります。上位から下位に向かって記述します。
<Layout>要素の例について
<Layout>要素の例は、各<Layout>要素内の要素の説明を参考にしてください。各例は以下のデスクトップメニュー及びデスクトップエントリーが基本になっています。
デスクトップメニュー
<Menu><Name>MyRoot</Name>
<Menu>
<Name>MyApp1</Name>
<Include><All /></Include>
<Menu>
<Name>MyApp2</Name>
<Include><Category>WebBrowser</Category></Include>
</Menu>
<Menu>
<Name>MyApp3</Name>
<Include><All /></Include>
</Menu>
<Menu>
<Name>MyApp4</Name>
</Menu>
</Menu>
</Menu>
デスクトップエントリー
名称 | Desktop-File Id |
---|---|
Chromium ウェブ・ブラウザ | chromium-browser.desktop |
ClipIt | clipit.desktop |
GNOME 数独 | gnome-sudoku.desktop |
GParted | gparted.desktop |
LibreOffice Calc | calc.desktop |
VLCメディアプレイヤー | vlc.desktop |
クラシックメニューインジケーター
<Filename>
<Layout>要素内で使用した場合は、「Desktop-File Id」による順番の指定を行います。例
<Menu><Name>MyRoot</Name>
<Menu>
<Name>MyApp1</Name>
<Include><All /></Include>
<Layout>
<Filename>chromium-browser.desktop</Filename>
<Filename>vlc.desktop</Filename>
</Layout>
<Menu>
<Name>MyApp2</Name>
<Include><Category>WebBrowser</Category></Include>
</Menu>
<Menu>
<Name>MyApp3</Name>
<Include><All /></Include>
</Menu>
<Menu>
<Name>MyApp4</Name>
</Menu>
</Menu>
</Menu>
結果
<Layout>要素で指定した「Chromium ウェブ・ブラウザ」と「VLCメディアプレイヤー」の順番が上位になっています。<Menuname>
<Layout>及び<DefaultLayout>要素内で使用する要素です。メニュー名(<Name>)を指定します。
スラッシュ(/)を含めることが出来ないので、孫以降の<Menu>は指定できません。
属性について
この要素は属性を設定できます。属性は省略可能で、省略した場合はデフォルト値が使用されます。
デフォルト値は下記の<DefaultLayout>を参照してください。
show_empty属性
show_empty属性は<Menu>内の項目数が0の<Menu>を、UIに表示するか否か指定する属性です。以下の値を取ります。
値 | 説明 |
---|---|
true | 項目数が0の<Menu>を表示します。 |
false | 項目数が0の<Menu>を表示しません。 |
inline属性
inline属性は子の<Menu>内の項目を、自分の<Menu>内に展開するか否か指定する属性です。以下の値を取ります。
値 | 説明 |
---|---|
true | 子の<Menu>の項目を自分の<Menu>内に展開します。 |
false | 子の<Menu>の項目を自分の<Menu>内に展開しません。 |
inline_limit属性
「inline="true"」と共に使用します。自分の<Menu>内に展開する子の<Menu>内の項目数を指定する属性です。
ここで指定された数値を超える項目数が子の<Menu>に存在する場合、「inline="true"」を指定していても自分の<Menu>内に子の<Menu>内の項目は展開されません。
以下の値を取ります。
値 | 説明 |
---|---|
0 | 常に子の<Menu>内の項目を、自分の<Menu>内に展開します。 |
1以上 | 子の<Menu>内の項目数が指定された項目数以下の場合のみ、自分の<Menu>内に展開します。 |
inline_header属性
「inline="true"」と共に使用します。展開する子の<Menu>の項目を、他の子の<Menu>の順番よりも上位に展開するか否かを指定する属性です。
以下の値を取ります。
値 | 説明 |
---|---|
true | 他の子の<Menu>の順番よりも上位に展開します。 |
false | 他の子の<Menu>の順番よりも下位に展開します。 |
inline_alias属性
「inline="true"」と共に使用します。展開する子の<Menu>の項目数が1つの場合、展開後の項目の名称を<Menu>の名称に置き換えるか否かを指定する属性です。
値 | 説明 |
---|---|
true | 名称を置き換えます。 |
false | 名称を置き換えません。 |
例(属性なし)
属性を指定しない<Menuname>要素の例です。<Menu>
<Name>MyRoot</Name>
<Menu>
<Name>MyApp1</Name>
<Include><All /></Include>
<Layout>
<Menuname>MyApp3</Menuname>
<Menuname>MyApp2</Menuname>
</Layout>
<Menu>
<Name>MyApp2</Name>
<Include><Category>WebBrowser</Category></Include>
</Menu>
<Menu>
<Name>MyApp3</Name>
<Include><All /></Include>
</Menu>
<Menu>
<Name>MyApp4</Name>
</Menu>
</Menu>
</Menu>
結果
「MyApp3」「MyApp2」という順番で項目が並んでいます。例(show_empty属性)
...<Layout>
<Menuname show_empty="true">MyApp4</Menuname>
</Layout>
...
結果
メニュー項目が0の「MyApp4」が表示されています。例(inline属性・inline_limit属性)
...<Layout>
<Menuname inline="true" inline_limit="0" inline_alias="true">MyApp3</Menuname>
</Layout>
...
結果
「MyApp3」が「MyApp1」に展開されています。例(inline_header属性)
...<Layout>
<Menuname inline="true" inline_limit="0" inline_alias="true" inline_header="true">MyApp3</Menuname>
</Layout>
...