Bazı DE'ler, bir şeyin simgesini değiştirmeye çalıştığınızda bunu gösterir, ancak bunu kendiniz yapmak oldukça kolaydır. Tüm simgeleri bulun, bir dizinde bunlara bağlantılar oluşturun ve dizine göz atın. Farklı çözünürlükteki simgeler aynı ada sahip olacaktır, yol ne değişir? Örneğin:
$ 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
Yukarıda gördüğünüz gibi, genel biçim /ParentDir/ThemeName/CLass/Resolution/IconName
. Bu nedenle, simgenin adı aynı olduğundan, oluşturulan her bağlantının aynı addaki mevcut bağlantıların üzerine yazmasını sağlayarak yinelemeleri kolayca önleyebiliriz. Ancak, simgeleri farklı temalardan ayrı olarak jeep yapmak istiyoruz, bu yüzden biraz daha komut dosyası gerektirir:
#!/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
Yukarıdaki komut dosyası ~/foo
, benzersiz simge dosyalarınızın her birine bağlantılar içeren dizini oluşturur . -f
Seçeneği ln
biz bağlantının adına tema adını kullandığınız beri aynı adla varolan dosyaların üzerine ve onu söyler, hiçbir çiftleri olmalıdır. Örneğin, emacs.png
yukarıda gösterilen simgeler göz önüne alındığında, şunları oluşturur:
hicolor_emacs.png -> /usr/share/icons/hicolor/48x48/apps/emacs.png
Mint-X_emacs.png -> /usr/share/icons/Mint-X/apps/22/emacs.png
Artık göz atabilir ~/foo
ve bir göz atabilirsiniz :
Ardından, kaynak paketleri almak için şunları çalıştırabilirsiniz:
for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done