デスクトップメニューとは
デスクトップメニューは、アプリの表示構成の骨組みや階層を定義するファイルです。アプリの一覧を表示するアプリ(ランチャー系のアプリ)の多くは、以下の情報を参照しアプリ一覧の表示を行なっています。
- デスクトップメニュー
- ディレクトリーエントリー
- デスクトップエントリー
アプリケーションレンズ
クラシックメニューインジケーター
Kubuntu KickOff アプリケーションランチャー
各ファイルの関係の関係
デスクトップメニューとディレクトリーエントリー、デスクトップエントリーの関係を図にすると、以下のようになります。デスクトップメニューが階層や表示するアプリを定義します。
ディレクトリーエントリーが各階層の情報を定義します。
デスクトップエントリーが起動するアプリやアプリの情報を定義をします。
注意
アプリの一覧をどのように表現するかは、最終的にアプリが決める内容であるため、上記のイメージとは構造が異なる場合があります。例えば、Ubuntuでは標準のアプリケーションランチャーはアプリケーションレンズです。
アプリケーションレンズのタイプに表示される各カテゴリーは、そのスコープが静的に定義しており、デスクトップメニューの階層構造に依存しません。
一方クラシックメニューインジケーターは、デスクトップメニューの階層情報に依存します。
従って上記のイメージは、理解の手助けとするためにあくまで視覚的に表現したものであって、本仕組みをどのように利用するかは、アプリ次第という事になります。
仕様と実装は各アプリを個別に確認する必要があります。
メニューファイル
アプリが直接参照(指定)するデスクトップメニューのファイルです。このファイルにデスクトップメニューの情報が記述されます。
ファイルの配置場所
メニューファイルの配置場所です。全ユーザー共通のフォルダーとユーザー固有のフォルダーに別れます。
ユーザー固有のフォルダーにあるメニューファイルが優先されます。
ユーザー固有 | ~/.config/menus |
全ユーザー共通 | /etc/xdg/menus |
~/.config/menus
ユーザー固有のフォルダーです。自分でメニューファイルを作成することは、ほとんど無いでしょう。
/etc/xdg/menus
全ユーザー共通のフォルダーです。アクセス権について
全ユーザー共通のフォルダーにメニューファイルを置く場合、「その他」のアクセス権が最低でも「読み込み専用」になっている必要があります。ファイル名について
メニューファイルのファイル名です。ファイル名
ファイル名は「applications.menu」です。このファイル名は既定値で、アプリによっては別のファイル名を採用することがあります。
その場合でも、ファイルの拡張子は「.menu」になります。
従って「何が既定か?」はアプリの仕様に依存します。
アプリケーションレンズ
アプリケーションレンズでは、「/etc/xdg/menus/unity-lens-applications.menu」がメニューファイルになります。クラシックメニューインジケーター
クラシックメニューインジケーターでは「/etc/xdg/menus/applications.menu」と「/etc/xdg/menus/classicmenuindicatorsystem.menu」がメニューファイルになります。ファイル名のプレフィックスについて
異なるデスクトップ環境で各デスクトップ環境専用のメニューファイルを作成することができます。そのようなメニューファイルを作成する場合は、ファイル名にプレフィックスをつけます。
プレフィックスは環境変数「XDG_MENU_PREFIX」にセットします。
以下は一例ですが、任意のプレフィックスを付けることができます。
デスクトップ環境 | プレフィックスの例 |
---|---|
GNOME | gnome- |
KDE | kde- |
Xfce | xfce- |
LXDE | lxde- |
ファイル名の例
プレフィックスが「gnome-」だった場合、ファイル名は「gnome-applications.menu」になります。マージ用メニューファイル
マージ用メニューファイルとは、別のデスクトップメニューに追加・挿入されるメニューファイルです。既存のメニューファイルを変更せずに、新たにインストールしたアプリの情報や構造等を追加・挿入することが出来ます。
デフォルトのフォルダー
全ユーザー共通のフォルダーとユーザー固有のフォルダーに別れます。このフォルダー内のすべてのマージ用メニューファイルを、別のデスクトップメニューに追加・挿入することが出来ます。
ユーザー固有 | ~/.config/menus/applications-merged |
全ユーザー共通 | /etc/xdg/menus/applications-merged |
フォルダーはメニューファイルで指定するため、任意のフォルダーが利用できます。
また、マージ用メニューファイルを追加するかどうかは、メニューファイルで指定します。
全ユーザー共通のフォルダーにメニューファイルを置く場合、「その他」のアクセス権が最低でも「読み込み専用」になっている必要があります。
ファイル名
ファイル名は任意ですが、ファイルの拡張子は「.menu」にします。メニューファイルのフォーマット
メニューファイルのフォーマットです。マージ用のメニューファイルも同じフォーマットです。
ファイル形式 | XML |
エンコード | UTF-8 |
DTD | <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> |
従ってメニューファイルの基本フォーマットは以下のようになります。
この記述以降にデスクトップメニューの要素を記述します。