Afficher la liste de toutes les icônes uniques disponibles avec leurs noms et vignettes

15

Je veux voir quelles icônes sont installées et disponibles sur mon système et par quels noms je dois y faire référence.

Comment puis-je obtenir une liste bien formatée de toutes les icônes uniques (ne pas afficher plusieurs résolutions séparément) qui contient le nom de l'icône, une miniature d'aperçu, l'emplacement et peut-être si possible d'où il vient (par exemple, quel package de thème d'icône)?

Système: Ubuntu 15.10 Wily Werewolf 64 bits
Desktop: Unity

Byte Commander
la source
En ce qui concerne la partie "trouver à partir de quel package": "dpkg-query -S / bin / bash" affiche le nom du package de l'exécutable bash dans le répertoire / bin (comme exemple comment cela fonctionne). Avec seulement "/ bin" comme argument, il afficherait tous les packages installés pour tous les fichiers du répertoire / bin.
neoc
2
find /usr/share/icons/ -iname '*.png' -or -iname '*.svg' -printf '%h %f %p\n' | sed -r 's;^/usr/share/icons/([^/]*)/[^ ]* ;\1 ;' | sort -u -k1,2 | column -tcouvre la plupart (sauf la partie vignettes), je dirais. Je ne sais pas comment vous vous attendez à voir la vignette dans une liste.
muru
@muru Dans une fenêtre GUI? Je n'ai pas dit que cela devrait être une solution en ligne de commande ...
Byte Commander
@ByteCommander Vous ne l'avez pas fait, mais vous n'avez pas dit non plus quel type d'interface graphique. Vous attendez-vous à ce que nous programmions une interface graphique pour vous?
muru
@muru Non, mais je pensais que quelqu'un pourrait peut-être connaître un outil déjà existant pour cela? Je sais que j'ai utilisé quelque chose comme ça une fois, il a probablement été intégré à une fonction XFCE, peut-être pour sélectionner une icône pour les lanceurs là-bas ...
Byte Commander

Réponses:

14

gtk3-icon-browser est une application graphique pour répertorier les icônes thématiques.

À ce jour, il est toujours en cours de développement et disponible en gtk-3-examplespackage pour les versions Vivid et plus récentes. Son évolution remonte à ce billet de blog daté de 2014 .

Parcourir l'icône sombre Xfce élémentaire

gtk3-icon-browser Normal sur Xubuntu 15.04

gtk3-icon-browser Symbolique sur Xubuntu 15.04

Examen rapide

  • Liste joliment formatée de toutes les icônes uniques: Oui 1
  • Contient le nom de l'icône: Oui
  • Vignette de l'aperçu: Oui
  • Emplacement des icônes: No 2
  • Origine du thème de l'icône: Oui 3

1 Cet outil s'affichera sous forme d'icône par défaut (aucun moyen de passer en vue de liste). Double-cliquez sur chaque icône pour afficher toutes les résolutions disponibles pour cette icône.

gtk3-icon-browser Icône de double-clic symbolique

2 Cet outil examine très probablement le /usr/share/iconsrépertoire (sans mentionner les emplacements de chaque icône) et extrait des informations supplémentaires en fonction de la spécification de nommage des icônes .

3 Cet outil affiche uniquement les icônes du thème actuel . Pour afficher les icônes d'un autre thème, changez l'apparence du thème actuel en un autre thème.

Parcourir les icônes sombres de l'humanité (avec boîte de dialogue contextuelle)

gtk3-icon-browser Icônes sombres de l'humanité

Exigences

  • GTK + 3.13.4 ou plus récent
  • Installer gtk-3-examplesdans 15.04 (Vivid) ou versions plus récentes

Comment installer

sudo apt-get install gtk-3-examples

Comment courir

gtk3-icon-browser

Testé sur Xubuntu 15.04, en utilisant GTK + 3.14.13 (dernière version à cette date de réponse).

Sources connexes

  1. Code source de gtk / demos sur master pour GNOME / gtk sur GitHub.

  2. Nouvel outil de navigation d'icônes pour les développeurs GTK + en développement sur Fedora Magazine

  3. Mentionné brièvement avec capture d'écran dans cette réponse sur Ask Ubuntu.

clearkimura
la source
Cette solution est presque parfaite. Ce serait le cas s'il montrait des icônes d'autres thèmes qui ne sont pas également fournis par le thème actuel.
Byte Commander
@ByteCommander, quelqu'un devrait dire à AB d'annuler la suppression de sa réponse, ce qui suggère exactement ce programme.
muru
3

Eh bien, certains DE le montrent lorsque vous essayez de changer l'icône de quelque chose, mais il est assez facile de le faire vous-même. Il vous suffit de trouver toutes les icônes, de créer des liens vers celles-ci dans un répertoire et de parcourir le répertoire. Les icônes de différentes résolutions auront le même nom, ce qui change c'est le chemin. Par exemple:

$ find /usr/share/icons/ -name '*emacs.*' 
/usr/share/icons/hicolor/16x16/apps/emacs.png
/usr/share/icons/hicolor/48x48/apps/emacs.png
/usr/share/icons/hicolor/scalable/apps/emacs.svg
/usr/share/icons/hicolor/128x128/apps/emacs.png
/usr/share/icons/hicolor/32x32/apps/emacs.png
/usr/share/icons/hicolor/24x24/apps/emacs.png
/usr/share/icons/Mint-X/apps/96/emacs.svg
/usr/share/icons/Mint-X/apps/16/emacs.png
/usr/share/icons/Mint-X/apps/24/emacs.png
/usr/share/icons/Mint-X/apps/48/emacs.png
/usr/share/icons/Mint-X/apps/32/emacs.png
/usr/share/icons/Mint-X/apps/22/emacs.png

Comme vous pouvez le voir ci-dessus, le format général est /ParentDir/ThemeName/CLass/Resolution/IconName. Ainsi, comme le nom de l'icône est le même, nous pouvons éviter les doublons facilement en faisant en sorte que chaque lien créé écrase les liens existants du même nom. Cependant, nous voulons séparer les icônes des différents thèmes, ce qui nécessite un peu plus de scripts:

#!/usr/bin/env bash

## Create the target directory
mkdir -p ~/foo
## Iterate over all files/dirs in the target locations
for i in ~/.icons/* /usr/share/icons/* /usr/share/pixmaps/*; do 
    ## find all icon files in this directory. If the current $i
    ## is not a directory, find will just print its path directly.
    find "$i" -name '*xpm' -o -name '*.svg' -o -name '*png' | 
        ## Iterate over find's results
        while read ico; do 
            ## Make the link. ${var##*/} will print the
            ## basename of $var, without the path. Here, I use
            ## it both to get the theme name (${i##*/}) and the
            ## icon's name (${ico##*/}).         
            ln -sf "$ico" "${i##*/}"_"${ico##*/}"
        done
