Zobacz listę wszystkich dostępnych unikalnych ikon z ich nazwami i miniaturami

15

Chcę zobaczyć, jakie ikony są zainstalowane i dostępne w moim systemie i pod jakimi nazwami muszę się do nich odnosić.

Jak mogę uzyskać ładnie sformatowaną listę wszystkich unikalnych ikon (nie pokazuj osobno kilku rozdzielczości), która zawiera nazwę ikony, miniaturę podglądu, lokalizację i być może, jeśli to możliwe, skąd pochodzi (np. Jaki pakiet motywów ikon)?

System: Ubuntu 15.10 Wily Werewolf 64 bit
Pulpit: Unity

Bajt Dowódca
źródło
Odnośnie części „dowiedzieć się, z którego pakietu”: „dpkg-query -S / bin / bash” wyświetla nazwę pakietu pliku wykonywalnego bash w katalogu / bin (jako przykład, jak to działa). Z argumentem „/ bin” wypisuje wszystkie zainstalowane pakiety dla wszystkich plików w katalogu / 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 -tobejmuje większość (oprócz części miniatur), powiedziałbym. Nie jestem pewien, jak spodziewasz się zobaczyć miniaturę na liście.
muru
@muru W oknie GUI? Nie powiedziałem, że powinno to być rozwiązanie z linii poleceń ...
Bajt Dowódca
@ByteCommander Nie zrobiłeś tego, ale nie powiedziałeś też, jakiego rodzaju GUI. Czy oczekujesz, że zaprogramujemy dla Ciebie GUI?
muru
@muru Nie, ale myślałem, że ktoś może znać już istniejące narzędzie do tego? Wiem, że kiedyś użyłem czegoś takiego, prawdopodobnie była wbudowana w jakąś funkcję XFCE, może po to, aby wybrać ikonę dla wyrzutni ...
Byte Commander

Odpowiedzi:

14

gtk3-icon-browser to aplikacja graficzna do wyświetlania ikon tematycznych.

Do tej pory jest wciąż w fazie rozwoju i jest dostępny w gtk-3-examplespakiecie dla Vivid i nowszych wydań. Jego rozwój można prześledzić wstecz do tego postu na blogu z 2014 roku .

Przeglądanie podstawowej ciemnej ikony Xfce

gtk3-icon-browser Normal na Xubuntu 15.04

gtk3-icon-browser Symbolic na Xubuntu 15.04

Szybki przegląd

  • Ładnie sformatowana lista wszystkich unikalnych ikon: Tak 1
  • Zawiera nazwę ikony: Tak
  • Podgląd miniatury: Tak
  • Lokalizacja ikon: nr 2
  • Pochodzenie motywu ikony: Tak 3

1 To narzędzie domyślnie wyświetla się jako widok ikon (nie ma możliwości przejścia do widoku listy). Dwukrotne kliknięcie każdej ikony spowoduje wyświetlenie wszystkich dostępnych rozdzielczości dla tej ikony.

gtk3-icon-browser Symboliczna ikona dwukrotnego kliknięcia

2 To narzędzie najprawdopodobniej przegląda /usr/share/iconskatalog (nie wspominając o lokalizacjach dla każdej ikony) i pobiera dodatkowe informacje zgodnie ze specyfikacją nazewnictwa ikon .

3 To narzędzie pokazuje tylko ikony bieżącego motywu. Aby wyświetlić ikony dla innego motywu, zmień wygląd z bieżącego motywu na inny.

Przeglądanie ikon ciemności ludzkości (z wyskakującym oknem dialogowym)

gtk3-icon-browser Ludzkie ikony ciemności

Wymagania

  • GTK + 3.13.4 lub nowszy
  • Zainstaluj gtk-3-examplesw 15.04 (Vivid) lub nowszych wersjach

Jak zainstalować

sudo apt-get install gtk-3-examples

Jak biegać

gtk3-icon-browser

Przetestowano działanie na Xubuntu 15.04, przy użyciu GTK + 3.14.13 (najnowsza wersja do tej daty odpowiedzi).

Powiązane źródła

  1. Kod źródłowy gtk / demos w master dla GNOME / gtk na GitHub.

  2. Nowe narzędzie przeglądarki ikon dla programistów GTK + w fazie rozwoju w magazynie Fedora

  3. Wspomniano krótko o zrzutu ekranu w tej odpowiedzi na Ask Ubuntu.

clearkimura
źródło
To rozwiązanie jest prawie idealne. Byłoby tak, gdyby pokazywał ikony z innych motywów, które nie są również dostępne w bieżącym motywie.
Bajt Dowódca
@ByteCommander ktoś powinien powiedzieć AB, aby cofnęła usunięcie odpowiedzi, co sugeruje dokładnie ten program.
mur
3

Cóż, niektóre DE pokazują to, gdy próbujesz zmienić ikonę czegoś, ale dość łatwo jest to zrobić samodzielnie. Wystarczy znaleźć wszystkie ikony, utworzyć łącza do nich w jakimś katalogu i przeglądać katalog. Ikony o różnych rozdzielczościach będą miały tę samą nazwę, co zmienia ścieżkę. Na przykład:

$ 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

Jak widać powyżej, ogólny format to /ParentDir/ThemeName/CLass/Resolution/IconName. Ponieważ nazwa ikony jest taka sama, możemy łatwo uniknąć duplikatów, tworząc każdy link zastępujący wszelkie istniejące łącza o tej samej nazwie. Chcemy jednak oddzielić ikony od różnych motywów osobno, więc wymaga to nieco więcej skryptów:

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

Powyższy skrypt utworzy katalog, ~/fooktóry będzie zawierał łącza do każdego z twoich unikalnych plików ikon. -fOpcja lninformuje go, aby zastąpić istniejące pliki o tej samej nazwie, a ponieważ używamy nazwy tematu w nazwie tego linku, nie powinno być żadnych duplikatów. Na przykład, biorąc pod uwagę powyższe emacs.pngikony, utworzy:

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

Możesz teraz przeglądać ~/fooi sprawdzać:

wprowadź opis zdjęcia tutaj

Następnie, aby uzyskać pakiety źródłowe, możesz uruchomić:

for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
terdon
źródło
Będzie to jednak łączyło obrazy wszystkich różnych dostępnych rozdzielczości, prawda? Czy mogę odfiltrować duplikaty w różnych rozmiarach i po prostu pokazać największy?
Bajt Dowódca
@ByteCommander nie, nie będzie. W -fopcji sprawia, że lnzastępowanie istniejących łączy więc zostaną pokazane tylko jedna ikona o tej samej nazwie. Jednak właśnie zdałem sobie sprawę, że chociaż duplikaty nie będą problemem, stracisz wiele, ponieważ wszystkie gedit.pngikony zostaną zastąpione ostatnią znalezioną. Właśnie to chciałem rozwiązać w przypadku rozdzielczości, ale nie dotyczy to różnych motywów: wyświetlana będzie tylko jedna ikona motywu. Próbuję to teraz naprawić.
terdon
@ByteCommander OK, zobacz zaktualizowaną odpowiedź. To nadal nie ma problemu z duplikatami, ale teraz poprawnie wyświetla ikony z różnych motywów.
terdon