web-dev-qa-db-ja.com

.desktopファイル:アイコンパスの指定方法

12.04 Ubuntuシステムの.desktopファイルを見て、それらの多くはアイコンファイルの完全なパス指定がありません。それはむしろ次のようなものです:

Icon=anjuta

または

Icon=vlc

または

Icon=application-x-clementine

これが機能するようにアイコンを保存できる一般的なパスはありますか?そうでない場合、これはどのように機能しますか?自分のアイコンで同じことをしようとする場合、フルパスを指定する必要があります。

例えば.

Icon=/usr/local/share/my-icon.png

うまくいきますが、

Icon=my-icon.png

失敗します。

どんな種類の助けも歓迎です!

18
user3430409

ええ、検索はかなり複雑です。ディレクトリレイアウトの freedesktopアイコンの仕様 は次のとおりです。

アイコンとテーマは、一連のディレクトリで検索されます。 デフォルトでは、アプリは$ HOME/.icons(後方互換性のため)、$ XDG_DATA_DIRS/iconsおよび/ usr/share/pixmaps(この順序で)を探す必要があります。アプリケーションはさらにこのリストに独自のアイコンディレクトリを追加でき、ユーザーはリストを拡張または変更できます(アプリケーション/デスクトップ固有の方法で)。これらの各ディレクトリにテーマはサブディレクトリとして保存されます。テーマは、同じ名前のサブディレクトリを持つことにより、複数のベースディレクトリに分散できます。これにより、ユーザーはシステムテーマを拡張および上書きできます。

サードパーティのアプリケーションがアイコンをインストールする場所を確保するには、常に「hicolor」 1 というテーマが存在する必要があります。 hicolorテーマのデータは、 http://www.freedesktop.org/software/icon-theme/ からダウンロードできます。現在のテーマにアイコンが見つからなかった場合、「hicolor」テーマを調べるには実装が必要です。

各テーマは、ベースディレクトリのサブディレクトリとして保存されます。テーマの内部名はサブディレクトリの名前ですが、テーマで指定されているユーザーに表示される名前は異なる場合があります。したがって、テーマ名では大文字と小文字が区別され、ASCII文字に制限されます。テーマ名にはコンマやスペースを含めることもできません。

テーマディレクトリの少なくとも1つに、テーマを説明するindex.themeというファイルが必要です。ベースディレクトリを順番に検索しているときに見つかった最初のindex.themeが使用されます。このファイルには、テーマの一般的な属性が記述されています。

テーマディレクトリには、画像ファイルを含む一連のサブディレクトリもあります。各ディレクトリには、index.themeファイルで説明されているように、特定の公称アイコンサイズ用に設計されたアイコンが含まれています。サブディレクトリは、いくつかのレベルの深さまで許可されます。テーマ「hicolor」のサブディレクトリ「48x48/apps」は、$ basedir/hicolor/48x48/appsになります。

画像ファイルは、PNG、XPM、またはSVGのいずれかのタイプである必要があり、拡張子は「.png」、「。xpm」、または「.svg」(小文字)でなければなりません。 SVGファイルのサポートはオプションです。 SVGをサポートしない実装は、「。svg」ファイルを無視する必要があります。これに加えて、ファイルごとに追加のアイコンデータを含む追加のファイルが存在する場合があります。画像ファイルと同じベース名で、拡張子が「.icon」である必要があります。例えばアイコンファイルの名前が「mime_source_c.png」の場合、対応するファイルの名前は「mime_source_c.icon」になります。

完全な仕様はこれよりはるかに使い古されていますが、最も重要な点は、アイコンを挿入するだけのディレクトリが設定されていて、デスクトップがそれらを見つけることです。どれがあなたに最も当てはまるかは、あなたの問題と忍耐次第です:)

15
Oli

私はアイコンではなくエンブレムだけの経験がありますが、それはうまくいくはずです:

mkdir -p $HOME/.icons/hicolor/48x48/

そのディレクトリにアイコンを配置し、それがmyicon.pngであると仮定しましょう

cp  myicons.png $HOME/.icons/hicolor/48x48/

説明ファイルを追加します。

gedit $HOME/.icons/hicolor/48x48/myicon.icon

コンテンツ付き:

[Icon Data]

DisplayName=myicon

これでIcon=myicon行が機能するはずです。エンブレムを「エンブレム」サブディレクトリに配置すると機能します。

personalized emblem

@Oliに感謝しますなぜ動作します:-)

5
Rmano

アイコンを/usr/share/icons/(システム全体)または自宅~/.iconsに配置すると、.desktopファイルで拡張子なしのアイコンファイル名のみを使用できます。例えば。

Icon=vlc

そうでない場合は、.desktopファイル内のアイコンの絶対パスを使用する必要があります。例えば。

Icon=/usr/local/share/my-icon.png
4
Radu Rădeanu