Ver la lista de todos los iconos únicos disponibles con sus nombres y miniaturas

15

Quiero ver qué iconos están instalados y disponibles en mi sistema y por qué nombres tengo que referirme a ellos.

¿Cómo puedo obtener una lista bien formateada de todos los íconos únicos (no muestre varias resoluciones por separado) que contenga el nombre del ícono, una miniatura de vista previa, la ubicación y tal vez, si es posible, de dónde vino (por ejemplo, qué paquete de tema de íconos)?

Sistema: Ubuntu 15.10 Wily Werewolf 64 bit
Escritorio: Unidad

Byte Commander
fuente
Con respecto a la parte "averiguar desde qué paquete": "dpkg-query -S / bin / bash" genera el nombre del paquete del ejecutable bash en el directorio / bin (como un ejemplo de cómo funciona). Con solo "/ bin" como argumento, generaría todos los paquetes instalados para todos los archivos en el directorio / 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 -tcubre la mayor parte (excepto la parte en miniatura), diría. No estoy seguro de cómo espera ver la miniatura en una lista.
muru
@muru En una ventana GUI? No dije que debería ser una solución de línea de comando ...
Byte Commander
@ByteCommander No lo hiciste, pero tampoco dijiste qué tipo de GUI. ¿Espera que programemos una GUI para usted?
muru
@muru No, pero pensé que alguien podría conocer una herramienta ya existente para esto. Sé que usé algo así una vez, probablemente fue incorporado en alguna función XFCE, tal vez para seleccionar un ícono para lanzadores allí ...
Byte Commander

Respuestas:

14

gtk3-icon-browser es una aplicación gráfica para enumerar iconos temáticos.

Hasta la fecha, todavía está en desarrollo y disponible en gtk-3-examplespaquetes para Vivid y versiones más recientes. Su desarrollo se remonta a esta publicación de blog con fecha de 2014 .

Icono de navegación Xfce elemental oscuro

gtk3-icon-browser Normal en Xubuntu 15.04

gtk3-icon-browser Symbolic en Xubuntu 15.04

Revisión rápida

  • Lista bien formateada de todos los íconos únicos: Sí 1
  • Contiene el nombre del ícono: Sí
  • Vista previa en miniatura: Sí
  • Ubicación de los iconos: no 2
  • Origen del tema del icono: Sí 3

1 Esta herramienta se mostrará como vista de icono de forma predeterminada (no hay forma de cambiar a la vista de lista). Haga doble clic en cada icono para mostrar todas las resoluciones disponibles para ese icono.

gtk3-icon-browser Icono simbólico de doble clic

2 Esta herramienta probablemente busca en el /usr/share/iconsdirectorio (sin mencionar ubicaciones para cada ícono) y extrae información adicional de acuerdo con la especificación de nomenclatura de íconos .

3 Esta herramienta solo muestra los iconos del tema actual . Para mostrar iconos para otro tema, cambie la apariencia del tema actual a otro tema.

Navegación de íconos oscuros de la humanidad (con diálogo emergente)

gtk3-icon-browser Humanity-dark icons

Requisitos

  • GTK + 3.13.4 o más reciente
  • Instalar gtk-3-examplesen 15.04 (Vivid) o versiones más recientes

Cómo instalar

sudo apt-get install gtk-3-examples

Como correr

gtk3-icon-browser

Probado trabajando en Xubuntu 15.04, usando GTK + 3.14.13 (última versión a esta fecha de respuesta).

Fuentes relacionadas

  1. Código fuente de gtk / demos en master para GNOME / gtk en GitHub.

  2. Nueva herramienta de navegador de iconos para desarrolladores GTK + en desarrollo en la revista Fedora

  3. Mencionado brevemente con captura de pantalla en esta respuesta en Ask Ubuntu.

clearkimura
fuente
Esta solución es casi perfecta. Sin embargo, lo sería si mostrara íconos de otros temas que no son proporcionados por el tema actual.
Byte Commander
@ByteCommander alguien debería decirle a AB que recupere su respuesta, lo que sugiere exactamente este programa.
muru
3

Bueno, algunos DE muestran esto cuando intentas cambiar el ícono de algo, pero es bastante fácil hacerlo tú mismo. Simplemente encuentre todos los iconos, haga enlaces a ellos en algún directorio y explore el directorio. Los iconos de diferentes resoluciones tendrán el mismo nombre, lo que cambia es la ruta. Por ejemplo:

$ 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

Como puede ver arriba, el formato general es /ParentDir/ThemeName/CLass/Resolution/IconName. Por lo tanto, dado que el nombre del icono es el mismo, podemos evitar duplicados fácilmente haciendo que cada enlace creado sobrescriba los enlaces existentes del mismo nombre. Sin embargo, sí queremos separar los íconos de los diferentes temas, por lo que eso requiere un poco más de secuencias de comandos:

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

El script anterior creará el directorio ~/fooque contendrá enlaces a cada uno de sus archivos de iconos únicos. La -fopción lnle dice que sobrescriba los archivos existentes con el mismo nombre y, dado que estamos usando el nombre del tema en el nombre del enlace, no debería haber duplicados. Por ejemplo, dados los emacs.pngiconos que se muestran arriba, creará:

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

Ahora puedes navegar ~/fooy echar un vistazo:

ingrese la descripción de la imagen aquí

Luego, para obtener los paquetes fuente, puede ejecutar:

for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
terdon
fuente
Sin embargo, esto vinculará las imágenes de todas las diferentes resoluciones disponibles, ¿verdad? ¿Puedo filtrar duplicados en diferentes tamaños y solo mostrar el más grande?
Byte Commander
@ByteCommander no, no lo hará. Las -fopciones hacen que se lnsobrescriban los enlaces existentes, por lo que solo se mostrará un icono con el mismo nombre. Sin embargo, me acabo de dar cuenta de que, si bien los engaños no serán un problema, se perderán muchos, ya que todos los gedit.pngiconos serán sobrescritos por el último encontrado. Eso es lo que quería tratar con las resoluciones, pero no trata con diferentes temas: solo se mostrará el icono de un tema. Estoy tratando de arreglar eso ahora.
terdon
@ByteCommander OK, vea la respuesta actualizada. Esto todavía no tiene problemas con los duplicados, pero ahora mostrará correctamente los íconos de diferentes temas.
terdon