ライブはいいなぁ
昨日はシレトコさんのイベントに行ってきました。 最近、ライブをふつーに見にいくことが少なくなったから、ライブっていいなーと改めて思ったですよ。
_ Linuxデスクトップ環境でプログラムメニューを非インタラクティブに追加する
Linuxデスクトップ環境でプログラムメニューを追加するには、通常、デスクトップ環境のメニュー編集などを使いますが、インタラクティブではなくプログラムなどから自動で追加する場合は、所定のファイルを作成し追加する必要があります。 その設定方法について調べたのでメモ。
参考:
- freedesktop.org - Specifications/menu-spec
- @IT:GNOMEメニューを編集するための基礎知識
- @IT:GNOMEメニューにサブメニューや項目を追加するには
- Development/Tasks/Packaging/Policies/Menu - Mandriva Community Wiki
アプリケーションを起動するための、 *.desktop ファイルを作ります
(ファイル名).desktop という名前で以下のようなファイルを作成します。
面倒な場合はデスクトップ環境で「アプリケーションの起動を追加」などでデスクトップ上にランチャを作れば、desktopファイルが作成されるので、それを利用するとよいでしょう。
サンプルのようにxdg-openから起動するようにして実行属性をつけておくと、デスクトップ環境でなくてもdesktopファイルからアプリケーションを起動することができて便利です。
#!/usr/bin/env xdg-open
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=(実行ファイル)
Name=(名前)
Name[ja]=(日本語ロケールでの名前)
Comment=(コメント)
Comment[ja]=(日本語ロケールでのコメント)
Icon=(アイコンファイル)
Categories=(カテゴリ)
アプリケーションが入るディレクトリを指定する *.directory ファイルを作ります
(ファイル名).directory という名前で以下のようなファイルを作成します。
desktopファイルに似ていますが、ファイル名の拡張子がdirectoryになっていることと、TypeにDirectoryが指定されていることに注意。
[Desktop Entry]
Type=Directory
Name=(名前)
Icon=(アイコンファイル)
メニュー階層を指定するXMLファイル *.menu ファイルを作ります
(ファイル名).menu という名前で以下のようなXMLファイルを作成します。
XMLなので一見ややこしそうに見えますが、実際のところはApplicationsの下にMenu階層を作り、NameとDirectoryに上で作った *.Directory ファイルを指定しているだけです。
メニューについて古い資料だとシステムワイドのmenuファイルを変更して階層を追加していますが、その必要はなく、application-mergedディレクトリに、この作成したmenuファイルを置けば追加することができます。
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Applications</Name>
<Menu>
<Name>(名前)</Name>
<Directory>(上で作ったdirectoryファイル).directory</Directory>
</Menu>
</Menu>
.desktop, .directory, *.menuファイルを指定のディレクトリに置く
作成した.desktop, .directory, *.menuそれぞれのファイルを指定のディレクトリに配置します。
-
システムワイドの場合
- アプリケーション(*.desktop): /usr/share/applications/
- ディレクトリ(*.directory): /usr/share/desktop-directories/
- メニュー(*.menu): /etc/xdg/menus/applications-merged/
-
ユーザーローカルの場合
- アプリケーション(*.desktop): $(HOME)/.local/share/applications/
- ディレクトリ(*.directory): $(HOME)/.local/share/desktop-directories/
- メニュー(*.menu): $(HOME)/.config/menus/applications-merged/