概要

ここでは、Linuxにインストールしたアプリケーションソフトウェアのショートカットを作成する場合、
デスクトップアイコン(ショートカット)を用意する方法を記載する。

Linuxのデスクトップ環境(GNOMEやKDE等)が複数存在するが、手順はX Window System環境であれば同様である。
その理由は、デスクトップアイコン(ショートカット)の仕様が、freedesktop.orgによって定められているためである。

デスクトップアイコンを用意するまでの手順は以下の通りである。

  • デスクトップアイコンの準備
  • デスクトップアイコン経由で実行するアプリの準備
  • デスクトップエントリファイルの作成
  • デスクトップファイルデータベースを更新



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

デスクトップアイコンは、freedesktop.orgによって拡張子やサイズの仕様が定められている。
拡張子は、PNG(推奨)、SVG(オプション)、XPM(下位互換、非推奨)のいずれかである。

サイズに関しては、推奨フォーマットのPNGのみを以下に一覧を示す。

PNG形式のアイコンサイズ

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


アイコン画像ファイルの格納先は3箇所存在する。
$Sizeの箇所は、アイコン画像のサイズによってディレクトリ名を変更する。(48×48の場合 : $Size=48×48、512×512の場合 : $Size=512×512)

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


また、/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



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

デスクトップエントリファイルは、デスクトップアイコン経由で実行するアプリに関する情報をまとめたファイルである。
拡張子は.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キーに使用する。