†Linuxなんて大キライ†

BusterDog/LXDEのメニュー編集

作成開始日 2022.08.09
最終更新日 2022.08.12

アプリケーション・メニューはデスクトップ環境毎に設定方法が異なる。基本的な発想は共通しているようだが、具体的な手順はそれぞれで異なる。ここで説明するのは、あくまでも《BusterDogのPcmanfm+Lxpanel環境》に限定したハナシ。他のディストロはもちろん、同じBusterDogでも、「Tint2 Panels」や「ROX Pinboad」環境等では、そのままでは通用しないと思われる。

2種類のメニュー

まず、BusterDog Pcmanfm+Lxpanel環境には、2種類のアプリケーション・メニューが存在することを確認しておく。今回取り扱うの、下記の@のメニューである。

@パネルの[Menu]アイコンをクリックしたときに表示されるメニュー
A画面の四隅をクリックしたときに表示されるメニュー

両者は配色だけでなく、トップレベルに登録されているアプリケーションも違っている。また、メニューが定義されているファイルも異なっている。従って、基本的には別物。ただし、ここからが判らないのだが…

AのメニューはCtrl+Alt+Spaceのキーコンビネーションでも表示可能。一方、[Menu]アイコンの実体は「xdotool key ctrl+alt+space」なので、操作としては実際は同じ。にも拘らず、こちらは@のメニューが表示される。このあたり、何が異なっているのか…。ともあれ、2種類あるメニューの定義は、それぞれ次のファイルに書き込まれている。

@/etc/xdg/menus/lxde-applications.menu
A/etc/xdg/menus/ddog-applications.menu

これを見る限り、Pcmanfm+Lxpanelという環境は、要するにLXDEのようだ。

メニューの基本構造

上記の設定ファイルには、メニューのカテゴリが登録されているだけで、個別のアプリケーションの情報は書き込まれていない。「/usr/share/applications/」にある各アプリの「*.desktop」ファイル(*)から、そのカテゴリに該当するアプリを自動的にピックアップして表示している。たとえば、[システムツール]のメニューは次のような形式で定義されている(実際とは少し違うが)。

(*) デスクトップに表示されるアイコンの内容を定義したファイル。テキスト形式で拡張子は「.desktop」。中には実行プログラム名、表示名、アイコン・ファイル名、カテゴリ設定などが書き込まれている。PCmanFMではデスクトップ上と同じ形式で表示されるため、ファイル名を直接知ることはできないが、プロパティを表示するか、テキストエディタで開けば確認できる。

通常、「*.desktop」はファイル名の変更ができない。リネームしたいときは、[Desktop Entry]行を適当に書き換えてフォーマットを崩し、いったん普通のファイルに戻す。

<Menu>
    <Name>System Tools</Name>
    <Directory>lxde-system-tools.directory</Directory>
               ↑[システムツール]の表記とアイコンを指定するファイル
    <Include>
        <Category>System</Category>
                  ↑*.desktopの「Categories=」に「System」を含むアプリを登録
    </Include>
</Menu>
したがって、あるアプリを既存の別カテゴリに移動したい場合は、単に当該アプリの.desktopファイルの「Categories=…」設定を書き換えるだけでよい。たとえば、[システムツール]内のアプリを[アクセサリー]に移動したい時は、次のようにする。なお、[アクセサリー]カテゴリは、設定ファイル内では「Utility」という表記で識別されている。

【参考】「*.desktop」ファイルは[Desktop Editor](デスクトップの編集)を使っても編集可能だが、テキストエディタで開く方が手っ取り早い。

Categories=System;
  ↓ 「システムツール」の中にあったアプリを「アクセサリー」に移動
Categories=Utility;
また、複数のカテゴリに登録することも可能。
Categories=System;
  ↓ 「システムツール」と「アクセサリー」の両方に登録
Categories=System;Utility;
なお、カテゴリのファイルは「/usr/share/desktop-directories」の中にある。[システムツール]のファイルは「lxde-system-tools.directory」で、以下のように定義されている(抜粋)。
[Desktop Entry]
Name=System tools		一般名;英語環境などで表示される
………
Name[ja]=システムツール		日本語名;日本語環境で表示される
………
Icon=applications-system	アイコンファイル名
Type=Directory

新規カテゴリの作成

以上のように、既存カテゴリ間で登録アプリを移動するのは簡単だが、このメニューには新規カテゴリを追加したくなる。少なくとも、[デスクトップ][インストール][ファイルツール]は必須だろう。また、[ネットワーク](LAN/Samba関連)も欲しいところだが、このBusterDogにはLANがらみのプログラムがほとんどないので今回は割愛。ともあれ、新規カテゴリを作成して、[アクセサリ]や[システムツール]の中に乱雑に放り込まれているアプリを整理する。

【手順1】新規のカテゴリ・ファイル(デスクトップ・ディレクトリ・ファイル)を作成する。

