Jak mogę znaleźć lokalizację ikony używanego programu uruchamiającego?

22

Mam program uruchamiający na pulpicie i chcę ręcznie dodać kolejny z tą samą ikoną.

Kiedy przechodzę do preferencji istniejącego programu uruchamiającego i klikam ikonę, nie zabiera mnie to do folderu, w którym ikona jest przechowywana, ale tylko do mojego folderu domowego.

Jak mogę dowiedzieć się, gdzie znajduje się używana ikona programu uruchamiającego w moim systemie?

Timo Schneemann
źródło

Odpowiedzi:

19

Przez większość czasu ikona będzie wybierana z bieżącego motywu ikony, a nie będzie określana jako ścieżka bezwzględna.

  1. Otwórz Gedit
  2. Przeciągnij program uruchamiający do okna Gedit
  3. Poszukaj Icondefinicji:

    Icon=gnome-panel-launcher

Następnie możesz znaleźć ikonę gdzieś w /usr/share/iconszależności od motywu.

Oto szybki skrypt w języku Python, który znajduje dla ciebie właściwą ścieżkę ikony:

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"

Zapisz gdzieś i biegnij python /path/to/script.py.

Będzie to wyglądać tak:

stefano@lenovo:~$ python test.py 
enter the icon name (case sensitive):
>>> gtk-execute
/usr/share/icons/Humanity/actions/48/gtk-execute.svg

Alternatywnie możesz po prostu przeszukiwać, /usr/share/iconsaż znajdziesz ikonę, której szukasz.


O wiele łatwiej: możesz po prostu skopiować i wkleić program uruchamiający oraz zmienić nazwę i polecenie


EDYCJA 2018

Zaktualizowana wersja powyższego skryptu:

#!/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")
Stefano Palazzo
źródło
5
Inną wspólną ścieżką do sprawdzenia jest /usr/share/pixmaps.
htorque
@Stefano: Hero! Dziękuję bardzo za obie odpowiedzi. Działa świetnie. Przynajmniej przychodzi mi na myśl druga droga.
Timo Schneemann,
Traceback (ostatnie ostatnie połączenie): Plik „LookUget.py”, wiersz 2, w <module> import gi ImportError: Brak modułu o nazwie gi
JulianLai
4

Trochę więcej informacji.

Normalne programy uruchamiające to tak naprawdę pliki .desktop w / usr / share / applications /.

Na przykład: /usr/share/applications/usb-creator-gtk.desktop

(Zobacz https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html )

Każdy plik pulpitu ma wiersz określający ikonę, na przykład:

Icon=usb-creator-gtk

Jeśli nie ma ścieżki (i rozszerzenia pliku) (jak w tym przypadku), oznacza to, że ikona znajduje się (gdzieś) w / usr / share / icons /, a ta używana w czasie wykonywania zależy od bieżącego motywu i niektórych pokazuje kontekst wyświetlania (rozmiar).

Znając nazwę ikony (bez rozszerzenia) z pliku pulpitu, można ją znaleźć w następujący sposób:

$ 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
kyleN
źródło
3

Opiera się to ze Stefano Palazzo odpowiedź jest tutaj .

#!/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")

Zapisz powyższe w pliku i uruchom go python3 /path/to/file.

Różnice między oryginalnym scenariuszem Stefano Palazzo są następujące:

  • Znajduje to wszystkie rozdzielczości ikony (nie tylko 48)
  • Używa gi.repositoryzamiastGtk
  • Używa Python 3 zamiast 2
  • Nieznacznie poprawiony na inne sposoby
kiri
źródło