Освоив этот инструмент, правильный администратор/разработчик может облегчить жизнь себе любимому, своим близким, вынужденным терпеть Linux на домашнем компьютере, сотрудникам в офисе, куда стремительно рвутся всё более удобоваримые дистрибутивы свободной ОС. Удобство скриптования в unix-системах эта программа легко подружит с удобством использования. Не берусь даже обрисовать все возможные применения.
Пример. Пропишем себе в crontab:
-----8<-----
*/15 0-3 * * * DISPLAY=:0.0 zenity --warning --title="Пора спать" --text="Завтра на работу"
-----8<-----
И система заботливо и настойчиво будет нас клонить ко сну каждые 15 минут с 0 до 3 ночи.
Пример. Статус ppp соединения плюс статистика в трее.
Связка следующая - есть два скриптика, ppptray и pppwatch. Первый загоняется в район автостарта любимого десктопа, второй крутится по крону раз в минуту. В результате имею статус соединения плюс статистику в трее. Больше, в принципе, мне и не надо. расширенную инфу могу посмотреть и более другими средствами.
ppptray
-----8<-----
#! /bin/bash
rm -f /tmp/zenity
mkfifo /tmp/zenity
exec tail -f /tmp/zenity | zenity --notification --listen
-----8<-----
pppwatch
-----8<-----
#! /bin/bash
[[ -e /tmp/zenity ]] || exit 1
pppstats ppp0 &> /dev/null
[[ $? -eq 0 ]] && STATUS=on || STATUS=off
case $STATUS in
on)
echo "icon: /usr/desktop/share/icons/gnome/16x16/stock/net/stock_connect.png" >> /tmp/zenity
pppstats -a ppp0 | tail -n 1 | awk '{print "tooltip: In: " $1 "| Out: " $7}' >> /tmp/zenity
;;
off)
echo "icon: /usr/desktop/share/icons/gnome/16x16/stock/net/stock_disconnect.png" >> /tmp/zenity
echo "tooltip: no link" >> /tmp/zenity
;;
esac
exit 0
-----8<-----
Пример. Сканируем тучи документов и выполняем обработку изображений офисных документов в пару кликов. Секретарша будет на вас молится. Конечный документ А4 в 200dpi обычного вида (типа счёта с синей печатью и подписью) имеет типичный вес от 60 до 200 килобайт и формат png. Нужны установленные sane-utils и ImageMagic.
-----8<-----
#!/bin/sh
TMP="image$$"
while true; do
scanimage \
-p \
--format tiff \
--resolution 200 \
-x 215 -y 297 \
2> ~/$TMP.tiff \
3>&1 1>&2 2>&3 \
| perl -e '$/="\r";$|=1;while(){s/^\D+(\d+)\D.*$/$1\n/g;print;}' \
| zenity \
--progress \
--title="Сканирование" \
--text="Сканирую изображение. Пожалуйста, подождите..."
if [ $? -eq 0 ]; then
FILE=""
while [ -z "$FILE" ]; do
FILE=`zenity \
--entry \
--title="Обработка" \
--text="Укажите имя файла для сохранения"`
done
convert $TMP.tiff -level 20%,80%,0.4 -format PNG8 -colors 8 $FILE.png
else
killall scanimage
fi
rm -f $TMP.tiff
zenity \
--question \
--title="Продолжим?" \
--text="Вы желаете продолжить сканирование? Не забудьте положить в сканер новый лист." \
|| return
done
-----8<-----