Я имею средство запуска на своем рабочем столе и хочу добавить другой вручную с тем же значком.
Когда я перехожу к предпочтениям существующего средства запуска и нажимаю значок, оно не берет меня к папке, где значок хранится, но только к моей домашней папке.
Как я могу узнать, где используемый значок средства запуска расположен в моей системе?
Большую часть времени значок будет выбран из Вашей текущей знаковой темы, вместо того, чтобы упоминаться как полный путь.
Ищите Icon
определение:
Icon=gnome-panel-launcher
Можно затем найти значок где-нибудь в /usr/share/icons
, В зависимости от Вашей темы.
Вот быстрый сценарий Python, который находит корректный путь значков для Вас:
import gtk
print "enter the icon name (case sensitive):"
icon_name = raw_input(">>> ")
icon_theme = gtk.icon_theme_get_default()
icon = icon_theme.lookup_icon(icon_name, 48, 0)
if icon:
print icon.get_filename()
else:
print "not found"
Сохраните его где-нибудь и работайте python /path/to/script.py
.
Это будет похоже на это:
stefano@lenovo:~$ python test.py
enter the icon name (case sensitive):
>>> gtk-execute
/usr/share/icons/Humanity/actions/48/gtk-execute.svg
С другой стороны, можно просто рыться вокруг в /usr/share/icons
пока Вы не находите значок, Вы ищете.
Намного легче: можно просто скопировать и вставить средство запуска и изменить имя и команду
Обновленная версия сценария выше:
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
icon_name = input("Icon name (case sensitive): ")
icon_theme = Gtk.IconTheme.get_default()
icon = icon_theme.lookup_icon(icon_name, 48, 0)
if icon:
print(icon.get_filename())
else:
print("not found")
Немного больше информации.
Нормальные средства запуска являются действительно .desktop файлами в/usr/share/applications/.
Например:/usr/share/applications/usb-creator-gtk.desktop
(См. http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html),
Каждый файл на рабочем столе имеет строку, которая указывает значок, например:
Icon=usb-creator-gtk
Когда нет никакого пути (и расширение файла) (как в этом случае), это означает, что значок найден (где-нибудь) в/usr/share/icons/, и тот, используемый во времени выполнения, зависит от текущей темы и в некоторых случаях контекста дисплея (размер).
Зная имя значка (без расширения) от файла на рабочем столе, можно найти его следующим образом:
$ find . -name "usb-creator-gtk*"
./hicolor/scalable/apps/usb-creator-gtk.svg
./Humanity/apps/32/usb-creator-gtk.svg
./Humanity/apps/16/usb-creator-gtk.svg
./Humanity/apps/22/usb-creator-gtk.svg
./Humanity/apps/24/usb-creator-gtk.svg
./Humanity/apps/64/usb-creator-gtk.svg
./Humanity/apps/48/usb-creator-gtk.svg
Это базируется из ответа Stefano Palazzo здесь.
#!/usr/bin/env python3
from gi.repository import Gtk
icon_name = input("Icon name (case sensitive): ")
if icon_name:
theme = Gtk.IconTheme.get_default()
found_icons = set()
for res in range(0, 512, 2):
icon = theme.lookup_icon(icon_name, res, 0)
if icon:
found_icons.add(icon.get_filename())
if found_icons:
print("\n".join(found_icons))
else:
print(icon_name, "was not found")
Сохраните вышеупомянутое в файл и выполните его с python3 /path/to/file
.
Различия между исходным сценарием Stefano Palazzo то, что:
gi.repository
вместо Gtk