web-dev-qa-db-ja.com

.desktopファイルのアイコンパス

デスクトップに.desktopファイルがあります。入力した場合:

Icon=/home/ianbell/Pictures/myLogo.png

.desktopファイルのアイコンが変更されます(予想される結果)。

ただし、次のように入力した場合:

Icon=~/Pictures/myLogo.png

機能しません。

~//home/$USERのショートカットではありませんか?

9
user492815

.desktopファイルでのパスの使用

.desktopファイルでは、absoluteおよびfullパスを使用する必要があります。したがって、~は展開されません。

これはよくある間違いです:)

アイコンに関する例外はa.oです。説明 ここ

ファイルマネージャ、メニューなどに表示するアイコン。名前が絶対パスの場合、指定されたファイルが使用されます。名前が絶対パスではない場合、 Icon Theme Specification で説明されているアルゴリズムを使用してアイコンを見つけます。

および ここ

アイコンフィールドは、ランチャーが使用するアイコンであり、アプリケーションを表します。ディレクトリ/usr/share/pixmapsの下にあるすべてのアイコンは、完全なパスを指定する必要はありませんが、拡張子のないファイル名です。たとえば、アイコンファイルが/usr/share/pixmaps/wallch.pngの場合、[アイコン]フィールドは 'wallch'になります。 他のすべてのアイコンには、フルパスを指定する必要があります。

詳しくは

.desktopファイル内:

Icon=行では、にスペースを使用できます

Icon=/home/jacob/Thema/icon/some folder/some icon.png

結構です。

ただし、

Exec=行では、引数の場合を除き、スペースの使用はnot許可されています。それ以外の場合はすべて、パスのステップをスペースで引用する必要があります。

Exec=/home/jacob/Bureaublad/some folder/application

失敗しますが、

Exec="/home/jacob/Bureaublad/some folder/application"

または

Exec=/home/jacob/Bureaublad/"some folder"/application

うまくいきます

9
Jacob Vlijm

つまり、.desktopファイルのIcon=パスは、.desktopファイルの動作方法を定義する specification のため、チルダ展開ではなく絶対パスを理解します。

チルダ展開

  • ~環境変数へのチルダ($HOME)展開は、たとえばbashでよく見られます。これは、コマンドプロンプトで対話する通常のログインシェルです。
  • bash、および他のPOSIX準拠のシェルは、 shells と一貫したチルダから$ HOMEへの展開を行います

.desktopファイル

  • ただし、.desktopファイルはシェルと同じものではなく、プレーンテキストの構成ファイルであるため、.desktopファイルとシェルの両方がLinux
  • .desktopのファイルの動作方法は、Freedesktopの Desktop Entry Specification で定義されています

Iconsに関するデスクトップエントリ仕様は次のように述べています。

名前が絶対パスの場合、指定されたファイルが使用されます。

これが仕様でカバーされているため、絶対パスを使用できた理由です。

名前が絶対パスではない場合、 Icon Theme Specification で説明されているアルゴリズムを使用してアイコンを見つけます。

Icon Theme Specification を確認するとき、POSIXのチルダ展開に従う必要があると言うものは何もありません。

概要

したがって、.desktopIcon=設定に関するFreedesktopの仕様により、絶対パスがサポートされていますが、ご存じのとおり、POSIXチルダから$ HOMEへの展開はサポートされていません。

3
clarity123