まず、「/usr/share/desktop-directories」に移動し、新たなファイル作成する。ここでは[デスクトップ]のカテゴリファイルを作成するものとし、ファイル名は「lxde-desktop.directory」とする。名前は何でも良いのだが、LXDE環境で使用するメニューであることを明示するために、頭に「lxde」を付けた。また、本来なら[デスクトップ]は「デスクトップ設定」の事なので、「lxde-desktop-settings.directory」の方が命名ルールに則っているかも知れない。長いので省略しただけ。中身は以下のようにする。[インストール]や[ファイルツール]も同様に作成する。

[Desktop Entry]
Name=Desktop			「Desktop Settings」などでも可
Name[ja]=デスクトップ		同じく「デスクトップ設定」でもよい
Icon=user-desktop		アイコンは/usr/share/pixmapsから選べばパスを省略可
Type=Directory

【手順2】メニューの設定ファイルに新規ディレクトリを登録する。

次に、「/etc/xdg/menus/lxde-applications.menu」を開いて、「Debian Menu」と「Accessories」の間に、以下のようなコードを追加する。なお、この設定ファイルには階層構造があるので、階層を壊さないように注意して挿入すること。

<Menu>
    <Name>Desktop Settings</Name> この名前は適当で良い
    <Directory>lxde-desktop.directory</Directory> 作成した新カテゴリ
    <Include>
        <Category>Desktop</Category> 「Categories=」に「Desktop」を含むアプリを登録
        <Category>DesktopSettings</Category> 〃「DesktopSettings」を含むアプリを登録
    </Include>
</Menu>

これによって、[デスクトップ]カテゴリが作成され、*.desktopの「Categories=…」行に「Desktop」または「DesktopSettings」を含むアプリが自動的に登録される。このように、カテゴリの識別子は複数指定することができる(本来は<Or>〜</Or>で囲むようだが…)。なお、どの*.desktopにも当該識別子が存在せず、登録されるアプリが1つもないときには、カテゴリ自体が表示されなくなる。

また、「Desktop」というカテゴリ識別子は今回新たに導入したものだが(従って、この時点では登録数ゼロだが)、「DesktopSettings」の方は従来から存在している。なので、この段階でメニューを表示すれば、[デスクトップ]カテゴリが表示され、中に[Openbox configuration manager]など数個のアプリが登録されているはずである。

【手順3】[システムツール]や[アクセサリー]の中から、新規カテゴリにアプリを移動する。

アプリの移動方法は既に述べた通り。「/usr/share/applications」の中のアプリ・アイコン(実体は.desktopファイル)をテキストエディタで開いて、「Categories=…」設定を書き換えるだけ。例えば、[Desktop Editor]や[Desktop Manager]を編集して「Categories=Desktop;」とする。これで、この二つのアプリは[デスクトップ]カテゴリに移動する。

以下同様に、[インストール]や[ファイルツールの]のカテゴリ・ファイル(*.directory)を作成し、適宜アプリを移動すればよい。

サブメニューの追加

「Xlunch」や「Tint2」はデスクトップ関連のアプリケーションであるが、LXDE環境では使用頻度が低い−−てか、個人的に全く使用しない。そのくせアイコン数が多くて、メニュー塞ぎの邪魔物である。メニューから完全に除去してしまっても良いのだが、サブメニューにまとめる方がスマートだろう。と言うことで、サブメニューの作り方。

【手順1】サブメニュー用の設定ファイルを作成する。

たとえば、「Xlunch」と「Tint2」をサブメニューにまとめるときは、以下のような内容のファイル「desktop-sub.menu」を作成する。作成場所はメインのメニューファイルと同じ「/usr/xgt/menus」とする。書式は、上述の[デスクトップ]カテゴリと同じ。

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>

    <Menu>
        <Name>Xlunch</Name>
        <Directory>xlunch.directory</Directory>
        <Include>
            <Category>Xlunch</Category>
        </Include>
    </Menu>

    <Menu>
        <Name>Tint2</Name>
        <Directory>tint2.directory</Directory>
        <Include>
            <Category>Tint2</Category>
        </Include>
    </Menu>

</Menu>

【手順2】カテゴリ用のファイルを作成する。

これも既に手順は説明済み。「/usr/share/desktop-directories」の中に、「xlunch.directory」と「tint2.directory」を作成し、中身を以下のようにする。

▼xlunch.directory

[Desktop Entry]
Name=Xlunch
Icon=xlunch-logo
Type=Directory

▼tint2.directory

[Desktop Entry]
Name=Tint2
Icon=tint2-logo
Type=Directory
【手順3】アプリのカテゴリ設定を変更する

「/usr/share/applications」の中にある、「Xlunch」関連のアプリのカテゴリ設定を「Categories=Xlunch;」、「Tint2」関連のアプリのカテゴリ設定を「Categories=Tint2;」とする。

【手順4】メインメニューにサブメニューを読み込む。

「/etc/xdg/menus/lxde-applications.menu」を開いて、前述の手順で追加した[デスクトップ]セクションに、下記の赤字部分を追加する。

<Menu>
    <Name>Desktop Tools</Name>
    <Directory>lxde-desktop.directory</Directory>
    <Include>
        <Category>Desktop</Category>
        <Category>DesktopSettings</Category>
    </Include>
    <MergeFile>desktop-sub.menu</MergeFile>
</Menu>
これで、サブメニューが追加される。


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