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

15

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

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

Система: Ubuntu 15.10 Wily Werewolf 64 битный
Рабочий стол: Unity

Byte Commander
источник
Что касается части «выяснение, из какого пакета»: «dpkg-query -S / bin / bash» выводит имя пакета исполняемого файла bash в каталоге / bin (в качестве примера, как это работает). Если в качестве аргумента используется только «/ bin», он выведет все установленные пакеты для всех файлов в каталоге / bin.
Нео
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 -tпокрывает большую часть этого (за исключением части миниатюры), я бы сказал. Я не уверен, как вы ожидаете увидеть миниатюру в списке.
Муру
@muru в окне графического интерфейса? Я не говорил, что это должно быть решение командной строки ...
Byte Commander
@ByteCommander Вы не сделали, но вы также не сказали, какой графический интерфейс. Вы ожидаете, что мы запрограммируем графический интерфейс для вас?
Муру
@muru Нет, но я подумал, что кто-то может знать уже существующий инструмент для этого? Я знаю, что однажды использовал что-то подобное, возможно, оно было встроено в какую-то функцию XFCE, возможно, чтобы выбрать значок для запуска там ...
Byte Commander

Ответы:

14

gtk3-icon-browser - это графическое приложение для отображения тематических значков.

На сегодняшний день он все еще находится в стадии разработки и доступен в виде gtk-3-examplesпакета для Vivid и более новых выпусков. Его развитие можно проследить до этого поста в блоге от 2014 года .

Просмотр элементарного Xfce темного значка

gtk3-icon-browser Обычный в Xubuntu 15.04

gtk3-icon-browser Symbolic в Xubuntu 15.04

Быстрый обзор

  • Красиво отформатированный список всех уникальных иконок: Да 1
  • Содержит название значка: Да
  • Предварительный просмотр: Да
  • Расположение иконок: № 2
  • Значок темы происхождения: Да 3

1 По умолчанию этот инструмент будет отображаться в виде значка (его невозможно изменить в виде списка). Двойной щелчок на каждом значке покажет все доступные разрешения для этого значка.

gtk3-icon-browser Символический значок двойного щелчка

2 Этот инструмент, скорее всего, просматривает /usr/share/iconsкаталог (без указания местоположения для каждого значка) и извлекает дополнительную информацию в соответствии со спецификацией именования значков .

3 Этот инструмент показывает только значки для текущей темы. Чтобы отобразить значки для другой темы, измените внешний вид текущей темы на другую.

Просмотр темных значков человечества (с всплывающим диалогом)

gtk3-icon-browser Humanity-dark icons

Требования

  • GTK + 3.13.4 или новее
  • Установите gtk-3-examplesв 15.04 (Vivid) или более новых выпусках

Как установить

sudo apt-get install gtk-3-examples

Как бегать

gtk3-icon-browser

Протестировано работает на Xubuntu 15.04, используя GTK + 3.14.13 (последняя версия на эту дату).

Связанные источники

  1. Исходный код gtk / demos на master для GNOME / gtk на GitHub.

  2. Новый инструмент браузер иконок для разработчиков GTK + в разработке на Fedora Magazine

  3. Кратко упомянуто со скриншотом в этом ответе на Ask Ubuntu.

clearkimura
источник
Это решение почти идеально. Это было бы, если бы он показывал значки из других тем, которые также не предусмотрены текущей темой.
Byte Commander
@ByteCommander кто-то должен сказать AB, чтобы восстановить его ответ, который предложил именно эту программу.
Муру
3

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

$ 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и посмотреть:

введите описание изображения здесь

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

for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
terdon
источник
Это, однако, будет связывать изображения всех различных доступных разрешений, верно? Могу ли я отфильтровать дубликаты разных размеров и показать только самый большой?
Byte Commander
@ByteCommander нет, не будет. Параметр -fпозволяет lnперезаписать существующие ссылки, поэтому будет отображаться только один значок с тем же именем. Тем не менее, я только что понял, что, хотя дупсеты не будут проблемой, вы будете скучать по многим, так как все gedit.pngиконки будут перезаписаны последними найденными. Это то, что я хотел иметь дело с разрешениями, но это не касается разных тем: будет отображаться только значок одной темы. Я пытаюсь это исправить сейчас.
Terdon
@ByteCommander ОК, смотрите обновленный ответ. Это по-прежнему не имеет проблем с дубликатами, но теперь будет правильно отображать значки из разных тем.
Terdon