Come posso trovare la posizione di un'icona di un launcher in uso?


22

Ho un programma di avvio sul mio desktop e voglio aggiungerne un altro manualmente con la stessa icona.

Quando vado alle preferenze del programma di avvio esistente e faccio clic sull'icona, non mi porta alla cartella in cui è memorizzata l'icona ma solo alla mia cartella principale.

Come posso sapere dove si trova l'icona utilizzata del programma di avvio nel mio sistema?

Risposte:


19

Il più delle volte, l'icona verrà scelta dal tema dell'icona corrente, anziché essere indicata come un percorso assoluto.

  1. Apri Gedit
  2. Trascina il programma di avvio nella finestra di Gedit
  3. Cerca la Icondefinizione:

    Icon=gnome-panel-launcher

È quindi possibile trovare l'icona da qualche parte in /usr/share/icons, a seconda del tema.

Ecco un breve script in Python che trova il percorso icona corretto per te:

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"

Salvalo da qualche parte ed eseguilo python /path/to/script.py.

Sarà simile a questo:

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

In alternativa, puoi semplicemente rovistare /usr/share/iconsfinché non trovi l'icona che stai cercando.


Molto più semplice: puoi semplicemente copiare e incollare il programma di avvio e modificare il nome e il comando


MODIFICA 2018

Versione aggiornata dello script sopra:

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

5
Un altro percorso comune da verificare è /usr/share/pixmaps.
htorque,

@Stefano: Hero! Grazie mille per entrambe le risposte. Funziona alla grande. Almeno il secondo modo avrebbe dovuto venire in mente anch'io.
Timo Schneemann,

Traceback (ultima chiamata più recente): File "LookUget.py", linea 2, in <module> import gi ImportError: nessun modulo chiamato gi
JulianLai

4

Qualche informazione in più.

I lanciatori normali sono davvero file .desktop in / usr / share / applicazioni /.

Ad esempio: /usr/share/applications/usb-creator-gtk.desktop

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

Ogni file desktop ha una linea che specifica l'icona, ad esempio:

Icon=usb-creator-gtk

Quando non esiste un percorso (e l'estensione del file) (come in questo caso), significa che l'icona si trova (da qualche parte) in / usr / share / icons / e quella usata in fase di esecuzione dipende dal tema corrente e in alcuni mostra il contesto di visualizzazione (dimensione).

Conoscendo il nome dell'icona (senza estensione) dal file desktop, è possibile trovarlo come segue:

$ 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

3

Questo si basa sulla risposta di Stefano Palazzo qui .

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

Salvare quanto sopra in un file ed eseguirlo python3 /path/to/file.

Le differenze tra la sceneggiatura originale di Stefano Palazzo sono che:

  • Questo trova tutte le risoluzioni dell'icona (non solo 48)
  • Utilizza gi.repositoryinvece diGtk
  • Utilizza Python 3 anziché 2
  • Leggermente modificato in altri modi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.