設定 - デスクトップエントリ

提供: MochiuWiki : SUSE, EC, PCB

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

デスクトップエントリとは、アプリケーションの起動情報やメタデータを記述した設定ファイルである。
拡張子は、.desktopである。

freedesktop.orgが策定するDesktop Entry Specificationによって仕様が標準化されている。

デスクトップエントリファイルを作成することにより、以下に示す機能が利用できるようになる。

  • アプリケーションメニューへの登録
    GNOMEのアクティビティ、KDE Plasmaのアプリケーションランチャー等
  • デスクトップ上へのショートカットアイコンの配置
  • ファイルマネージャにおけるMIMEタイプの関連付け
    特定の種類のファイルを開くアプリケーションの選択


デスクトップエントリの仕様はfreedesktop.orgによって標準化されているため、
GNOMEやKDE Plasma等のデスクトップ環境に関わらず、またX11やWayland等のディスプレイプロトコルに関わらず、共通の手順で作成することができる。

デスクトップアイコンの作成手順は以下の通りである。

  1. アイコン画像ファイルの準備
  2. デスクトップエントリファイル (.desktopファイル)の作成
  3. デスクトップファイルデータベースの更新



デスクトップアイコンの準備

デスクトップアイコンの画像ファイルは、freedesktop.orgが策定するIcon Theme Specificationによって使用可能な画像形式とサイズが定められている。

使用可能な画像形式

使用可能な画像形式は以下の通りである。

  • PNG (推奨)
    最も一般的な形式であり、全てのデスクトップ環境でサポートされている。
    ピクセルベースの画像であるため、各サイズごとに個別のファイルを用意する必要がある。
  • SVG (オプション)
    ベクター形式であるため、1つのファイルで全てのサイズに対応できる。
    ただし、SVGのサポートはオプションであり、全ての環境で利用できるとは限らない。
    SVGアイコンは、scalableディレクトリ に格納する。
  • XPM (下位互換、非推奨)
    古い形式であり、下位互換性のためにのみサポートされている。
    新規にアイコンを作成する場合は使用すべきではない。


アイコンサイズ

推奨フォーマットであるPNG形式で使用可能なアイコンサイズの一覧を以下に示す。

  • 48×48
  • 64×64
  • 72×72
  • 96×96
  • 128×128
  • 192×192
  • 256×256
  • 512×512
  • 1024×1024


全てのサイズを用意する必要はないが、48×48は最低限必要なサイズとされている。

デスクトップ環境は、要求されたサイズに最も近いアイコンを自動的に選択してスケーリングする。
そのため、高解像度ディスプレイ環境では128×128以上のサイズも用意することが望ましい。

自分の環境が対応しているアイコンサイズは、/usr/share/icons/hicolorディレクトリ を確認すればわかる。

ls /usr/share/icons/hicolor/

# 例
1024x1024  16x16    20x20  24x24    32x32  40x40  48x48    64x64  8x8    icon-theme.cache  scalable
128x128    192x192  22x22  256x256  36x36  42x42  512x512  72x72  96x96  index.theme       symbolic


アイコン画像ファイルの格納先

アイコン画像ファイルの格納先として以下の3箇所が存在する。

パス中の $Size の部分は、アイコンサイズに対応するディレクトリ名に置き換える。(例: 48x48、512x512等)

~/.local/share/icons/hicolor/$Size/apps    (個別ユーザ向け)
/usr/share/icons/hicolor/$Size/apps        (全ユーザ向け パッケージ管理システムでのインストール)
/usr/local/share/icons/hicolor/$Size/apps  (全ユーザ向け パッケージ管理システム外でのインストール)


パスに含まれる hicolorは、デフォルトのフォールバックアイコンテーマである。
ユーザが選択したアイコンテーマでアイコンが見つからない場合に hicolorテーマ が参照されるため、
アプリケーション独自のアイコンは hicolorテーマ に配置することが推奨されている。

SVGアイコンの場合は、サイズ別ディレクトリの代わりに scalable/appsディレクトリ に格納する。

