「デスクトップエントリ」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://standards.freedesktop.org/」を「https://standards.freedesktop.org/」に置換) |
Kusanaginoturugi (トーク | 投稿記録) (カテゴリを修正) |
||
1行目: | 1行目: | ||
+ | [[Category:Freedesktop.org]] |
||
+ | [[Category:設定ファイル]] |
||
[[Category:パッケージ開発]] |
[[Category:パッケージ開発]] |
||
[[en:Desktop entries]] |
[[en:Desktop entries]] |
2020年9月7日 (月) 15:20時点における版
デスクトップエントリは X Window System で動作するプログラムの挙動を指定する freedesktop.org の仕様です。デスクトップエントリは設定ファイルとしてアプリケーションの起動方法やメニューとアイコンの表示方法を定義します。最も一般的なデスクトップエントリは .desktop
と .directory
ファイルです。この記事では有用な標準仕様のデスクトップエントリを作成する方法を簡単に説明します。主にパッケージ作成者やメンテナを対象にしていますが、ソフトウェアの開発者なども読む価値があると思われます。
デスクトップエントリには大きくわけて3つのタイプがあります:
- アプリケーション
- アプリケーションのショートカット
- リンク
- ウェブリンクのショートカット。
- ディレクトリ
- メニューエントリのメタデータのコンテナ。
以下のセクションではこれらのエントリを作成したり修正する方法をざっと説明しています。
目次
アプリケーションエントリ
アプリケーションのデスクトップエントリ、または .desktop
ファイルは、基本的にメタ情報の集合でありアプリケーションのショートカットです。これらのファイルは基本的に、システム全体でインストールしたアプリケーションなら /usr/share/applications
または /usr/local/share/applications
に、ユーザー個別にインストールしたアプリケーションなら ~/.local/share/applications
に入っています。ユーザーのエントリはシステムのエントリよりも優先されます。
サンプルファイル
以下はデスクトップエントリの構成のサンプルです。このサンプルは雰囲気を伝えるだけのものであり、利用可能なエントリキー全ての使い方を示してはいません。完全なキーのリストは freedesktop.org specification を見てください。
[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; # エントリを表示するカテゴリを記述
キーの定義
freedesktop.org のサイト にデスクトップが認識する全てのデスクトップエントリが記載されています。例えば、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-utils パッケージに含まれている desktop-file-validate
を使うのが確認するのに一番最適かつシンプルな方法です。確証するには、次を実行:
$ desktop-file-validate <your desktop file>
上記のコマンドで詳細かつ有用な警告・エラーメッセージが表示されます。
アイコン
一般的な画像フォーマット
以下はアイコンとしてよく使われている画像フォーマットの簡単な概要です。
拡張子 | フルネームまたは説明 | グラフィック形式 | コンテナフォーマット | サポート |
---|---|---|---|---|
.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 |
アイコンの変換
(gif や ico など) freedesktop.org の仕様でサポートされていないフォーマットのアイコンしか見つからなかった場合、convert でサポート/推奨されているフォーマットに変換できます (convert は imagemagick パッケージに含まれています):
$ convert <icon name>.gif <icon name>.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 の画像もあります。
アイコンの取得
大抵 .desktop ファイルが付属しているパッケージにはアイコンが含まれていますが、アイコンは存在するのに .desktop ファイルが開発者によって作られていない場合もあります。まずはソースパッケージの中にアイコンが存在しないか確認すると良いでしょう。ソースパッケージの中に大量の画像が存在するときは、find を使って拡張子でファイルを絞り込んで、それから grep を使ってパッケージ名や "icon" あるいは "logo" などのキーワードで検索をかけましょう:
$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"
アプリケーションの開発者がソースパッケージにアイコンを含めていないときは、アプリケーションのウェブサイトを検索しましょう。tvbrowser など、プロジェクトによってはウェブサイトに アートワーク/ロゴのページ が存在しアイコンをダウンロードすることができます。プロジェクトがマルチプラットフォームの場合、Linux/UNIX パッケージにアイコンが付属していなくても、Windows パッケージには存在する可能性があります。プロジェクトが CVS や SVN などのバージョン管理システムを使用している場合、リポジトリにアイコンが存在しないか確認してください。どうやっても見つからないのであれば、プロジェクトにまだアイコンやロゴがないのかもしれません。
ツール
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.desktop
はpackage()
関数でインストールします:
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 フィールドを設定することができます。
- 詳しくは gendesk プロジェクト を参照。
*.desktop ファイルから検索
lsdesktopfAUR bash スクリプトは "Categories" や "Exec" の中身を検索します。"Categories" が存在しないときは "Name" の中身を使います。*.desktop のコマンドラインやカテゴリを使って利用可能なプログラムをコンソールで簡単に確認することが可能です。"DskPath" 配列で定義された既存のベースパスをカラーで表示します。
例:
# lsdesktopf # lsdesktopf game # lsdesktopf gtk
fbrokendesktop
fbrokendesktopAUR bash スクリプトは "which" コマンドを使って既存のパスに存在しない Exec を指定していないか確認します。パラメータを指定しなかった場合、fbrokendesktop は "DskPath" 配列のプリセットフォルダを使います。破損している *.desktop だけを表示します。
例:
# fbrokendesktop # fbrokendesktop /usr # fbrokendesktop /usr/share/apps/kdm/sessions/icewm.desktop
ヒントとテクニック
デスクトップエントリの隠匿
まず、問題のデスクトップエントリファイルを ~/.local/share/applications
にコピーして、変更が上書きされないようにして下さい。
次に、全ての環境でエントリが表示されないようにするには、デスクトップエントリファイルをテキストエディタで開いて次の行を追加します: NoDisplay=true
。
特定のデスクトップでエントリが表示されないようにするには、デスクトップエントリファイルに次の行を追加します: NotShowIn=desktop-name
。
desktop-name は GNOME, Xfce, KDE などに置き換えて下さい。複数のデスクトップでデスクトップエントリを隠匿することもできます。デスクトップの名前をセミコロンで区切って複数指定して下さい。
自動起動
GNOME や KDE など XDG 互換のデスクトップ環境を使っている場合、デスクトップ環境は以下のディレクトリにある *.desktop
ファイルを自動的に起動します:
- システム全体:
$XDG_CONFIG_DIRS/autostart/
(デフォルトでは/etc/xdg/autostart/
)
- GNOME は
/usr/share/gnome/autostart/
にあるファイルも起動します。
- GNOME は
- ユーザー個別:
$XDG_CONFIG_HOME/autostart/
(デフォルトでは~/.config/autostart/
)
システム全体の *.desktop
ファイルをユーザー個別の ~/.config/autostart/
フォルダにコピーすることで上書きすることができます。
デスクトップファイルの仕様については Desktop Entry Specification を参照してください。ディレクトリの詳しい説明は Desktop Application Autostart Specification を見て下さい。
環境変数の修正
env
を追加するように Exec
コマンドを編集します。例:
~/.local/share/applications/abiword.desktop
Exec=env LANG=he_IL.UTF-8 abiword %U