†Linuxなんて大キライ†

Debian/LXDEスタートメニューの編集

作成開始日 2019.01.09
最終更新日 2022.08.03

確認環境:Debian 9.4 LXDE

Debian/LXDEのスタートメニューはデフォルトでは編集不可能。 menulibreというツールを使用すれば編集可能になるが、 どうもバグあるようで、しばしばメニューを壊す。 少なくとも2つの環境で数回経験しているので、 単なる操作ミスの類ではないないと思う;menulibreは使用禁止。 むしろ、設定ファイルを直接編集する方がよい。

●スタートメニュー設定ファイル

メニューの構造が書かれているのは、以下のファイル。構造自体はわかりやすい。XML…なのかどうか知らないが、少なくともHTMLやTeXの経験者ならば、すぐに読めるレベル。 まず、各カテゴリの中身が記述され、最後に全体の構造が定義されている。 基本的に、項目の移動や順序の変更だけならば、このファイルの行を入れ替えるだけで済むだろう。
~/.config/menus/lxde-applications.menu
【追記】一般には、以下の場所にあるようだ。(2022.08.03)
/etc/xdg/menus/lxde-applications.menu
なお、カテゴリ(ディレクトリ)の中身が空になると、カテゴリ自体が表示されなくなる。

●メニューの仕組

しかし、新規項目(アプリケーション/ディレクトリ)を登録しようと思うと、けっこう厄介なことになる。そのためには、まず、メニューの仕組を理解しておかなくてはならない。ニューに登録されている項目は、アプリケーションやディレクトリそのものではなく、それらへの参照先やオプションや設定を書き込んだ一種のリンクファイルである。これらは、次の場所に格納されている。
(1)~/.local/share/applications		個人用アプリケーション
(2)/usr/share/applications		共通アプリケーション
また、ディレクトリのデータは以下の場所にある。
(1)~/.local/share/desktop-directories	ユーザーが作成したディレクトリ
(2)/usr/share/desktop-directories	デフォルトのディレクトリ
これらに収納されているメニュー項目のファイルは単純なテキスト形式なので、viやleafpadなどで簡単に閲覧・編集可能(もちろんパーミッションは必要)。 たとえば、Firefox ESRのメニュー項目ファイル(firefox-esr.desktop)は、次のようになっている(適宜省略)。
[Desktop Entry]
Name=Firefox ESR
Name[bg]=Firefox ESR
:
Name[ja]=Firefox ESR
:
Comment=Browse the World Wide Web
:
Comment[ja]=ウェブを閲覧します
GenericName=Web Browser
:
GenericName[ja]=ウェブ・ブラウザ
:
X-GNOME-FullName=Firefox ESR Web Browser
:
X-GNOME-FullName[ja]=Firefox ESR ウェブ・ブラウザ
:
Exec=/usr/lib/firefox-esr/firefox-esr %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=firefox-esr
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;appli
cation/vnd.mozilla.xul+xml;…
StartupWMClass=Firefox-esr
StartupNotify=true
先頭からずらずら並んでいるのは、アプリケーション名やツールチップで表示されるコメントのデータ。各国語のデータが書き込まれているので物凄く大量になっているが、実際には先頭の「Name=」行以外は蛇足で、なくても構わない。重要なのは、「Exec=」行以下である。と言っても、これも全てが必須の項目と言うわけではない。新規登録に必須の項目はずっと少なくて単純だ。

●新規アプリケーションの追加

パッケージマネージャを使って新規アプリケーションをインストールすると、通常はメニューへの登録まで自動的に行われる。しかし、圧縮ファイルをダウンロードしてきて、展開するだけで起動するようなアプリケーションは、手動でメニューに登録する必要がある。登録しなくても起動はするが、使い勝手がかなり悪くなる(パネルにも登録できない)。

その代表例がSeamonkeyなので、ここではSeamonkeyを例にする。Seamonkeyは、ホームページからLinux用の圧縮ファイルをダウンロードして、適当な場所に展開すれば、すぐに起動可能になる。が、利便性を考えて、展開したフォルダを「/usr/lib」に起き、実行ファイル「seamonkey」のシンボリックリンクを「/usr/bin」とデスクトップに置いた。これで、アイコンのダブルクリックでも、端末から「seamonkey[Enter]」でも起動はできるようになる。

このSeamonkeyをメニューに追加するには、まず「~/.local/share/applications」に移動して、新規ファイル「seamonkey.desktop」を作成する。完全に新規作成でも良いし、似たアプリケーションがあれば、それをひな型としてコピーしても良い。たとえば、Firefoxの項目ファイルをひな型にするなら、「cp /usr/share/applications/firefox-esr.desktop seamonkey.desktop」とする。ま、実際はFirefoxの項目ファイルはひな型としては繁雑なので、完全に新規に作った方が便利だとは思うが。

「seamonkey.desktop」の中身は次のようにする(ちなみに、これはmenulibreで作成したもの)。

[Desktop Entry]
Version=1.0
Type=Application
Name=Seamonkey
Icon=/usr/lib/seamonkey/chrome/icons/default/seamonkey.png
Exec=seamonkey
Path=/usr/bin
NoDisplay=false
Categories=Network;
StartupNotify=false
Terminal=false
各設定項目の意味は一目瞭然だと思うので、他のアプリケーションに書き換える場合も簡単だろう。一応、目に付いた項目だけ述べておくと、「Version=」は不明。メニューのバージョンなのか、menulibreのバージョンなのか判らない。実害はないので放置。

「Icon=」はアイコンの画像ファイルの指定だが、デフォルト(/usr/share/iconかな?)にあるアイコンに関してはパス不要で、ファイル名のみでよい。Seamonkeyのアイコンはデフォルトでは用意されていないので、ダウンロードしたファイルの中にあるアイコン・ファイルを絶対パスで指定している。

「Categories=」はメニューのカテゴリで、「Network」は日本語のメニューでは「インターネット」に相当する。この対応関係は、前記の場所にあるディレクトリの項目データに書き込まれている。問題は、実際にアイコンが登録されているカテゴリと、この設定が一致していない場合だが、これが良くわからない。場合によっては表示されなくなってしまうかも知れないが、実害はないような気もする。と言うよりも、「Categories=」項目自体がなくても支障はないようだ。

「NoDisplay=」は非表示設定で、通常trueにすることはないと思う。が、menulibreを使用したら、かなりの数のアプリケーションが勝手に非表示設定になっていた。あるはずのアプリケーションが表示されない場合にはチェックすること。

●スタートメニューへの追加

メニュー項目ファイルが作成できたら、これをスタートメニューに登録する。 前記のlxde-application.menuに追加したいアプリの項目を書き足せば良い。 Seamonkeyであれば、Firefoxの項目を検索して、 その下の行あたりに、以下の行を追加すれば良い。
<Filename>seamonkey.desktop</Filename>

●項目が表示されない場合

o メニューや項目ファイルに書き込んだデータにスペルミスがないかチェックする
o 「NoDisplay=true」になっていないかチェックする
o 「Categories=…」のカテゴリ違いをチェックする

ただし、これらの理由は別の理由で表示されなこともある。 稀な例だが、どうしても表示されないがアイテムが、 項目の表示順を変えただけで表示されたこともある。 また、全く原因不明でどうしても表示されないものもあった。 この辺りは試行錯誤で何とかするしかしょうがいない。


【Linuxなんて大キライ目次】 【ホーム】