🖱️
デスクトップエントリを書こう
はじめに
本記事のターゲット
- 自分で作ったアプリケーションをデスクトップから起動できるようにしたい人
- パッケージマネージャを使わずにアプリケーションをインストールしたい人
前提
Linuxでxdg-menuを実装したデスクトップ環境を使用していること
この記事で説明すること
この記事ではデスクトップエントリを作成し、デスクトップ環境からアプリケーションを起動できるようにするまでの手順を紹介します。
デスクトップエントリには3タイプがありますが、本記事ではアプリケーションエントリの作成手順のみをカバーします。
仕様
.desktopファイル
.desktopファイルは以下の形式で記述します。
[Desktop Entry]
key1=value
key2=value
key3=value
...
以下はよく仕様されるキーの一覧です。
| キー | 備考 |
|---|---|
| Type | デスクトップエントリのタイプ |
| Name | アプリケーション名 |
| Comment | ツールチップ用コメント |
| Path | ワーキングディレクトリ |
| Exec | 実行ファイルの絶対パス(引数を渡すことも可能) |
| Icon | アイコン名(画像ファイルの拡張子を省略したもの) |
| Categories | アプリケーションのカテゴリ |
上記の表はすべてのキーを網羅していません。詳細はこちらを参照してください。
アイコンパス
以下の順番でアイコンの探索が行われます。
$HOME/.icons$XDG_DATA_DIRS/icons$/usr/share/pixmaps
ハンズオン
シナリオ
Discord公式サイトからtar.gzファイルをダウンロードし、システム全体に対してインストールを行います。
ディレクトリ構造
ダウンロードしたtar.gzファイルを解凍すると、以下のディレクトリを得られます。
discord #tar.gzファイルを解凍したもの
└── Discord
├── Discord
├── chrome-sandbox
├── chrome_100_percent.pak
├── chrome_200_percent.pak
├── chrome_crashpad_handler
├── discord.desktop
├── discord.png
├── icudtl.dat
├── libEGL.so
├── libGLESv2.so
├── libffmpeg.so
├── libvk_swiftshader.so
├── libvulkan.so.1
├── locales
├── postinst.sh
├── resources
├── resources.pak
├── snapshot_blob.bin
├── v8_context_snapshot.bin
└── vk_swiftshader_icd.json
インストール手順
- 今回は予め
discord.desktopが用意されています。[Desktop Entry] Name=Discord StartupWMClass=discord Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone. GenericName=Internet Messenger Exec=/usr/share/discord/Discord Icon=discord Type=Application Categories=Network;InstantMessaging; Path=/usr/bin -
Execを見ると、/usr/share/discord配下にある実行ファイルDiscordが呼ばれることが分かるので、ディレクトリを移動します。$ mv ~/path/to/discord-0.0.50/Discord /usr/share/discord -
Pathを見ると、/usr/binをワーキングディレクトリとしてDiscordを起動することが分かります。mvやcpを用いてDiscordを/usr/binに移動した場合、実行ファイルから2で配置した/usr/share/discord内にあるファイルへアクセスできません。ですので、代わりにシンボリックリンクを作成します。$ ln -s /usr/share/discord/Discord /usr/bin/Discord - アプリケーションディレクトリの中に
discord.pngという画像ファイルがあるので、それを/usr/share/pixmaps配下に格納します。 - 以下のコマンドを用いて
discord.desktopを検証します。ファイルに問題がなければ何も出力されません。$ desktop-file-validate /usr/share/discord/discord.desktop - 最後に、以下のコマンドを用いて
discord.desktopのインストールを行います。$ desktop-file-install --dir=/usr/share/applications /usr/share/discord/discord.desktop
参考
Discussion