查看所有可用的独特图标及其名称和缩略图的列表


15

我想查看系统上已安装哪些图标,以及哪些图标可用,必须参考哪些名称。

如何获取所有唯一图标的格式良好的列表(不单独显示多个分辨率),其中包含图标名称,预览缩略图,位置以及可能的位置(例如,哪个图标主题包)?

系统: Ubuntu 15.10 Wily Werewolf 64位
台式机: Unity


关于“从哪个软件包中查找”部分:“ dpkg-query -S / bin / bash”在/ bin目录中输出bash可执行文件的软件包名称(例如,它如何工作)。仅使用“ / bin”作为参数,它将输出/ bin目录中所有文件的所有已安装软件包。
neoc 2015年

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 2015年

@muru在GUI窗口中?我没有说这应该是一个命令行解决方案...
Byte Commander

@ByteCommander您没有,但是您也没有说哪种GUI。您希望我们为您编程GUI吗?
muru

@muru不,但是我想可能有人知道这个的已有工具?我知道我曾经使用过类似的东西,它可能已内置到某些XFCE函数中,也许是为那里的启动器选择一个图标……
Byte Commander

Answers:


14

gtk3-icon-browser是用于列出主题图标的图形应用程序。

迄今为止,它仍在开发中,并且可以gtk-3-examples用于Vivid和更高版本的软件包中。它的发展可以追溯到2014年的这篇博客文章

浏览基本Xfce深色图标

gtk3-icon-browser在Xubuntu 15.04上正常

Xubuntu 15.04上的gtk3-icon-browser符号

快速复审

  • 所有唯一图标的格式正确的列表:是1
  • 包含图标名称:是
  • 预览缩略图:是
  • 图标的位置:否2
  • 图标主题来源:是3

1默认情况下,此工具将显示为图标视图(无法更改为列表视图)。双击每个图标将显示该图标的所有可用分辨率。

gtk3-icon-browser符号双击图标

2该工具最有可能进入/usr/share/icons目录(每个图标都未提及位置),并根据图标命名规范提取其他信息。

3此工具仅显示当前主题的图标。要显示其他主题的图标,请将外观从当前主题更改为另一个主题。

浏览人性化深色图标(带有弹出对话框)

gtk3-icon-browser人性化深色图标

要求

  • GTK + 3.13.4或更高版本
  • 安装gtk-3-examples在15.04(生动)或更新的版本

如何安装

sudo apt-get install gtk-3-examples

怎么跑

gtk3-icon-browser

已测试使用GTK + 3.14.13(此回答日期的最新版本)在Xubuntu 15.04上工作。

相关资料

  1. GitHub上用于GNOME / gtk的master上gtk / demos的源代码

  2. Fedora杂志上正在开发的面向GTK +开发人员的新图标浏览器工具

  3. 在Ask Ask Ubuntu上的答案中简要提及了屏幕截图。


这个解决方案几乎是完美的。但是,如果它显示了当前主题未提供的其他主题的图标。
字节指挥官

@ByteCommander某人应该告诉AB取消删除他们的答案,而这正是该程序的建议。
muru

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

但是,这将链接所有可用分辨率的图像,对吗?我可以过滤出大小不同的重复项并仅显示最大的重复项吗?
字节指挥官

@ByteCommander不,不会。这些-f选项将ln覆盖现有链接,因此将仅显示一个同名图标。但是,我只是意识到,虽然不会出现重复问题,但是您会错过很多,因为所有gedit.png图标都会被找到的最后一个图标覆盖。这就是我要处理的分辨率,但是没有处理不同的主题:仅显示一个主题的图标。我正在尝试解决此问题。
terdon

@ByteCommander好,请参阅更新的答案。重复仍然没有问题,但是现在可以正确显示来自不同主题的图标。
terdon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.