Veja a lista de todos os ícones exclusivos disponíveis, com seus nomes e miniaturas

15

Quero ver quais ícones estão instalados e disponíveis no meu sistema e por quais nomes eu tenho que me referir a eles.

Como posso obter uma lista bem formatada de todos os ícones exclusivos (não mostrar várias resoluções separadamente) que contém o nome do ícone, uma miniatura de visualização, o local e talvez se possível de onde veio (por exemplo, qual pacote de tema de ícones)?

Sistema: Ubuntu 15.10 Wily Werewolf 64 bits
Desktop: Unidade

Byte Commander
fonte
Com relação à parte "descobrir de qual pacote": "dpkg-query -S / bin / bash" gera o nome do pacote do executável bash no diretório / bin (como um exemplo de como ele funciona). Com apenas "/ bin" como argumento, ele produziria todos os pacotes instalados para todos os arquivos no diretório / 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 -tcobre a maior parte (exceto a parte da miniatura), eu diria. Não sei como você espera ver a miniatura em uma lista.
Muru
@ muru Em uma janela GUI? Eu não disse que deveria ser uma solução de linha de comando ...
Byte Comandante
@ByteCommander Você não disse, mas também não disse que tipo de GUI. Você espera que programamos uma GUI para você?
Muru
@ muru Não, mas achei que alguém talvez conhecesse uma ferramenta já existente para isso? Eu sei que usei algo assim uma vez, provavelmente foi incorporado a alguma função XFCE, talvez para selecionar um ícone para lançadores lá ...
Byte Commander

Respostas:

14

O gtk3-icon-browser é um aplicativo gráfico para listar ícones temáticos.

Até essa data, ele ainda está em desenvolvimento e está disponível no gtk-3-examplespacote para o Vivid e versões mais recentes. Seu desenvolvimento pode ser rastreado até esta postagem de blog de 2014 .

Navegando no ícone escuro do Xfce

gtk3-icon-browser Normal no Xubuntu 15.04

gtk3-icon-browser Simbólico no Xubuntu 15.04

Revisão rápida

  • Lista bem formatada de todos os ícones exclusivos: Sim 1
  • Contém o nome do ícone: Sim
  • Miniatura da visualização: Sim
  • Localização dos ícones: No 2
  • Origem do tema do ícone: Sim 3

1 Essa ferramenta será exibida como exibição de ícone por padrão (nenhuma maneira de mudar para a exibição de lista). Clique duas vezes em cada ícone para mostrar todas as resoluções disponíveis para esse ícone.

gtk3-icon-browser Ícone duplo clique simbólico

2 Essa ferramenta provavelmente procura no /usr/share/iconsdiretório (sem mencionar os locais para cada ícone) e extrai informações adicionais de acordo com a especificação de nomenclatura de ícones .

3 Esta ferramenta mostra apenas os ícones do tema atual . Para mostrar ícones para outro tema, altere a aparência do tema atual para outro tema.

Navegando por ícones da Humanidade-escuro (com caixa de diálogo pop-up)

gtk3-icon-browser Ícones humanidade-escuros

Exigências

  • GTK + 3.13.4 ou mais recente
  • Instale gtk-3-examplesno 15.04 (Vivid) ou em versões mais recentes

Como instalar

sudo apt-get install gtk-3-examples

Como executar

gtk3-icon-browser

Testado trabalhando no Xubuntu 15.04, usando GTK + 3.14.13 (versão mais recente para esta data de resposta).

Fontes relacionadas

  1. Código fonte do gtk / demos no master para GNOME / gtk no GitHub.

  2. Nova ferramenta de navegador de ícones para desenvolvedores de GTK + em desenvolvimento na Revista Fedora

  3. Mencionado brevemente com a captura de tela nesta resposta no Ask Ubuntu.

clearkimura
fonte
Esta solução é quase perfeita. Seria se mostrasse ícones de outros temas que também não são fornecidos pelo tema atual.
Byte Commander
@ByteCommander alguém deve dizer à AB para recuperar sua resposta, o que sugeriu exatamente esse programa.
Muru
3

Bem, alguns DEs mostram isso quando você tenta alterar o ícone de algo, mas é bem fácil fazer isso sozinho. Basta encontrar todos os ícones, criar links para eles em algum diretório e navegar no diretório. Os ícones de diferentes resoluções terão o mesmo nome, o que muda é o caminho. Por exemplo:

$ 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 você pode ver acima, o formato geral é /ParentDir/ThemeName/CLass/Resolution/IconName. Portanto, como o nome do ícone é o mesmo, podemos evitar duplicatas facilmente fazendo com que cada link criado substitua os links existentes com o mesmo nome. No entanto, queremos separar os ícones dos diferentes temas, o que exige um pouco mais de script:

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

O script acima criará o diretório ~/fooque conterá links para cada um dos seus arquivos de ícone exclusivos. A -fopção para lnsolicitar a substituição de arquivos existentes com o mesmo nome e, como estamos usando o nome do tema no nome do link, não deve haver duplicatas. Por exemplo, dados os emacs.pngícones mostrados acima, ele criará:

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

Agora você pode navegar ~/fooe dar uma olhada:

insira a descrição da imagem aqui

Em seguida, para obter os pacotes de origem, você pode executar:

for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
Terdon
fonte
No entanto, isso vinculará imagens de todas as diferentes resoluções disponíveis, certo? Posso filtrar duplicatas em tamanhos diferentes e mostrar apenas a maior?
Byte Commander
@ByteCommander não, não vai. As -fopções lnsubstituem os links existentes para que apenas um ícone com o mesmo nome seja mostrado. No entanto, acabei de perceber que, embora os dupes não sejam um problema, você sentirá falta de muitos, pois todos os gedit.pngícones serão substituídos pelo último encontrado. Era isso que eu queria lidar com as resoluções, mas ele não lida com temas diferentes: apenas o ícone de um tema será exibido. Estou tentando consertar isso agora.
terdon
@ByteCommander OK, veja a resposta atualizada. Isso ainda não tem problema com duplicatas, mas agora mostra corretamente ícones de diferentes temas.
terdon