web-dev-qa-db-ja.com

アイコンのランチャーに環境変数を含める方法

これは質問 ランチャーに環境変数を含める方法 の拡張です。この質問では、アイコンではなく.desktopファイルのExec部分に環境変数を使用する方法について説明します

例:

[Desktop Entry]
Name=My Application name
Comment=a comment
Exec=sh -c '$HOME/.bin/path/to/bin'
Icon= $HOME/.bin/path/to/icon

このランチャーは機能しますが、アイコンは表示されません。次のようなものは使えません

Icon=sh -c '$HOME/.bin/path/to/icon'

アイコンのために...代わりに何をすべきか?

3
Jonas

正直なところ、ランチャーでアイコンを使用する最良の方法は、アイコンファイルがアイコン検索パスにあることを確認することです。 freedesktop.orgアイコンディレクトリスキーム および ベースディレクトリ定義 を参照すると、Ubuntuシステムの少なくとも次のディレクトリでアイコンを検索する必要があります。

  • $HOME/.icons
  • $HOME/.local/share/icons
  • /usr/local/share/icons
  • /usr/share/icons
  • /usr/share/pixmaps

そのため、独自のアイコンを使用する場合で、ルート権限を持っていない場合は、$HOME/.iconsまたは$HOME/.local/share/iconsのいずれかにアイコンをインストールします。後者を使用すると、$HOME/.local/share/icons/hicolor/48x48/apps$HOME/.local/share/icons/hicolor/256x256/appsなどのディレクトリの下で同じベース名を使用して、多重解像度アイコンでシステムアイコンのディレクトリ構造を模倣することもできます。

アイコンがこれらの検索可能なディレクトリのいずれかにある場合は、Icon=myappファイルで.desktopを使用できます。

4
Mike Miller

次のようなものを試すことができます:

[Desktop Entry]
Type=Application
Name=MyApp
Exec=sh -c "mv %k %k-bak && sed -e "s,^Icon=.*,Icon=$HOME/.bin/path/to/icon.png,g" %k-bak > %k && chmod +x %k; rm %k-bak"
Icon=???

これにより、.desktopファイルの実行後に相対アイコンパスが追加されます。

いくつかの詳細:

%kは、.desktopファイルのパスを表します

  1. mv %k %k-bakはバックアップファイルを作成します

  2. sed -e "s,^Icon=.*,Icon=$HOME/.bin/path/to/icon.png,g" ...は、古いアイコンパスを現在の$ HOME ...パス(「^」->開始行、実際にはimportで、コマンドselfを置き換えないため)で置き換え、新しい.desktopファイルを作成します

  3. chmod +x %k新しい.desktopファイルを実行可能にする

  4. rm %k-bak古いバックアップファイルを削除します

アイコンのパスが変更された後または前に、独自のコマンドを追加できます。

https://stackoverflow.com/a/3464561 および https://askubuntu.com/a/345123/265974 に触発された

0
TuKsn