我正在寻找一种方法来在 bash 脚本中使用用户主题(在 gnome 中)中的图标。
解决方案可能是环境变量或文件其中写入了用户图标集的路径。
使用示例:
notify-send --icon=$MYICONPATH/status/32/info.svg "info"
答案1
gconftool-2
假设您使用的是 GNOME 环境,您可以使用(Ubuntu 版本 < 11.04) 或(Ubuntu >= 11.04)获取图标主题的名称gsettings
。根据您的使用情况,这可能已经足够了:
gconf:
ICON_THEME=$(gconftool-2 -g /desktop/gnome/interface/icon_theme)
MYICONPATH=/usr/share/icons/$ICON_THEME
设置:
ICON_THEME=$(gsettings get org.gnome.desktop.interface icon-theme)
MYICONPATH=/usr/share/icons/${ICON_THEME:1:-1}
答案2
我不知道如何直接从 bash 脚本执行此操作,但我刚刚编写了一个小 Python 脚本,您可以将其用作实用程序来帮助您:
#!/usr/bin/env python
# pyicon.py
import gtk, sys
theme = gtk.icon_theme_get_default()
icon = theme.lookup_icon(sys.argv[1], int(sys.argv[2]), ())
if icon: print icon.get_filename()
将其保存在pyicon.py
某处并(可选)保存chmod +x
。
然后你可以调用它,输入图标名称和大小,它会以路径响应。例如:
$ ./pyicon.py evolution 32
/usr/share/icons/Humanity/apps/48/evolution.svg
如果你希望将所有内容都放在一个地方(对于一次性脚本来说当然可以理解),你可以像这样内联 python:
python -c 'import gtk, sys; theme = gtk.icon_theme_get_default(); icon = theme.lookup_icon(sys.argv[1], int(sys.argv[2]), ()); print icon.get_filename() if icon else ""' evolution 32