07 January 2023

Linuxのデスクトップ エントリ(desktop entry)の書き方

Linuxに新しいソフトウエアを追加したとき、自動的にdesktop entryが作成されない場合がある。

手動でdesktop entryファイルを書いて、インストールする方法

規格文書

desktop entryの格納場所

  • /usr/share/applications
  • /usr/local/share/applications
  • ~/.local/share/applications

desktop entryのサンプル

Ubuntu 22.04にプリインストールされているソフトウエアでの例

geditのdesktop entryファイルは次のようになっている

/usr/share/applications/org.gnome.gedit.desktop
[Desktop Entry]
Name=Text Editor
Comment=Edit text files
Exec=gedit %U
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
# TRANSLATORS: Do NOT translate or transliterate this text!
#              This is an icon file name.
Icon=org.gnome.gedit
Categories=GNOME;GTK;Utility;TextEditor;
Actions=new-window;new-document;
# TRANSLATORS: Do NOT translate or localize the semicolons!
#              The list MUST also end with a semicolon!
#              Search terms to find this application.
Keywords=Text;Editor;Plaintext;Write;gedit;
DBusActivatable=true
X-Ubuntu-Gettext-Domain=gedit

[Desktop Action new-window]
Name=New Window
Exec=gedit --new-window

[Desktop Action new-document]
Name=New Document
Exec=gedit --new-document

desktop entry作成ソフト alacarte で作成したファイルの例

20230107-alacarte-gui.jpg

~/.local/share/applications/alacarte-made.desktop
[Desktop Entry]
Name=OpenShot Video Editor ver 3.0
Exec=/opt/openshot/OpenShot-v3.0.0-x86_64.AppImage
Comment=Video Editor
Terminal=false
Icon=/opt/openshot/Faenza-openshot.svg
Type=Application

desktop entryを手動作成する

desktop-file-edit コマンドを利用して、新たにdesktop entryファイルを作成

$ touch test.desktop

$ desktop-file-edit --set-name="OpenShot動画エディター" \
--set-comment="クロスプラットフォームな動画エディターです" \
--set-key="Exec" --set-value="/opt/openshot/OpenShot-v3.0.0-x86_64.AppImage %U" \
--set-icon="/opt/openshot/Faenza-openshot.svg" \
--add-category=AudioVideo \
--add-mime-type="video/mp4;video/mpeg;video/x-mpeg;" \
--set-key="Type" --set-value="Application" \
--set-key="Terminal" --set-value="false" \
test.desktop

黄色でアンダーラインを引いたのは必須プロパティである。このコマンドでは次のようなファイルが作成される

test.desktop
[Desktop Entry]
X-Desktop-File-Install-Version=0.26
Name=OpenShot動画エディター
Comment=クロスプラットフォームな動画エディターです
Icon=/opt/openshot/Faenza-openshot.svg
Categories=AudioVideo;
Type=Application
Exec=/opt/openshot/OpenShot-v3.0.0-x86_64.AppImage %U
Terminal=false
MimeType=video/mp4;video/mpeg;video/x-mpeg;

Exec キー

実行するプログラムの後ろにつける、引数のプレースホルダー。次の例では %U となっているものについては、The Exec key (freedesktop.org) に一覧が掲載されている。

Exec=/opt/openshot/OpenShot-v3.0.0-x86_64.AppImage %U
%f単一のファイルへのフルパス名。URLの場合は、ローカルにダウンロードしたファイル名
%F複数ファイルのフルパス名リスト。URLの場合は、ローカルにダウンロードしたファイル名
%u単一URLまたは、単一ファイルへのフルパス名
%U複数URLのリスト、または複数ファイルへのフルパス名リスト

Category キー

メニュー内のどのサブディレクトリに表示されるかを指定するのが、Categoryキーの値。標準的な値は Registered Categories (freedesktop.org) に一覧が掲載されている。

参考までに、Ubuntu 22.04のメニュー デフォルト値は /etc/xdg/menus/gnome-applications.menu (XML形式設定ファイル)に定義されていて、抜き出して一覧にすると次のようなものになる。

メニューメニュー(日本語)Categoryキーの値
Accessories submenuアクセサリーCategories=Utility;
Accessibility submenuユニバーサルアクセスCategories=Accessibility;
Education submenu教育・教養Categories=Education;
Science submenuScienceCategories=Education;Science;
Games submenuゲームCategories=Game;
Graphics submenuグラフィックスCategories=Graphics;
Internet submenuインターネットCategories=Network;
Multimedia submenuサウンドとビデオCategories=AudioVideo;
Office submenuオフィスCategories=Office;
System Tools submenuシステムツールCategories=System;
Utilities submenuユーティリティCategories=X-GNOME-Utilities;
Development Tools submenuプログラミングCategories=Development;

MimeType キー

システムで定義されているMIMEタイプは /usr/share/applications/gnome-mimeapps.list を参照すること。

一般的なMIMEタイプの一覧は

作成したdesktop entryファイルの文法を自動チェックする

$ desktop-file-validate test.desktop

desktop entry ファイルのインストール

ユーザディレクトリ内の~/.local/share/applicationsにsample.desktopというファイルをコピーする例

$ desktop-file-install --dir=/home/user/.local/share/applications sample.desktop

$ desktop-file-install --dir=$HOME/.local/share/applications sample.desktop

※注意: --dir=~/.local/share/applications と書くとエラーになる(homeディレクトリに ~ というサブディレクトリが作られる...)。 必ず、フルパスでコピー先ディレクトリを指定するか、シェルの環境変数$HOMEを使う。

コピー完了後に、MIMEタイプキャッシュをアップデートする

$ update-desktop-database ~/.local/share/applications