글쎄, 어떤 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