Утилита zenity – это средство создания диалоговых окон в режиме командной строки. Следует отметить, что на самом деле диалоговые окна создаются средствами Gtk+, поэтому в системе должны быть установлены соответствующие библиотеки. От аналогичных программ, таких как dialog и whiptail, zenity отличают более изощрённые средства реализации GUI-элементов.
Загрузить актуальную версию этой утилиты можно на Web-сайте разработчиков [http://library.gnome.org/users/zenity/]. Также эту программу можно найти в репозиториях некоторых дистрибутивов Linux.
Применение zenity для отдельных команд в интерактивном режиме не столь эффективно, как при написании сценариев. В сценариях командной оболочки часто требуется взаимодействие с пользователем, чтобы сообщить некую информацию, например, о возникновении «нестандартной» ситуации. Также требуется отображать информацию о состоянии выполнения операции, длящейся продолжительное время. Кроме этого, иногда сценарию необходимо получить некоторую информацию от пользователя: выбор варианта ответа на заданный вопрос, выбор файла из предложенного списка и т.д. Всё это можно организовать с помощью zenity.
Необходимо уточнить, что после закрытия диалогового окна, zenity возвращает числовой код завершения операции:
0 - означает, что пользователь нажал в диалоговом окне кнопку "OK" или "Закрыть" (Сlose); 1 - означает, что пользователь нажал кнопку "Отмена" (Cancel) или воспользовался функциями (кнопками) окна, чтобы закрыть его; -1 - сообщает о том, что операция завершилась с ошибкой; 5 - диалоговое окно было закрыто после истечения интервала таймаута.
Создание диалогового окна для вывода сообщений
Чтобы начать использовать zenity на практике не требуется обладать особыми знаниями или умениями, достаточно просто познакомиться с различными опциями (ключами), позволяющими в полной мере использовать возможности этой программы.
В zenity определены четыре типа диалоговых окон для вывода сообщений:
ошибка (ключ --error); информация (ключ --info); вопрос (ключ --question); предупреждение (ключ --warning).
Простое сообщение, изображенное на рисунке 1, определяется следующей командой:
zenity –info –title=«Сообщение от Gmail» \
Если требуется вывести текст сообщения в одну строку и без переносов, чтобы привлечь внимание к сообщению об ошибке, то можно воспользоваться ключом –no-wrap, как показано ниже:
zenity –error \
для резервного копирования файлов" \ --no-wrap
Создание диалогового окна для выбора варианта ответа
Создание диалогового окна, в котором от пользователя требуется ответить на предложенный вопрос («OK» или «Отмена»), лучше продемонстрировать на небольшом примере, приведённом в листинге 1.
Листинг 1. Пример использования диалогового окна для выбора варианта ответа
if [ -z «$» ] then zenity –error –text=«Не задан список удаляемых файлов» else zenity –question –title=«Внимание: операция удаления» \ –text=«Вы действительно хотите удалить перечисленные файлы?» \ –timeout=7 if [ $? -eq «0» ] then rm $
zenity --info --title="Операция выполнена" \ --text="Перечисленные файлы удалены"
else
zenity --warning --title="Операция отменена" \ --text="Перечисленные файлы не были удалены"
fi fi
В приведённом примере использованы все четыре типа диалоговых окон сообщений. Однако, так как в данном разделе рассматривается взаимодействие с пользователем по схеме «вопрос-ответ», то основное внимание следует уделить тому, как выглядит соответствующее диалоговое окно.