如何在图标的启动器中包含环境变量
这是如何在启动器中包含环境变量的问题的扩展? 。 此问题解释了如何将环境变量用于.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文件的路径
-
mv %k %k-bak
创建备份文件 -
sed -e "s,^Icon=.*,Icon=$HOME/.bin/path/to/icon.png,g" ...
用当前的$ HOME …路径替换旧的Icon路径(“^ “ – >起始行,这里真的是importand而不是替换命令self)并创建新的.desktop文件 -
chmod +x %k
使新的.desktop文件可执行 -
rm %k-bak
删除旧的备份文件
您可以在更改图标路径之后或之前添加自己的命令。
灵感来自https://stackoverflow.com/a/3464561和https://askubuntu.com/a/345123/265974