デスクトップに.desktopファイルがあります。入力した場合:
Icon=/home/ianbell/Pictures/myLogo.png
.desktopファイルのアイコンが変更されます(予想される結果)。
ただし、次のように入力した場合:
Icon=~/Pictures/myLogo.png
機能しません。
~/
は/home/$USER
のショートカットではありませんか?
.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
うまくいきます
つまり、.desktop
ファイルのIcon=
パスは、.desktop
ファイルの動作方法を定義する specification のため、チルダ展開ではなく絶対パスを理解します。
~
環境変数へのチルダ($HOME
)展開は、たとえばbashでよく見られます。これは、コマンドプロンプトで対話する通常のログインシェルです。.desktop
ファイルはシェルと同じものではなく、プレーンテキストの構成ファイルであるため、.desktop
ファイルとシェルの両方がLinux.desktop
のファイルの動作方法は、Freedesktopの Desktop Entry Specification で定義されていますIcons
に関するデスクトップエントリ仕様は次のように述べています。
名前が絶対パスの場合、指定されたファイルが使用されます。
これが仕様でカバーされているため、絶対パスを使用できた理由です。
名前が絶対パスではない場合、 Icon Theme Specification で説明されているアルゴリズムを使用してアイコンを見つけます。
Icon Theme Specification を確認するとき、POSIXのチルダ展開に従う必要があると言うものは何もありません。
したがって、.desktop
のIcon=
設定に関するFreedesktopの仕様により、絶対パスがサポートされていますが、ご存じのとおり、POSIXチルダから$ HOMEへの展開はサポートされていません。