デスクトップエントリ

提供: ArchWiki
2023年3月15日 (水) 11:29時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎desktop ファイルの変更: }} が抜けていた)
ナビゲーションに移動 検索に移動

XDG デスクトップエントリ仕様は、XDG Desktop Menu 仕様を実装しているデスクトップ環境のアプリケーションメニューにアプリケーションを統合するための規格です。

基本

デスクトップエントリには、1つの Type キーと1つの Name キーが含まれていなければなりません。オプションで、アプリケーションメニューでの見た目を定義することができます。

Type に指定できるタイプは3つあります:

Application
どのようにしてアプリケーションを起動するかや、どの MIME タイプをサポートするかを定義します (MIME タイプの記述は XDG MIME Applications により使用されます)。XDG 自動起動を使えば、アプリケーションエントリを特定のディレクトリに配置することにより、そのエントリを自動起動させることができます。アプリケーションエントリは、ファイル拡張子 .desktop を使用します。#アプリケーションエントリ を見てください。
Link
URL へのショートカットを定義します。リンクエントリは、ファイル拡張子 .desktop を使用します。
Directory
アプリケーションメニューでのサブメニューの見た目を定義します。ディレクトリエントリは、ファイル拡張子 .directory を使用します。

以下のセクションでは、これらのエントリの作成や検証の方法について大まかに説明します。

アプリケーションエントリ

アプリケーションのデスクトップエントリ (.desktop ファイル) は、基本的にメタ情報リソースの集合であり、アプリケーションのショートカットです。通常、これらのファイルは、システム全体でインストールしたアプリケーションなら /usr/share/applications/usr/local/share/applications に、ユーザ固有のアプリケーションなら ~/.local/share/applications に入っています。ユーザーのエントリはシステムのエントリよりも優先されます。

ファイル例

以下は、コメントを追加したデスクトップエントリの構成のサンプルです。このサンプルは雰囲気を伝えるだけのものであり、利用可能なエントリキー全ての使い方を示してはいません。完全なキーのリストは freedesktop 仕様 を見てください。

[Desktop Entry]

# 先のセクションでリストアップしたタイプ
Type=Application

# このファイルが準拠しているデスクトップエントリ仕様のバージョン
Version=1.0

# アプリケーションの名前
Name=jMemorize

# ツールチップとして利用できる/されるコメント
Comment=Flash card based learning tool

# 実行ファイルが存在するフォルダへのパス
Path=/opt/jmemorise

# アプリケーションの実行可能ファイル。引数を付けることができます。
Exec=jmemorize

# エントリを表示するときに使われるアイコンの名前
Icon=jmemorize

# アプリケーションをターミナルで実行する必要があるかどうかを記述
Terminal=false

# このエントリをどのカテゴリで表示すべきかを記述
Categories=Education;Languages;Java;
ノート: 必須のキーは TypeName だけです。

キーの定義

freedesktop のサイトに、認識される全てのデスクトップエントリが記載されています。 例えば、Type キーは3つのタイプのデスクトップエントリを定義します: アプリケーション (Application, タイプ1), リンク (Link, タイプ2), ディレクトリ (Directory, タイプ3)。

  • Version キーはアプリケーションのバージョンを表すものではなく、デスクトップエントリが準拠しているデスクトップエントリ規格のバージョンを指定します。
  • Name, GenericName, Comment はしばしば以下のように同じような値が使われることがありますが:
Name=Pidgin Internet Messenger
GenericName=Internet Messenger

または:

Name=NoteCase notes manager
Comment=Notes Manager

上記のような設定はユーザーを混乱させるだけなので避けるべきです。Name キーにはアプリケーションの名前 (あるいはその省略語や頭字語) だけを書いてください。

  • GenericName にはアプリケーションがどのようなものなのかを示す名称を指定するべきです (例えば Firefox なら "Web Browser")。
  • Comment には何らかの追加情報を記入することを意図しています。

検証

いくつかのキーは非推奨となっているので、desktop-file-validate(1) を使ってデスクトップエントリを検証する必要があるかもしれません。このツールは desktop-file-utils パッケージに含まれています。エントリを検証するには、以下を実行してください:

$ desktop-file-validate <デスクトップファイル>

上記のコマンドで詳細かつ有用な警告・エラーメッセージが表示されます。

インストール