done

Le script ci-dessus créera le répertoire ~/fooqui contiendra des liens vers chacun de vos fichiers d'icônes uniques. L' -foption lui lnindique d'écraser les fichiers existants avec le même nom et, puisque nous utilisons le nom du thème dans le nom du lien, il ne devrait pas y avoir de doublons. Par exemple, compte tenu des emacs.pngicônes ci-dessus, cela créera:

hicolor_emacs.png -> /usr/share/icons/hicolor/48x48/apps/emacs.png
Mint-X_emacs.png -> /usr/share/icons/Mint-X/apps/22/emacs.png

Vous pouvez maintenant, parcourir ~/fooet consulter:

entrez la description de l'image ici

Ensuite, pour obtenir les packages source, vous pouvez exécuter:

for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
terdon
la source
Cela liera cependant des images de toutes les différentes résolutions disponibles, non? Puis-je filtrer les doublons de différentes tailles et n'afficher que le plus grand?
Byte Commander
@ByteCommander non, ce ne sera pas le cas. Les -foptions lnécrasent les liens existants, donc une seule icône du même nom sera affichée. Cependant, je viens de réaliser que même si les dupes ne seront pas un problème, vous en manquerez beaucoup car toutes les gedit.pngicônes seront remplacées par la dernière trouvée. C'est ce que je voulais traiter des résolutions, mais cela ne traite pas de différents thèmes: une seule icône de thème sera affichée. J'essaie de résoudre ce problème maintenant.
terdon
@ByteCommander OK, voir la réponse mise à jour. Cela n'a toujours aucun problème avec les doublons, mais affichera désormais correctement les icônes de différents thèmes.
terdon