如何在图标的启动器中包含环境变量

这是如何在启动器中包含环境变量的问题的扩展? 。 此问题解释了如何将环境变量用于.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' 

对于图标……该怎么做?

老实说,在启动器中使用图标的最佳方法是确保图标文件位于图标搜索路径中。 参考freedesktop.org图标目录方案和基本目录定义 ,应至少在Ubuntu系统上的以下目录中搜索图标:

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

因此,如果您想使用自己的图标并且没有root权限,请将图标安装到$HOME/.icons$HOME/.local/share/icons 。 使用后者,您甚至可以在$HOME/.local/share/icons/hicolor/48x48/apps$HOME/.local/share/icons/hicolor/256x256/apps等目录下使用相同的基本名称模拟系统图标目录结构和多分辨率图标。 $HOME/.local/share/icons/hicolor/256x256/apps

如果图标位于其中一个可搜索的目录中,则只需在.desktop文件中使用Icon=myapp即可。

你可以尝试这样的事情:

 [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文件的相对Icon路径。

更多细节:

%k代表.desktop文件的路径

  1. mv %k %k-bak创建备份文件

  2. sed -e "s,^Icon=.*,Icon=$HOME/.bin/path/to/icon.png,g" ...用当前的$ HOME …路径替换旧的Icon路径(“^ “ – >起始行,这里真的是importand而不是替换命令self)并创建新的.desktop文件

  3. chmod +x %k使新的.desktop文件可执行

  4. rm %k-bak删除旧的备份文件

您可以在更改图标路径之​​后或之前添加自己的命令。

灵感来自https://stackoverflow.com/a/3464561和https://askubuntu.com/a/345123/265974