対象のディレクトリに desktop ファイルをインストールするには、desktop-file-install(1) を使ってください。例えば:

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

デスクトップエントリデータベースの更新

~/.local/share/applications で定義されているデスクトップエントリを機能させるには、以下のコマンドを実行してください:

$ update-desktop-database ~/.local/share/applications
ヒント: -v (verbose) 引数を追加すると、デスクトップエントリのエラーを表示します。

アイコン

Icon Theme Specification も参照してください。

一般的な画像フォーマット

以下はアイコンとしてよく使われている画像フォーマットの簡単な概要です。

freedesktop.org 仕様で指定されているアイコンとしてサポートされる画像フォーマット。
拡張子 フルネームまたは説明 グラフィック形式 コンテナフォーマット サポート
.png Portable Network Graphics ラスタ No Yes
.svg(z) Scalable Vector Graphics ベクタ No Yes (オプション)
.xpm X PixMap ラスタ No Yes (非推奨)
.gif Graphics Interchange Format ラスタ No No
.ico MS Windows Icon Format ラスタ Yes No
.icns Apple Icon Image ラスタ Yes No

アイコンの変換

この記事あるいはセクションは ImageMagick#Usage と合併することが議論されています。
ノート: Belongs there. (議論: トーク:デスクトップエントリ#)

(gifico など) freedesktop.org の仕様でサポートされていないフォーマットのアイコンしか見つからなかった場合、convert ツールでサポート/推奨されているフォーマットに変換できます (convertimagemagick パッケージに含まれています):

$ convert <アイコン名>.gif <アイコン名>.png

ico などのコンテナフォーマットから変換した場合、<icon name>-<number>.png という名前で ico ファイルにカプセル化されていた画像が取得できます。画像のサイズや ico などのコンテナに含まれている画像の数を調べたいときは (imagemagick パッケージに含まれている) identify を使います:

$ identify /usr/share/vlc/vlc48x48.ico
/usr/share/vlc/vlc48x48.ico[0] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[1] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[2] ICO 128x128 128x128+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[3] ICO 48x48 48x48+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[4] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb
/usr/share/vlc/vlc48x48.ico[5] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb

上記の ico ファイルでは、ファイル名からは 48x48 の画像しか含まれていないように見えますが、実は6つのサイズの画像が含まれていて、中には 48x48 よりも大きな 128x128 の画像もあります。

あるいは、icotool (icoutils にあり) を使って ico コンテナから png イメージを抽出できます:

$ icotool -x <icon name>.ico

.icns コンテナからイメージを展開する場合、icns2png (libicns により提供) を使うことができます:

$ icns2png -x <icon name>.icns

アイコンの取得

大抵 .desktop ファイルが付属しているパッケージにはアイコンが含まれていますが、アイコンは存在するのに .desktop ファイルが開発者によって作られていない場合もあります。まずはソースパッケージの中にアイコンが存在しないか確認すると良いでしょう。 ソースパッケージの中に大量の画像が存在するときは、find を使って拡張子でファイルを絞り込んで、それから grep を使ってパッケージ名や "icon" あるいは "logo" などのキーワードで検索をかけましょう:

$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"

アプリケーションの開発者がソースパッケージにアイコンを含めていないときは、アプリケーションのウェブサイトを検索しましょう。tvbrowserAUR など、プロジェクトによってはウェブサイトに アートワーク/ロゴのページ が存在しアイコンをダウンロードすることができます。プロジェクトがマルチプラットフォームの場合、Linux/UNIX パッケージにアイコンが付属していなくても、Windows パッケージには存在する可能性があります。プロジェクトが CVS や SVN などのバージョン管理システムを使用している場合、リポジトリにアイコンが存在しないか確認してください。 どうやっても見つからないのであれば、プロジェクトにまだアイコンやロゴがないのかもしれません。

アイコンのパス

freedesktop.org 仕様は、プログラムがアイコンを探索するディレクトリと、探索する順番を規定しています:

  1. $HOME/.icons (後方互換性のため)
  2. $XDG_DATA_DIRS/icons
  3. /usr/share/pixmaps

ツール

arronax

Arronax は、アプリケーションやショートカットのデスクトップエントリを作成/変更するためのグラフィカルなプログラムです。

alacarte

alacarte は、GNOME のためのグラフィカルなメニューエディタで、freedesktop.org のメニュー仕様を使用します。デスクトップエントリのオーバーライドもサポートしています。

gendesk

gendesk は PKGBUILD ファイルから直接情報を取得して .desktop ファイルを生成する Arch Linux 専用のツールとして開発がスタートしました。今ではコマンドライン引数を使用する汎用のツールとなっています。

アイコンは openiconlibrary から自動的にダウンロードすることが可能です (アイコンのソースは将来変更される可能性があります)。

使用法

  • gendesk を makedepends に追加
  • prepare() 関数に以下を記入:
gendesk --pkgname "$pkgname" --pkgdesc "$pkgdesc"
  • もしくは、アイコンが既に含まれている場合 (例: $pkgname.png)、アイコンをダウンロードしない、あるいはデフォルトのアイコンを使うために -n フラグを使います。例:
gendesk -n --pkgname "$pkgname" --pkgdesc "$pkgdesc"
  • 作成された $srcdir/$pkgname.desktoppackage() 関数でインストールします:
install -Dm644 "$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
  • アイコンをインストールするには:
install -Dm644 "$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
  • --name='Program Name' でメニューエントリの名前を決めることができます。
  • --exec='/opt/some_app/elf --with-ponies' で exec フィールドを設定することができます。

lsdesktopf

lsdesktopfAUR は、利用可能な .desktop ファイルを一覧表示したり、エントリの内容を検索したりできます。

$ lsdesktopf
$ lsdesktopf --list
$ lsdesktopf --list gtk zh_TW,zh_CN,en_GB

MIME タイプ関連の検索を行うこともできます。XDG MIME Applications#lsdesktopf を見てください。

fbrokendesktop

fbrokendesktopAUR Bash スクリプトは、既存のパスを指していない壊れた Exec の値を検出します。パラメータを指定しなかった場合、fbrokendesktop は DskPath 配列のプリセットフォルダを使います。破損している .desktop だけを完全なパスとファイル名と共に表示します。

例:

$ fbrokendesktop
$ fbrokendesktop /usr
$ fbrokendesktop /usr/share/xsessions/icewm.desktop

ヒントとテクニック

ターミナルから desktop ファイルを実行する

gtk3 がインストールされている場合、gtk-launch application.desktop と実行してください。

あるいは、dex パッケージをインストールして、dex /path/to/application.desktop と実行してください。

desktop ファイルの変更

システム全体で使用される .desktop ファイル (例えば、パッケージからインストールしたもの) を変更したい場合、まず関連する .desktop ファイルを $XDG_DATA_HOME/applications/ にコピーしてください (例えば、/usr/share/applications/ から ~/.local/share/applications/ へ)。こうすることで、システムのアップグレードの際に対象のパッケージがアップデートされても、あなたが加えた変更が上書きされることはありません。ローカルのユーザ固有の .desktop ファイルは、自動的にシステム全体の .desktop ファイルよりも優先されるはずです。これで、必要に応じてローカルのユーザ固有の .desktop ファイルを変更できます。

デスクトップエントリの隠匿

デスクトップエントリの可視性は、複数の方法で制御できます。詳細は Desktop Entry Specification を見てください。以下の内容のうち1つを .desktop ファイルに追加してください:

  • 全てのデスクトップ環境に適用。以下のうち1つ (あるいは両方) を選んでください:
    • メニューに表示したくないアプリケーションに対して NoDisplay=true 行を追加する。
    • 削除済みでありメニューに表示したくないアプリケーションに対して Hidden=true 行を追加する。
  • デスクトップ環境を指定。以下のうち1つを選んでください。desktop_names の部分はデスクトップ環境のリストであり、セミコロンで区切ってください (例: GNOME, GNOME;Xfce;KDE;):
    • NotShowIn=desktop_names 行を追加すると、指定したデスクトップ環境でエントリを隠します。
    • OnlyShowIn=desktop_names 行を追加すると、指定したデスクトップ環境でのみエントリを表示します。

環境変数の変更

環境変数を設定するには、env(1) コマンドで環境変数を設定するように .desktop ファイル内の Exec= 行を編集してください。例えば:

~/.local/share/applications/abiword.desktop
# Exec=abiword %U
Exec=env LANG=he_IL.UTF-8 abiword %U

参照

翻訳ステータス: このページは en:Desktop entries の翻訳バージョンです。最後の翻訳日は 2022-08-15 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。