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.

Komentarze

  1. 13 maja 2008 | #

    Alternetywa dla Xdialog :]

  2. 13 maja 2008 | #

    Jest jeszcze kdialog dla KDE oraz dialog w trybie tekstowym :)

  3. 13 maja 2008 | #

    KDialog wygląda bardzo zachęcająco, muszę mu się w wolnej chwili przyjrzeć ;] (że też wcześniej o nim nie słyszałem).

  4. 14 maja 2008 | #

    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/

Napisz komentarz