Como posso encontrar a localização de um ícone de um iniciador em uso?

22

Eu tenho um iniciador na minha área de trabalho e quero adicionar outro manualmente com o mesmo ícone.

Quando vou às preferências do iniciador existente e clico no ícone, ele não me leva à pasta em que o ícone está armazenado, mas apenas à minha pasta pessoal.

Como posso descobrir onde o ícone usado do iniciador está localizado no meu sistema?

Timo Schneemann
fonte

Respostas:

19

Na maioria das vezes, o ícone será escolhido no seu tema atual, em vez de ser chamado de caminho absoluto.

  1. Abra o Gedit
  2. Arraste o iniciador para a janela do Gedit
  3. Procure a Icondefinição:

    Icon=gnome-panel-launcher

Você pode encontrar o ícone em algum lugar/usr/share/icons , dependendo do seu tema.

Aqui está um script python rápido que encontra o caminho correto do ícone para você:

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"

Salve em algum lugar e corra python /path/to/script.py.

Ficará assim:

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

Como alternativa, você pode apenas vasculhar /usr/share/iconsaté encontrar o ícone que está procurando.


Muito mais fácil: você pode simplesmente copiar e colar o iniciador e alterar o nome e o comando


EDIT 2018

Versão atualizada do script acima:

#!/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
fonte
5
Outro caminho comum para verificar é /usr/share/pixmaps.
Htc #
@Stefano: Hero! Muito obrigado pelas duas respostas. Funciona brilhante. Pelo menos o segundo caminho também deveria ter me ocorrido.
Timo Schneemann
Traceback (última chamada mais recente): arquivo "LookUget.py", linha 2, em <module> import gi ImportError: nenhum módulo chamado gi
JulianLai 19/01
4

Um pouco mais de informação.

Os lançadores normais são realmente arquivos .desktop em / usr / share / applications /.

Por exemplo: /usr/share/applications/usb-creator-gtk.desktop

(Consulte http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html )

Cada arquivo da área de trabalho possui uma linha que especifica o ícone, por exemplo:

Icon=usb-creator-gtk

Quando não há caminho (e extensão de arquivo) (como neste caso), significa que o ícone é encontrado (em algum lugar) em / usr / share / icons / e aquele usado no tempo de execução depende do tema atual e, em alguns casos, casos o contexto de exibição (tamanho).

Conhecendo o nome do ícone (sem extensão) do arquivo da área de trabalho, é possível encontrá-lo da seguinte maneira:

$ 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
fonte
3

Isto é baseado na resposta de Stefano Palazzo aqui .

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

Salve o acima em um arquivo e execute-o com python3 /path/to/file.

As diferenças entre o roteiro original de Stefano Palazzo são as seguintes:

  • Encontra todas as resoluções do ícone (não apenas 48)
  • Usa em gi.repositoryvez deGtk
  • Usa Python 3 em vez de 2
  • Ligeiramente modificado de outras maneiras
kiri
fonte