在 bash 脚本中使用用户图标

在 bash 脚本中使用用户图标

我正在寻找一种方法来在 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

相关内容