†Linuxなんて大キライ†
作成開始日 2022.08.09
最終更新日 2022.08.12
まず、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>したがって、あるアプリを既存の別カテゴリに移動したい場合は、単に当該アプリの.desktopファイルの「Categories=…」設定を書き換えるだけでよい。たとえば、[システムツール]内のアプリを[アクセサリー]に移動したい時は、次のようにする。なお、[アクセサリー]カテゴリは、設定ファイル内では「Utility」という表記で識別されている。↑[システムツール]の表記とアイコンを指定するファイル <Include> <Category>System</Category>↑*.desktopの「Categories=」に「System」を含むアプリを登録 </Include> </Menu>
【参考】「*.desktop」ファイルは[Desktop Editor](デスクトップの編集)を使っても編集可能だが、テキストエディタで開く方が手っ取り早い。
Categories=System; ↓また、複数のカテゴリに登録することも可能。「システムツール」の中にあったアプリを「アクセサリー」に移動 Categories=Utility;
Categories=System; ↓なお、カテゴリのファイルは「/usr/share/desktop-directories」の中にある。[システムツール]のファイルは「lxde-system-tools.directory」で、以下のように定義されている(抜粋)。「システムツール」と「アクセサリー」の両方に登録 Categories=System;Utility;
[Desktop Entry] Name=System tools一般名;英語環境などで表示される ……… Name[ja]=システムツール日本語名;日本語環境で表示される ……… Icon=applications-systemアイコンファイル名 Type=Directory
【手順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>