「デスクトップエントリ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
25行目: 25行目:
 
Name=jMemorize # アプリケーションの名前
 
Name=jMemorize # アプリケーションの名前
 
Comment=Flash card based learning tool # コメントはツールチップとして使われます
 
Comment=Flash card based learning tool # コメントはツールチップとして使われます
  +
Path=/opt/jmemorise # 実行ファイルが存在するフォルダのパス
 
Exec=jmemorize # アプリケーションの実行可能ファイル
 
Exec=jmemorize # アプリケーションの実行可能ファイル
 
Icon=jmemorize # エントリを表示するときに使われるアイコンの名前
 
Icon=jmemorize # エントリを表示するときに使われるアイコンの名前
34行目: 35行目:
 
[http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s05.html freedesktop.org のサイト] にデスクトップが認識する全てのデスクトップエントリが記載されています。例えば、{{Ic|Type}} キーは3つのタイプのデスクトップエントリを定義します: アプリケーション (Application, タイプ1), リンク (Link, タイプ2), ディレクトリ (Directory, タイプ3)。
 
[http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s05.html freedesktop.org のサイト] にデスクトップが認識する全てのデスクトップエントリが記載されています。例えば、{{Ic|Type}} キーは3つのタイプのデスクトップエントリを定義します: アプリケーション (Application, タイプ1), リンク (Link, タイプ2), ディレクトリ (Directory, タイプ3)。
   
  +
* {{Ic|Version}} キーはアプリケーションのバージョンを表すものではなく、デスクトップエントリが準拠しているデスクトップエントリ規格のバージョンを指定します。
* {{Ic|Version}} key does not stand for the version of the application, but for the version of the desktop entry specification to which this file complies.
 
   
* {{Ic|Name}}, {{Ic|GenericName}} and {{Ic|Comment}} often contain redundant values in the form of combinations of them, like:
+
* {{Ic|Name}}, {{Ic|GenericName}}, {{Ic|Comment}} はしばしば以下のように同じような値が使われることがありますが:
   
 
Name=Pidgin Internet Messenger
 
Name=Pidgin Internet Messenger
 
GenericName=Internet Messenger
 
GenericName=Internet Messenger
  +
または:
or
 
 
Name=NoteCase notes manager
 
Name=NoteCase notes manager
 
Comment=Notes Manager
 
Comment=Notes Manager
   
  +
上記のような設定はユーザーを混乱させるだけなので止めてください。{{Ic|Name}} キーにはアプリケーションの名前 (あるいはその省略語や頭字語) だけを書いてください。
This should be avoided, as it will only be confusing to users. The {{Ic|Name}} key should only contain the name, or maybe an abbreviation/acronym if available.
 
   
* {{Ic|GenericName}} should state what you would generally call an application that does what this specific application offers (i.e. Firefox is a "Web Browser").
+
* {{Ic|GenericName}} にはアプリケーションがどのようなものなのかを示す名称を指定します (例えば Firefox なら "Web Browser")
* {{Ic|Comment}} is intended to contain any usefull additional information.
+
* {{Ic|Comment}} は何らかの追加情報を記入します。
   
 
==== 非推奨 ====
 
==== 非推奨 ====
119行目: 120行目:
 
/usr/share/vlc/vlc48x48.ico[4] ICO 32x32 32x32+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
 
