Я ищу способ использовать значки от пользовательской темы (в гноме) в сценарии удара.
Решением могла быть переменная среды или файл, где путь к пользовательскому набору значка записан.
Например, использования:
notify-send --icon=$MYICONPATH/status/32/info.svg "info"
Принятие Вас использует среду GNOME, можно получить название знаковой темы с gconftool-2
(Версии Ubuntu <11.04) или gsettings
(Ubuntu> = 11.04). В зависимости от Вашего варианта использования, который мог бы уже быть достаточно:
gconf:
ICON_THEME=$(gconftool-2 -g /desktop/gnome/interface/icon_theme)
MYICONPATH=/usr/share/icons/$ICON_THEME
gsettings:
ICON_THEME=$(gsettings get org.gnome.desktop.interface icon-theme)
MYICONPATH=/usr/share/icons/${ICON_THEME:1:-1}
Я не знаю, как сделать это непосредственно из сценария удара, но я только что записал немного сценария 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