~/.local/share/icons/hicolor/scalable/apps    (個別ユーザ向け)
/usr/share/icons/hicolor/scalable/apps        (全ユーザ向け パッケージ管理システムでのインストール)
/usr/local/share/icons/hicolor/scalable/apps  (全ユーザ向け パッケージ管理システム外でのインストール)


アイコンの命名規則

アイコンファイル名は、デスクトップエントリファイルのIconキーで指定する名前と一致させる必要がある。

freedesktop.org仕様に従って hicolorテーマ に配置する場合、Iconキーには拡張子を含まないファイル名のみを指定する。
デスクトップ環境がアイコンテーマのディレクトリを自動的に検索して、適切なサイズのアイコンファイルを選択する。

 # freedesktop.org仕様に従う場合 (推奨) : 拡張子・パスなし
 Icon=myapp
 
 # 任意のパスに配置する場合 : 拡張子を含むフルパス
 Icon=/opt/myapp/myapp.png


freedesktop.org仕様に則っていないディレクトリにアイコンを配置する場合は、拡張子を含むフルパスを指定する必要がある。

また、近年ではリバースDNS形式の命名が推奨されている。(例 : org.mozilla.firefox.png)
リバースDNS形式を使用することで、他のアプリケーションとのファイル名の衝突を防ぐことができる。

アイコンキャッシュの更新

アイコンファイルを hicolorテーマ に配置した後、アイコンキャッシュの更新が必要な場合がある。

gtk-update-icon-cache /usr/share/icons/hicolor


個別ユーザ向けに配置する場合は、以下に示すコマンドを実行する。

gtk-update-icon-cache ~/.local/share/icons/hicolor


※注意
アイコンキャッシュを更新しないと、新しいアイコンがデスクトップ環境に反映されない場合がある。


デスクトップエントリファイルの作成

デスクトップエントリファイルは、デスクトップアイコン経由で実行するアプリに関する情報をまとめたファイルである。
拡張子は.desktopであり、格納先は3箇所存在する。

~/.local/share/applications    (個別ユーザ向け)
/usr/share/applications        (全ユーザ向け パッケージ管理システムでのインストール)
/usr/local/share/applications  (全ユーザ向け パッケージ管理システム外でのインストール)


ここでは、~/.local/share/applicationsディレクトリにorg.hoge.desktopファイルを作成する。

touch ~/.local/share/applications/org.hoge.desktop


 
 # ~/.local/share/applications/org.hoge.desktopファイル
 [Desktop Entry]
 Type=Application                          # アプリケーションのショートカットである事を意味する
 Name=hoge application                     # アプリケーション名
 Comment=Sample Application                # アプリケーションの説明文 (ツールチップ)
 Exec=/usr/bin/hoge                        # 実行対象のアプリケーションのパス
 Icon=hoge.png                             # アイコン画像ファイルのパス
 Encoding=UTF-8                            # 文字コード
 Categories=Application;Develop;           # アプリケーションの分類
 Terminal=false                            # アプリケーションをターミナルで実行するかどうか


下表に、デスクトップエントリのキーを示す。

デスクトップエントリキー 説明
Type 項目のタイプを指定する。
  • Application : アプリケーションを起動する場合
  • Link : ファイル、ディレクトリ、 FTPサイトにリンクする場合
Name アプリケーション名やメニュー上の項目名
GenericName アプリケーションがどのようなものかを示す名称 (例 : Firefoxの場合は、Web Browser等)
Version アプリケーションのバージョン
Comment アプリケーションの説明文 (ツールチップ)
Exec 実行対象のアプリケーション (実行ファイル) のパス
Icon アイコンのファイル名を指定する。
freedesktop.org仕様の場合は、ファイル名のパス、ファイル拡張子は指定しない。
ただし、freedesktop.org仕様に則っていないディレクトリに画像を格納した場合、拡張子を含むフルパスを指定する。
Encoding デスクトップエントリの文字コードを指定する。(通常は、UTF-8を指定)
Terminal Execキーで指定したコマンドをターミナルで実行するかどうかを指定する。