/usr/share/vlc/vlc48x48.ico[5] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb
As you can see, the example ''ico'' file, although its name might suggest a single image of size 48x48, contains no less than 6 different sizes, of which one is even greater than 48x48, namely 128x128. And to give a bit of motivation on this subject, at the point of writing this section (2008-10-27), the 128x128 size was missing in the ''vlc'' package (0.9.4-2). So the next step would be to look at the vlc PKGBUILD and check whether this icon format was not in the source package to begin with (in that case we would inform the vlc developers), or whether this icon was somehow omitted from the Arch-specific package (in that case we can file a bug report at [https://bugs.archlinux.org/ the Arch Linux bug tracker]).
+
上記の ''ico'' ファイルでは、ファイル名からは 48x48 の画像しか含まれていないように見えますが、実は6つのサイズの画像が含まれていて、中には 48x48 よりも大きな 128x128 の画像もあります。And to give a bit of motivation on this subject, at the point of writing this section (2008-10-27), the 128x128 size was missing in the ''vlc'' package (0.9.4-2). So the next step would be to look at the vlc PKGBUILD and check whether this icon format was not in the source package to begin with (in that case we would inform the vlc developers), or whether this icon was somehow omitted from the Arch-specific package (in that case we can file a bug report at [https://bugs.archlinux.org/ the Arch Linux bug tracker]).
 
(''Update:'' this bug has now been [https://bugs.archlinux.org/task/11923 fixed], so as you can see, your work will not be in vain.)
 
(''Update:'' this bug has now been [https://bugs.archlinux.org/task/11923 fixed], so as you can see, your work will not be in vain.)
   
127行目: 128行目:
 
You can i.e. first filter for the extension with '''find''' and then use '''grep''' to filter further for certain buzzwords like the package name, "icon", "logo", etc, if there are quite a lot of images in the source package.
 
You can i.e. first filter for the extension with '''find''' and then use '''grep''' to filter further for certain buzzwords like the package name, "icon", "logo", etc, if there are quite a lot of images in the source package.
 
$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"
 
$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"
  +
アプリケーションの開発者がソースパッケージにアイコンを含めていないときは、アプリケーションのウェブサイトを検索しましょう。''tvbrowser'' など、プロジェクトによってはウェブサイトに [http://enwiki.tvbrowser.org/index.php/Banners,_Logos_and_other_Promotion_Material アートワーク/ロゴのページ] が存在しアイコンをダウンロードすることができます。プロジェクトがマルチプラットフォームの場合、Linux/UNIX パッケージにアイコンが付属していなくても、Windows パッケージには存在する可能性があります。プロジェクトが CVS や SVN などの[[wikipedia:Version control system|バージョン管理システム]]を使用している場合、リポジトリにアイコンが存在しないか確認してください。どうやっても見つからないのであれば、プロジェクトにまだアイコンやロゴがないのかもしれません。
If the developers of an application do not include icons in their source packages, the next step would be to search on their web sites.
 
Some projects, like i.e. ''tvbrowser'' have an [http://enwiki.tvbrowser.org/index.php/Banners,_Logos_and_other_Promotion_Material artwork/logo page] where additional icons may be found. If a project is multi-platform, there may be the case that even if the linux/unix package does not come with an icon, the Windows package might provide one. If the project uses a [[wikipedia:Version control system|Version control system]] like CVS/SVN/etc. and you have some experience with it, you also might consider browsing it for icons.
 
If everything fails, the project might simple have no icon/logo yet.
 
   
 
== ツール ==
 
== ツール ==
   
 
=== gendesk ===
 
=== gendesk ===
  +
{{Pkg|gendesk}} は PKGBUILD ファイルから直接情報を取得して .desktop ファイルを生成する Arch Linux 専用のツールとして開発がスタートしました。今ではコマンドライン引数を使用する汎用のツールとなっています。
{{Pkg|gendesk}} started as an Arch Linux-specific tool for generating .desktop files by fetching the needed information directly from PKGBUILD files. Now it is a general tool that takes command-line arguments.
 
   
Icons can be automatically downloaded from [http://openiconlibrary.sourceforge.net/ openiconlibrary], if available. (The source for icons can easily be changed in the future).
+
アイコンは [http://openiconlibrary.sourceforge.net/ openiconlibrary] から自動的にダウンロードすることが可能です (アイコンのソースは将来変更される可能性があります)
   
 
==== 使用方法 ====
 
==== 使用方法 ====
   
* Add {{Ic|gendesk}} to makedepends
+
* {{Ic|gendesk}} makedepends に追加
   
 
* Start the {{Ic|prepare()}} function with:
 
* Start the {{Ic|prepare()}} function with:
166行目: 165行目:
 
=== lsdsk ===
 
=== lsdsk ===
   
  +
{{AUR|lsdsk}} bash スクリプトは "Categories" や "Exec" の中身を検索します。"Categories" が存在しないときは "Name" の中身を使います。*.desktop のコマンドラインやカテゴリを使って利用可能なプログラムをコンソールで簡単に確認することが可能です。"DskPath" 配列で定義された既存のベースパスをカラーで表示します。
The {{AUR|lsdsk}} bash script searching for content in "Categories" or "Exec", if "Categories" doesn't exist then it uses content of "Name". It's main purpose to get a quick overview in console of the available programs with their command lines and categories in *.desktop. It shows coloured existing base path defined in "DskPath" array.
 
   
  +
例:
Examples
 
 
# lsdsk
 
# lsdsk
 
# lsdsk game
 
# lsdsk game
175行目: 174行目:
 
=== fbrokendesktop ===
 
=== fbrokendesktop ===
   
  +
{{AUR|fbrokendesktop}} bash スクリプトは "which" コマンドを使って既存のパスに存在しない Exec を指定していないか確認します。パラメータを指定しなかった場合、fbrokendesktop は "DskPath" 配列のプリセットフォルダを使います。破損している *.desktop だけを表示します。
The {{AUR|fbrokendesktop}} bash script using command "which" to detect broken Exec that points to not existing path. Without any parameters it uses preset folders in "DskPath" array. It shows only broken *.desktop with full path and filename that is missing.
 
   
  +
例:
Examples
 
   
 
# fbrokendesktop
 
# fbrokendesktop

2016年2月17日 (水) 12:23時点における版

デスクトップエントリは 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>

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

アイコン

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

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

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

アイコンの変換

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

$ 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 の画像もあります。And to give a bit of motivation on this subject, at the point of writing this section (2008-10-27), the 128x128 size was missing in the vlc package (0.9.4-2). So the next step would be to look at the vlc PKGBUILD and check whether this icon format was not in the source package to begin with (in that case we would inform the vlc developers), or whether this icon was somehow omitted from the Arch-specific package (in that case we can file a bug report at the Arch Linux bug tracker). (Update: this bug has now been fixed, so as you can see, your work will not be in vain.)

アイコンの取得

Although packages that already ship with a .desktop-file most certainly contain an icon or a set of icons, there is sometimes the case when a developer has not created a .desktop-file, but may ship icons, nonetheless. So a good start is to look for icons in the source package. You can i.e. first filter for the extension with find and then use grep to filter further for certain buzzwords like the package name, "icon", "logo", etc, if there are quite a lot of images in the source package.

$ 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 に追加
  • Start the prepare() function with:
gendesk --pkgname "$pkgname" --pkgdesc "$pkgdesc"
  • Alternatively, if an icon is already provided ($pkgname.png, for instance). The -n flag is for not downloading an icon or using the default icon. Example:
gendesk -n --pkgname "$pkgname" --pkgdesc "$pkgdesc"
  • $srcdir/$pkgname.desktop will be created and can be installed in the package() function with:
install -Dm644 "$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
  • The icon can be installed with:
install -Dm644 "$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
  • Use --name='Program Name' for choosing a name for the menu entry.
  • Use --exec='/opt/some_app/elf --with-ponies' for setting the exec field.

lsdsk

lsdskAUR bash スクリプトは "Categories" や "Exec" の中身を検索します。"Categories" が存在しないときは "Name" の中身を使います。*.desktop のコマンドラインやカテゴリを使って利用可能なプログラムをコンソールで簡単に確認することが可能です。"DskPath" 配列で定義された既存のベースパスをカラーで表示します。

例:

# lsdsk
# lsdsk game
# lsdsk gtk

fbrokendesktop

fbrokendesktopAUR bash スクリプトは "which" コマンドを使って既存のパスに存在しない Exec を指定していないか確認します。パラメータを指定しなかった場合、fbrokendesktop は "DskPath" 配列のプリセットフォルダを使います。破損している *.desktop だけを表示します。

例:

# fbrokendesktop
# fbrokendesktop /usr
# fbrokendesktop /usr/share/apps/kdm/sessions/icewm.desktop

Tips and tricks

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

ヒント: デスクトップエントリは /dev/null へのシンボリックリンクを作成することで隠匿できます。例えば: $ ln -s /dev/null ~/.local/share/applications/foo.desktop

まず、問題のデスクトップエントリファイルを ~/.local/share/applications にコピーして、変更が上書きされないようにして下さい。

次に、全ての環境でエントリが表示されないようにするには、デスクトップエントリファイルをテキストエディタで開いて次の行を追加します: NoDisplay=true

特定のデスクトップでエントリが表示されないようにするには、デスクトップエントリファイルに次の行を追加します: NotShowIn=desktop-name

desktop-nameGNOME, Xfce, KDE などに置き換えて下さい。複数のデスクトップでデスクトップエントリを隠匿することもできます。デスクトップの名前をセミコロンで区切って複数指定して下さい。

自動起動

GNOME や KDE など XDG 互換のデスクトップ環境を使っている場合、デスクトップ環境は以下のディレクトリにある *.desktop ファイルを自動的に起動します:

  • システム全体: $XDG_CONFIG_DIRS/autostart/ (デフォルトでは /etc/xdg/autostart/)
  • GNOME は /usr/share/gnome/autostart/ にあるファイルも起動します。
  • ユーザー個別: $XDG_CONFIG_HOME/autostart/ (デフォルトでは ~/.config/autostart/)

システム全体の *.desktop ファイルをユーザー個別の ~/.config/autostart/ フォルダにコピーすることで上書きすることができます。

デスクトップファイルの仕様については Desktop Entry Specification を参照してください。ディレクトリの詳しい説明は Desktop Application Autostart Specification を見て下さい。

ノート: この方法は XDG 互換のデスクトップ環境でしか使えません。サポートされていないデスクトップ環境では dapperAUR, dex, fbautostartAUR などのツールを使うことで XDG の自動起動を行うようにすることができます。ただし、それには他の自動起動の手段が必要です。その手段を使って XDG 互換の自動起動ツールを実行して下さい。

参照