12 maja 2008
Zenity - bash i okna GTK
Jakiś czas temu przy aktualizacji paru pakietów, zwróciłem, nie wiem czemu, uwagę na jeden z nich. Jego nazwa nic mi nie mówiła, przeczytałem więc krótki opis, który zachęcił mnie do "googlowania". Mowa o Zenity, umożliwiającym uruchamianie zdefiniowanych okienek GTK o określonej funkcjonalności, z przeznaczeniem do wykorzystania w skryptach bash-a. Nie będę opisywał dostępnych okienek, bo to można wyczytać z dokumentacji. Skupię się zatem na konkretnym przykładzie wykorzystania Zenity.
Na szybko napisałem skrypt, który zastąpił moją metodę pomniejszania obrazków z wykorzystaniem z linii poleceń, opisaną w jednym z wcześniejszych wpisów.
#!/bin/bash
files=(`zenity --file-selection --title "Wybierz pliki do zmniejszenia" --multiple --separator " "`)
if [ $files == "" ]
then
exit
fi
fnum=${#files[@]}
percent=$[100/$fnum]
current=$percent
scale=(`zenity --scale --title "Rozmiar miniatury" --text "Wybierz maksymalny rozmiar wysokości lub szerokości - obraz będzie zmniejszony proporcjonalnie" --max-value 1024`)
if [ $scale == 0 ]
then
exit
fi
(for file in ${files[*]};
do
type=`file -b -i $file`
if [ ${type:0:5} == 'image' ]
then
convert $file -resize "$scale"x"$scale" $file
fi
current=$[$current+$percent]
echo $current
done) | zenity --progress --title "Zmniejszanie obrazków" --text "Postęp" --auto-close
Jest bardzo prosty, ale mi w zupełności wystarcza. Wykorzystuje polecenie "convert" z pakietu ImageMagick.
4 komentarze
Alternetywa dla Xdialog :]
Jest jeszcze kdialog dla KDE oraz dialog w trybie tekstowym :)
KDialog wygląda bardzo zachęcająco, muszę mu się w wolnej chwili przyjrzeć ;] (że też wcześniej o nim nie słyszałem).
Super! Zwłaszcza to do skalowania obrazków. Takiego czegoś mi brakowało :)
@Grucha, o KDialogu troszkę pisałem na: http://thecamels.org/2008/03/16/ciekawe-zastosowania-kdialog/