true : ターミナルを使用
false : ターミナルを使用しない
Categories アプリケーションの分類を指定する。
;(セミコロン)区切りで複数指定できる。
Categoriesの一覧を下表に後述する。
TryExec プログラムがシステムにインストールされているかをテストするための実行ファイルのパスを指定する。
絶対パスでない場合は、環境変数 $PATH から検索される。
ファイルが存在しないか実行可能でない場合、デスクトップエントリは無視される。(メニューに表示されない等)

値の型 : string
例 : TryExec=/usr/bin/firefoxTryExec=gimp
Keywords アプリケーションの検索・発見を補助するためのキーワードのリストを指定する。
;(セミコロン)区切りで複数指定できる。
ローカライズ可能である。(例 : Keywords[ja]=画像;編集;描画)
ランチャー等の検索機能で使用され、UIには直接表示されない。
NameキーやGenericNameキーと重複する値を含めるべきではない。

値の型 : localestring(s)
例 : Keywords=text;editor;document;writing
MimeType アプリケーションがサポートするMIMEタイプを指定する。
;(セミコロン)区切りで複数指定できる。
ファイルマネージャ等がファイルを開く際に適切なアプリケーションを選択するために参照される。

値の型 : string(s)
例 : MimeType=text/plain;text/x-python;application/x-shMimeType=image/jpeg;image/png;image/gif
StartupNotify アプリケーションがStartup Notification Protocolに対応しているかどうかを指定する。
trueの場合、アプリケーションは DESKTOP_STARTUP_ID 環境変数が設定された状態で起動され、起動完了時にremoveメッセージを送信する。
デスクトップ環境はこの信号に基づいてカーソル変更やスプラッシュスクリーン等のユーザフィードバックを提供する。
GTK+やQt等のツールキットを使用するアプリケーションは通常trueを指定する。

値の型 : boolean
StartupWMClass アプリケーションがウインドウにマッピングするWMクラスまたはWM名のヒント文字列を指定する。
デスクトップ環境がウインドウを正しいアプリケーションに関連付けるために使用される。
StartupNotify=trueの場合に特に重要である。
正確な値はxprop WM_CLASSコマンド等で確認できる。

値の型 : string
例 : StartupWMClass=firefoxStartupWMClass=code


デスクトップエントリファイルのCategoriesキーは、以下の項目から任意の個数を選択する。(セミコロン区切り)

Categoriesキーの種類 説明
AudioVideo プレゼンテーション・作成・加工を行うマルチメディア用アプリケーション
Audio オーディオアプリケーション
Video ビデオアプリケーション
Development 開発用アプリケーション
Education 教育用アプリケーション
Game ゲーム
Graphics ビューワ・作成・加工を行うグラフィックアプリケーション
Network Webブラウザ等のアプリケーション
Office オフィス用アプリケーション
Science 物理・科学で用いるアプリケーション
Settings 環境設定用アプリケーション
System ログビューワやネットワークモニタのようなシステムアプリケーション
Uility 小規模なユーティリティアプリケーション



フィールドコード

コマンドラインには、1つの%fや%u等のフィールドコードを含めることができる。

ソフトウェアがファイルを開いてはいけない場合、%f、%u、%F、%U等のフィールドコードをコマンドラインから削除する必要がある。
また、フィールドコードは、引用された引数の中で使用してはならない。

%F%Uのフィールドコードは、単独で引数としてのみ使用できる。

