使用可能なすべての一意のアイコンとその名前とサムネイルのリストを表示する


15

システムにどのアイコンがインストールされており、どのアイコンを参照する必要があるかを確認したい。

アイコン名、プレビューサムネイル、場所、および可能であればそれがどこから来たか(たとえば、どのアイコンテーマパッケージ)を含む、すべての一意のアイコン(複数の解像度を個別に表示しない)のきれいにフォーマットされたリストを取得するにはどうすればよいですか?

システム: Ubuntu 15.10 Wily Werewolf 64ビット
デスクトップ: Unity


「どのパッケージから検索するか」の部分について:「dpkg-query -S / bin / bash」は、/ binディレクトリにあるbash実行可能ファイルのパッケージ名を出力します(動作例)。引数として「/ bin」のみを指定すると、/ 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 -tそのほとんどをカバーします(サムネイル部分を除く)。リストにサムネイルがどのように表示されるかはわかりません。
ムル

@muru GUIウィンドウで?コマンドラインソリューションであるとは言いませんでした...
バイトコマンダー

@ByteCommanderしませんでしたが、どのようなGUIでもありませんでした。GUIをプログラムしてくれると期待していますか?
ムル

@muruいいえ、しかし誰かがこのための既存のツールを知っているかもしれないと思いましたか?私は多分、ランチャーのアイコンを選択するために、それはおそらく、いくつかのXFCEの機能に組み込まれた、かつてのようなものを使用し知っているが...
バイト司令

回答:


14

gtk3-icon-browserは、テーマアイコンを一覧表示するグラフィカルアプリケーションです。

現在まで、それはまだ開発中であり、gtk-3-examplesVivid以降のリリースのパッケージで利用可能です。その開発は、2014年のこのブログ投稿にまでさかのぼることができます。

エレメンタリーXfceダークアイコンの閲覧

Xubuntu 15.04のgtk3-icon-browser Normal

Xubuntu 15.04のgtk3-icon-browser Symbolic

簡単なレビュー

  • すべての一意のアイコンの適切にフォーマットされたリスト:はい1
  • アイコン名が含まれています:はい
  • プレビューサムネイル:はい
  • アイコンの場所:いいえ2
  • アイコンのテーマの起源:はい3

1このツールは、デフォルトでアイコンビューとして表示されます(リストビューに変更する方法はありません)。各アイコンをダブルクリックすると、そのアイコンで使用可能なすべての解像度が表示されます。

gtk3-icon-browserシンボリックダブルクリックアイコン

2このツールは、ほとんどの場合、/usr/share/iconsディレクトリを調べて(各アイコンの場所を言及せずに)、アイコンの命名仕様に従って追加情報を引き出します

3このツールは、現在のテーマのアイコンのみを表示します。他のテーマのアイコンを表示するには、現在のテーマから別のテーマに外観を変更します。

人影の暗いアイコンの閲覧(ポップアップダイアログ付き)

gtk3-icon-browser人類の暗いアイコン

必要条件

  • GTK + 3.13.4以降
  • gtk-3-examples15.04(Vivid)以降のリリースでインストール

インストールする方法

sudo apt-get install gtk-3-examples

実行方法

gtk3-icon-browser

GTK + 3.14.13(この回答日までの最新バージョン)を使用して、Xubuntu 15.04での動作をテストしました。

関連ソース

  1. GitHub上のGNOME / gtkのマスターでのgtk / demosのソースコード

  2. Fedora Magazine で開発中のGTK +開発者向けの新しいアイコンブラウザーツール

  3. Ask Ubuntuに関するこの回答のスクリーンショットで簡単に言及しました。


このソリューションはほぼ完璧です。ただし、現在のテーマでは提供されていない他のテーマのアイコンが表示された場合です。
バイトコマンダー

@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

ただし、これにより、使用可能なすべての異なる解像度の画像がリンクされます。異なるサイズの重複を除外して、最大のものだけを表示できますか?
バイトコマンダー

@ByteCommanderいいえ、できません。この-fオプションにより、ln既存のリンクが上書きされるため、同じ名前のアイコンが1つだけ表示されます。ただし、重複は問題になりませんがgedit.png、最後に見つかったアイコンによってすべてのアイコンが上書きされるため、多くのことを見逃すことに気付きました。それは私が解像度を処理したかったが、それは別のテーマを扱っていません:1つのテーマのアイコンのみが表示されます。私は今それを修正しようとしています。
テルドン

@ByteCommander OK、更新された回答を参照してください。これはまだ重複の問題はありませんが、異なるテーマのアイコンを正しく表示するようになりました。
テルドン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.