web-dev-qa-db-fra.com

Comment puis-je trouver l'emplacement d'une icône d'un lanceur en cours d'utilisation?

J'ai un lanceur sur mon bureau et je veux en ajouter un autre manuellement avec la même icône.

Lorsque je vais dans les préférences du lanceur existant et que je clique sur l'icône, cela ne me mène pas au dossier dans lequel l'icône est stockée, mais simplement à mon dossier personnel.

Comment savoir où se trouve l'icône du lanceur utilisée dans mon système?

22
Timo Schneemann

La plupart du temps, l'icône sera choisie dans votre thème d'icônes actuel, plutôt que d'être considérée comme un chemin absolu.

  1. Ouvrez Gedit
  2. Faites glisser le lanceur dans la fenêtre de Gedit
  3. Recherchez la définition Icon:

    Icon=gnome-panel-launcher

Vous pouvez ensuite trouver l'icône quelque part dans /usr/share/icons, en fonction de votre thème.

Voici un rapide script python qui trouve le chemin d’icône approprié:

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"

Enregistrez-le quelque part et exécutez python /path/to/script.py.

Ça va ressembler à ça:

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

Alternativement, vous pouvez simplement fouiller dans /usr/share/icons jusqu'à ce que vous trouviez l'icône que vous recherchez.


Beaucoup plus facile: vous pouvez simplement copier et coller le lanceur et changer le nom et la commande


EDIT 2018

Version mise à jour du script ci-dessus:

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

Un peu plus d'infos.

Les lanceurs normaux sont vraiment des fichiers .desktop dans/usr/share/applications /.

Par exemple: /usr/share/applications/usb-creator-gtk.desktop

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

Chaque fichier de bureau comporte une ligne spécifiant l'icône, par exemple:

Icon=usb-creator-gtk

Lorsqu'il n'y a pas de chemin (ni d'extension de fichier) (comme dans ce cas), cela signifie que l'icône est trouvée (quelque part) dans/usr/share/icons/et que celle utilisée au moment de l'exécution dépend du thème actuel et, dans certains cas, Cas le contexte d'affichage (taille).

Connaissant le nom de l'icône (sans extension) à partir du fichier du bureau, on peut le trouver comme suit:

$ 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
4
kyleN

Ceci est basé sur la réponse de Stefano Palazzoici .

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

Enregistrez ce qui précède dans un fichier et exécutez-le avec python3 /path/to/file.

Les différences entre le script original de Stefano Palazzo sont les suivantes:

  • Cette recherche toutes les résolutions de l'icône (pas seulement 48)
  • Utilise gi.repository au lieu de Gtk
  • Utilise Python 3 au lieu de 2
  • Légèrement modifié d'autres façons
3
kiri