フィールドコードの説明
フィールドコード 説明
%f 複数のファイルが選択されていても、単一のファイル名(パスを含む)として認識する。
また、ファイルがローカルシステム上に存在しない場合(HTTPやFTPにある場合)、
ファイルはローカルシステムにコピーされて、%fは一時ファイルを指すように展開される。
これは、URL構文を処理できないソフトウェアで使用される。
%F 複数のローカルファイルを1度に開くことができるソフトウェアに使用する。
各ファイルは、別の引数としてソフトウェアに渡される。
%u 複数のファイルが選択されていても、ローカルファイルは、単一のURLまたはファイルパスとして渡される。
%U 各URLは、ソフトウェアに個別の引数として渡される。
ローカルファイルは、複数のURLまたはファイルパスとして渡される。
%i デスクトップエントリのIconキーを、--iconとIconキーの値の2つの引数として展開する。
Iconキーの値が空または見つからない場合は、どの引数にも展開しない。
%c デスクトップエントリのNameキーに記述されているソフトウェア名に別名を設定する。
%k デスクトップファイルの場所を、URI (vfolderシステムから取得した場合等) または ローカルファイル名で指定する。
%d 非推奨
%D 非推奨
%m 非推奨
%n 非推奨
%N 非推奨
%v 非推奨



デスクトップファイルデータベースの更新

デスクトップファイルデータベースの更新は、[Alt]キー + [F2]キーを押下後、[R]キーを押下するる。
デスクトップエントリファイルを作成または更新した場合は、必ず実行する必要がある。


GUIでデスクトップアイコンを追加する方法

デスクトップ画面で右クリックすれば、[新しいLauncherを追加]する旨の選択肢がある。

それを選択した後、起動対象のアプリケーション情報を入力する画面が表示されるので、
この画面上で必須項目を入力すれば、デスクトップエントリファイルを作成しなくてもデスクトップアイコンが作成できる。


WMClassの値を確認する方法

デスクトップエントリファイルのStartupWMClassキーに設定する値は、対象アプリケーションのウインドウから取得する必要がある。

X11環境の場合

X11環境では、xprop コマンドを使用してWMClassの値を確認できる。

xprop WM_CLASS コマンドを実行すると、カーソルが十字に変化するので、対象のウインドウをクリックする。

xprop WM_CLASS


# 出力例
WM_CLASS(STRING) = "navigator", "firefox"


1番目の値はインスタンス名、2番目の値はクラス名である。
StartupWMClassキーには、2番目のクラス名を指定する。(上記の例では、firefox)

また、アクティブなウインドウを自動的に指定する場合は、xdotool コマンドと組み合わせて使用する。

xprop -id $(xdotool getwindowfocus) WM_CLASS


Wayland環境の場合

Wayland環境では、X11の WM_CLASS に相当するものとして、app_id が使用される。
ただし、XWayland上で動作するアプリケーションの場合は、従来のWM_CLASSが使用される。

使用するコンポジタによって確認方法が異なる。

GNOME (Mutter)

Looking Glassを使用して確認する。

[Alt] + [F2]キーを押下して、lg と入力してLooking Glassを起動する。
[Windows]タブを選択すると、開いているウインドウの一覧が表示され、各ウインドウの wm_class の値を確認できる。

KDE Plasma (KWin)

以下のいずれかの方法で確認する。

  • システム設定のウインドウルール
    [システム設定] - [ウインドウの管理] - [ウインドウルール]を開き、[ウインドウプロパティを検出]ボタンを押下する。
    対象のウインドウをクリックすると、ウインドウクラス等のプロパティが表示される。

  • kdotoolコマンド
    KDE環境向けのxdotool相当ツールであり、ウインドウのプロパティを取得できる。


Sway / wlroots系

swaymsg コマンドを使用してウインドウツリーの情報を取得する。

swaymsg -t get_tree


jq コマンドでフィルタリングして、app_idclass の値を確認する。

swaymsg -t get_tree | jq '..|select(.type=="con")?|{app_id, class}'


Waylandネイティブアプリケーションの場合は、app_id フィールドに値が設定される。
XWaylandアプリケーションの場合は、class フィールドに値が設定される。(XWaylandアプリケーションの app_idnull になる)

Hyprland

hyprctl コマンドを使用してウインドウ情報を取得する。

hyprctl clients


出力には各ウインドウの class フィールドが含まれており、その値をStartupWMClassキーに使用する。