Просмотр списка всех доступных уникальных значков с их именами и миниатюрами

Я хочу посмотреть, какие значки установлены и доступны в моей системе и по каким именам я должен ссылаться на них.

Как я могу получить красиво отформатированный список всех уникальных значков (не показывать несколько разрешений отдельно), который содержит имя значка, миниатюру предварительного просмотра, местоположение и, возможно, по возможности, откуда он появился (например, который представляет собой тематический пакет)?

Система: Ubuntu 15.10 Wily Werewolf 64 бит Desktop: Unity

1
задан 17 November 2015 в 15:01

1 ответ

Ну, некоторые DEs показывают это, когда вы пытаетесь изменить значок чего-то, но это очень легко сделать самому. Просто найдите все значки, сделайте ссылки на них в каком-то каталоге и просмотрите каталог. Значки с разными разрешениями будут иметь одно и то же имя, какие изменения являются путями. Например:

$ 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

Как вы можете видеть выше, общий формат /ParentDir/ThemeName/CLass/Resolution/IconName. Итак, поскольку имя иконы совпадает с тем, мы можем легко избежать дубликатов, создав каждую созданную ссылку, переписывая любые существующие ссылки с тем же именем. Тем не менее, мы хотим, чтобы джип значков из разных тем разделялся, поэтому требуется немного больше скриптов:

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

В приведенном выше скрипте будет создан каталог ~/foo, который будет содержать ссылки на каждый ваших уникальных файлов значков. Опция -f в ln сообщает, что она перезаписывает существующие файлы с тем же именем, и поскольку мы используем имя темы в названии ссылки, дубликатов не должно быть. Например, с учетом значков emacs.png, показанных выше, он создаст:

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

Теперь вы можете перейти к ~/foo и посмотреть:

[!d4 ]

Затем, чтобы получить исходные пакеты, вы можете запустить:

for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
2
ответ дан 23 May 2018 в 15:56
  • 1
    Однако это свяжет изображения всех различных доступных разрешений, верно? Могу ли я фильтровать дубликаты разных размеров и показывать самый большой? – Byte Commander 9 November 2015 в 17:58
  • 2
    @ByteCommander нет, не будет. Параметры -f заставляют ln перезаписывать существующие ссылки, поэтому будет отображаться только один значок с тем же именем. Тем не менее, я просто понял, что, в то время как обман не будет проблемой, вы пропустите много, так как все значки gedit.png будут перезаписаны последним найденным. Вот что я хотел решать с разрешениями, но это не касается разных тем: будет показана только одна тема. Я пытаюсь это исправить. – terdon♦ 9 November 2015 в 21:06
  • 3
    @ByteCommander ОК, см. Обновленный ответ. Это все еще не имеет проблемы с дубликатами, но теперь будет корректно отображать значки из разных тем. – terdon♦ 9 November 2015 в 21:57

Другие вопросы по тегам:

Похожие вопросы: