Logo Gentoo w menu KDE
Jak szybko dokonać zmiany standardowego logo w menu KDE na logo Gentoo (lub dowolnej innej dystrybucji).
Wiele dystrybucji jak na przykład Kubuntu zapewnia swoje własne logo, ale moje Gentoo używa domyślnej standardowej ikony oxygen. Po kilku miesiącach używania KDE 4 na moich komputerach, straszliwie znudziła mi się nieco mało fajna standardowa ikona KDE. Poszperałem w Internecie i znalazłem naprawdę sympatycznie wyglądające logo Gentoo w formacie SVG, które wręcz idealnie nadaje się na ikonę menu.
![Logo Gentoo Linux w formacie SVG](uploads/images/blog/start-here-kde.png)
Zastąpienie starycz ikon wymagana niestety kopiowania nowej ikony w miejsce starych zdecydowanie zbyt dużą ilość razy. Co gorsza jeśli będą używał domyślnego zestawu ikon oxygen, który jest częścią środowiska KDE, mogę stracić moje zmiany przy każdej kompilacji nowego KDE, i znów będę musiał kopiować ikony. Mogę też w przyszłości zdecydować się na lokalną instalację innego zestawu ikon, ale wciąż chciałbym mieć możliwość umieszczenia logo mojego ukochanego Gentoo w menu w jakiś w miarę bez problemowy sposób.
Rozwiązałem ten problem w typowy dla użytkownika Linuxa sposób. Spędziłem kilka minut i napisałem prosty skrypt, który wykona całą robotę za mnie.
ICON=gentoo-start-icon.svg RESOLUTION=(16x16 22x22 32x32 48x48 64x64 128x128 256x256) URL="http://gentoo-art.org/CONTENT/content-files/117383-gentoo-start-icon.svg" WGET=/usr/bin/wget MV=/bin/mv CP=/bin/cp RM=/bin/rm if [ "${1}" = "global" ]; then PATH="/usr/share/icons/" elif [ "${1}" = "local" ]; then PATH=`echo ~/.kde4/share/icons/` else echo echo "Usage ./kde-icon.sh local | global [theme_name] [restore]" echo echo "Examples:" echo "If you want to change the icons just run:" echo "./kde-icon.sh local OxygenRefit2-black-version" echo echo "If you want to restore old icons run:" echo "./kde-icon.sh local OxygenRefit2-black-version restore" echo exit 1 fi if [ "${#}" -eq 1 ]; then echo "You didn't provide a theme_name I'm assuming we are changing the oxygen default icon theme" echo THEME="oxygen" else THEME=${2} fi echo "Checking if full theme path: ${PATH}${THEME} exists" echo if [ -d ${PATH}${THEME} ]; then echo "Path seems ok" echo else echo "Can not find the provided path check script parameters" echo exit 1 fi echo "Checking if you have write access to theme path" echo if [ -w ${PATH}${THEME} ]; then echo "Your rights seems ok" echo else echo "You do not have write access to the theme path you will not be able to change the icons" echo "Maybe you should run the script as root" echo exit 1 fi if [ "${3}" == "restore" ] ; then echo "You requested restoration of previously stored icons" echo echo "Checking if stored copies of old icons are available and performing restore if possible" for i in "${RESOLUTION[@]}"; do echo processing ${PATH}${THEME}/$i/places/start-here-kde.png if [ -w ${PATH}${THEME}/$i/places/start-here-kde.png.bak ]; then if [ -w ${PATH}${THEME}/$i/places/start-here-kde.svg ]; then echo "Removing svg icon: ${PATH}${THEME}/$i/places/start-here-kde.svg" ${RM} ${PATH}${THEME}/$i/places/start-here-kde.svg echo fi echo "Restoring old icons" ${MV} -f ${PATH}${THEME}/$i/places/start-here-kde.png.bak ${PATH}/${THEME}/$i/places/start-here-kde.png echo else echo "Can't find ${PATH}${THEME}/$i/places/start-here-kde.png.bak or you do not have write access to file" echo fi done echo "Finished" echo "To see the changes you need to change the icon set using KDE system settings" echo else echo "Downloading the logo icon" echo ${WGET} --output-document=${ICON} ${URL} || die "downloading of the icon failed" echo "Making backup of existing icons" echo for i in "${RESOLUTION[@]}"; do echo processing ${PATH}${THEME}/$i/places/start-here-kde.png if [ -w ${PATH}${THEME}/$i/places/start-here-kde.png ]; then if (${MV} -f ${PATH}${THEME}/$i/places/start-here-kde.png ${PATH}/${THEME}/$i/places/start-here-kde.png.bak) then echo "Storing ${PATH}${THEME}/$i/places/start-here-kde.png as ${PATH}/${THEME}/$i/places/start-here-kde.png.bak succsesfull" echo else echo "There was error while storing icon ${PATH}${THEME}/$i/places/start-here-kde.png" fi else echo "Icon ${PATH}${THEME}/$i/places/start-here-kde.png dosn't exist or you don't have the write access to it!" echo "I have nothing to do here" echo fi done echo echo "Placing new Icon" echo for i in "${RESOLUTION[@]}"; do echo processing ${PATH}${THEME}/$i/places/start-here-kde.svg if (${CP} ${ICON} ${PATH}${THEME}/$i/places/start-here-kde.svg) then echo "Placing icon ${PATH}${THEME}/$i/places/start-here-kde.svg succsesfull" echo else echo "There was error while placing icon ${PATH}${THEME}/$i/places/start-here-kde.svg" echo fi done echo "I'm Removing the downloaded icon" ${RM} -f ${ICON} echo echo "That's all!" echo "To see the changes you need to change the icon set using KDE system settings" echo fi
Zdaję sobie sprawę, że ten skrypt mógłby być dużo krótszy ale ja lubię wiedzieć co się dzieje, stąd aż tyle komend echo w skrypcie.
Skrypt:
- pobierze logo z internetu (możesz zmienić url aby pobrać inne logo)
- sprawdzi uprawnienia użytkownika do ścieżki z zestawem ikon
- sporządzi kopie poprzednich ikon wchodzących w skład zestawu
- umieści nową ikonę w miejscu poprzednich
- przywróci stare ikony (jeśli użytkownik wywoła go z parametrem resotore)
Skrypt akceptuje trzy parametry:
- local | global - wymagany do przeprowadzenia zmian w lokalnie lub globalnie zainstalowanym zestawie ikon
- theme_name - opcjonalny nazwa zestawu, powinna być nazwą głównego katalogu z zestawem ikon, jeśli żadna nazwa nie jest podana skrypt użyje domyślnej nazwy katalogu oxygen
- replace - opcjonalny wykorzystywany wraz z nazwą zestawu aby przywrócić uprzednio zapisane kopie starych ikon
Oczywiście musisz nadać atrybut wykonywalności dla skryptu zanim go użyjesz:
chmod +x kde-icon.sh
Przykłady użycia:
- Aby zmienić ikonę w menu dla domyślnego zestawu (wymaga uprawnień super użytkownika)
./kde-icon.sh global
- Aby zmienić ikonę w menu dla lokalnie zainstalowanego zestawu o nazwie OxygenRefit2-black-version
./kde-icon.sh local OxygenRefit2-black-version
- Aby przywrócić poprzednio zachowane kopie ikon
./kde-icon.sh local OxygenRefit2-black-version restore
Skrypt zgłosi błędy jeśli, któraś z operacji nie zostanie zakończona sukcesem
Poz samym wykonaniem skryptu musisz także przeładować zestaw ikon wykorzystując Ustawienia systemowe KDE, bez tego nie zaobserwujesz żadnych zmian. Porównaj z poniższym zrzutem ekranu.
![Przeładowanie zestawu ikon KDE](uploads/images/blog/KDEIconsettings.png)
Aby dowieść, że to działa, tutaj jest moje menu przed:
![Ikona Menu KDE Przed](uploads/images/blog/KDemenubefore.png)
A tu jest po:
![Ikona Menu KDE Po](uploads/images/blog/KDemenuafter.png)
Skrypt jest także dostępny na moim serwerze svn, możesz do niego uzyskać dostęp podążając za tym linkiem.
GNU Free Documentation License or Creative Commons Share Alike
- Opublikowano:
- Komentarz:
- 24.12.2012
- "@Alex":@Alex To tell you the truth - I no longer use KDE on any actively used computers so currently I do not have any place to test the script. As you can see this is quite an old post. From what I recall any update to oxygen Icon theme would make the default icons back, but running the script again should fix it.
- 23.12.2012
- "Alex":Hi, I was using this script for a while and its work very well, but for some reason after some updates on Gentoo ~amd64 the KDE icon back to figure on menu. I believe if the icons are not .png it back to the original. I need to make some tests. Thank you!
Jeśli znalazłeś jakieś błędy w powyższej informacji lub po prostu chcesz wypowiedzieć swoje zdanie na jej temat, będę wdzięczny za pozostawienie komentarza.
Wszystkie komentarze będą pokazywać się na stronie po tym jak zostaną zatwierdzone. Przepraszam za to ale chcę mieć pewność, że moja strona będzie wolna od obraźliwych lub wulgarnych treści. Nie mam nic przeciwko krytyce ale zrób to właściwie dobierając słowa.
Trwa przetwarzanie komentarza.