デスクトップに.desktopファイルがあります。入力すると:
Icon=/home/ianbell/Pictures/myLogo.png
.desktopファイルのアイコンが変更されます(予期される結果)。
しかし、私がタイプすると:
Icon=~/Pictures/myLogo.png
動作しません。
の~/
ショートカットではありません/home/$USER
か?
デスクトップに.desktopファイルがあります。入力すると:
Icon=/home/ianbell/Pictures/myLogo.png
.desktopファイルのアイコンが変更されます(予期される結果)。
しかし、私がタイプすると:
Icon=~/Pictures/myLogo.png
動作しません。
の~/
ショートカットではありません/home/$USER
か?
回答:
では.desktop
、ファイル、あなたが使用する必要が絶対と完全なパスを。したがって~
展開されません。
これはよくある間違いです:)
ファイルマネージャ、メニューなどに表示するアイコン。名前が絶対パスの場合、指定したファイルが使用されます。名前が絶対パスでない場合は、アイコンテーマの仕様で説明されているアルゴリズムを使用してアイコンが検索されます。
そしてここ:
アイコンフィールドは、ランチャーが使用するアイコンであり、アプリケーションを表します。ディレクトリの下にあるすべてのアイコンに
/usr/share/pixmaps
絶対パスを指定する必要はありませんが、拡張子なしのファイル名を指定します。たとえば、アイコンファイルがの場合、アイコン/usr/share/pixmaps/wallch.png
フィールドは「wallch」のみになります。他のすべてのアイコンには、フルパスを指定する必要があります。
で.desktop
ファイル:
ではIcon=
ライン、あなたがされているスペースを使用することを許可します:
Icon=/home/jacob/Thema/icon/some folder/some icon.png
結構です。
しかしながら
このExec=
行では、引数の場合を除き、スペースを使用できません。それ以外の場合はすべて、パスステップをスペースで引用する必要があります。
Exec=/home/jacob/Bureaublad/some folder/application
失敗しますが、
Exec="/home/jacob/Bureaublad/some folder/application"
または
Exec=/home/jacob/Bureaublad/"some folder"/application
うまくいきます
つまり、.desktop
ファイルのIcon=
パスは絶対パスを認識しますが、チルダ展開は認識しません。これは、ファイルの動作方法を定義する仕様のためです.desktop
。
~
)が$HOME
環境変数に展開されている場所は、多くの場合、たとえばbashです。これは、コマンドプロンプトで操作する通常のログインシェルです。.desktop
ファイルはシェルと同じではなく、プレーンテキストの設定ファイルであるため.desktop
、Linuxでファイルとシェルの両方が見つかる場合でも、必ずしも同じように機能するとは限りません。.desktop
のファイルの動作方法は、Freedesktopのデスクトップエントリ仕様で定義されています。デスクトップエントリの仕様についてIcons
、
名前が絶対パスの場合、指定されたファイルが使用されます。
これは、絶対パスを使用できた理由です。仕様でカバーされているためです。
名前が絶対パスでない場合は、アイコンテーマの仕様で説明されているアルゴリズムを使用してアイコンが検索されます。
Icon Theme Specificationを確認すると、POSIXのチルダ拡張に完全に従う必要があるとは何も言われていません。
したがって、.desktop
のIcon=
設定に関するFreedesktopの仕様により、絶対パスがサポートされていますが、ご存知のように、POSIXのチルドから$ HOMEへの展開はサポートされていません。