# Руководство Zenity

Руководство Zenity, версия 2.0
2003
2004
Sun Microsystems, Inc.
2007
Deshko Yury (deshko@tut.by)
Sun Microsystems, Inc.

Следующим разрешается копировать и/или модифицировать этот документ при условии соблюдения GNU Free Documentation License (GFDL), версии 1.1 или любой более поздней опубликованной ассоциацией свободного программного обеспечения версией без неизменяемых частей, без текстов на обложках. Вы можете найти копию лицензии по этой ссылке или в файле COPYING-DOCS, распространяемом с этим документом.

Этот документ является частью документации GNOME распространяемой под лицензией GFDL. Если вы хотите распространять этот документ отдельно от общей документации, вы должны приложить копию лицензии к документу, как написано в части 6 лицензии.

Некоторые имена и марки используются компаниями для различения их продуктов и услуг и являются торговыми марками. Эти марки присутствуют в документации и члены проекта документирования GNOME знают об этом. Имена выделяются заглавными буквами или начальной заглавной буквой.

ДОКУМЕНТ И ИЗМЕНЁННЫЕ ВЕРСИИ ДОКУМЕНТА ПРЕДСТАВЛЯЮТСЯ ПОЛЬЗОВАТЕЛЮ ПОД ЛИЦЕНЗИЕЙ GNU FREE DOCUMENTATION LICENSE С УВЕДОМЛЕНИЕМ О ТОМ, ЧТО

1. ДОКУМЕНТ РАСПРОСТРАНЯЕТСЯ "КАК ЕСТЬ", БЕЗ ВСЯКИХ ГАРАНТИЙ, ПРИДУМАННЫХ ИЛИ УНАСЛЕДОВАННЫХ, БЕЗ ОГРАНИЧЕНИЙ, ГАРАНТИЙ ТОГО ЧТО ДОКУМЕНТ ИЛИ МОДИФИЦИРОВАННАЯ ВЕРСИЯ ДОКУМЕНТА СВОБОДНА ОТ ДЕФЕКТОВ, ТОЛЬКО ДЛЯ СПЕЦИАЛЬНОГО ИСПОЛЬЗОВАНИЯ НЕ ЗАКЛЮЧАЮЩЕГО В СЕБЕ РИСКИ КАЧЕСТВА, АККУРАТНОСТИ ИЛИ СООТВЕТСТВИЯ ДОКУМЕНТА ИЛИ ИЗМЕНЁННЫХ ВЕРСИЙ ДОКУМЕНТА ВАШИМ ТРЕБОВАНИЯМ. ЕСЛИ ДОКУМЕНТ ИЛИ МОДИФИЦИРОВАННАЯ ВЕРСИЯ ДОКУМЕНТА ИМЕЕТ НЕДОСТАТКИ, ВЫ (А НЕ АВТОР ДОКУМЕНТА ИЛИ ЕГО ПОМОЩНИК) ДОЛЖНЫ САМИ ПРИЛОЖИТЬ УСИЛИЯ К ЕГО ДОРАБОТКИ, КОРРЕКЦИИ ИЛИ ВОССТАНОВЛЕНИЮ. ЭТО ПРЕДУПРЕЖДЕНИЕ СОСТАВЛЯЕТ СУЩЕСТВЕННУЮ ЧАСТЬ ЛИЦЕНЗИИ. ДОКУМЕНТ НЕ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ БЕЗ ДАННОГО ПРЕДУПРЕЖДЕНИЯ И

2. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ И НИ ПРИ КАКОМ ЗАКОННОМ СПОСОБЕ, НИ ПО КАКОМУ СОГЛАШЕНИЮ ИЛИ ДРУГОЙ ПРИЧИНЕ, АВТОР, СОЗДАТЕЛЬ ИЛИ ПОМОЩНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ПРЯМОЕ, КОСВЕННОЕ, СПЕЦИАЛЬНОЕ, СЛУЧАЙНОЕ ИЛИ ПРЕДНАМЕРЕННОЕ ПОВРЕЖДЕНИЕ ЛЮБОГО СВОЙСТВА, ВКЛЮЧАЯ БЕЗ ОГРАНИЧЕНИЯ ПОТЕРЮ ЖЕЛАНИЯ, РАБОТОСПОСОБНОСТИ, КОМПЬЮТЕРНЫЕ СБОИ ИЛИ НЕПРАВИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ, ВМЕСТЕ ИЛИ ПО ОТДЕЛЬНОСТИ. НИКАКИЕ ПОВРЕЖДЕНИЯ И ПОТЕРИ НЕ МОГУТ БЫТЬ ВОЗЛОЖЕНЫ НА АВТОРА ДОКУМЕНТА ИЛИ МОДИФИЦИРОВАННОЙ ВЕРСИИ ДОКУМЕНТА, ДАЖЕ ЕСЛИ СТОРОНА БЫЛА ПРОИНФОРМИРОВАНА О ВОЗМОЖНОСТИ ТАКИХ ПОВРЕЖДЕНИЙ.

Sun
Команда документирования Java Desktop System
Sun Microsystems, Inc.
Glynn
Foster
Проект документирования GNOME
Nicholas
Curran
Проект документирования GNOME
Руководство Zenity, версия 2.0
Август, 2004

Команда документирования Sun Java Desktop System

Sun Microsystems, Inc.

Руководство Zenity, версия 1.0
Январь 2003

Glynn Foster

Проект документирования GNOME

Это руководство описывает версию Zenity 2.6.0.

## Обратная связь

Для обратной связи, следуйте указаниям на странице обратной связи.

Zenity это переписанная версия программы gdialog, адаптация программы dialog для среды GNOME. Она позволяет вам изображать диалоговые окна из командной строки и сценариев оболочки.

## Введение

Zenity позволяет вам создавать следующие типы простых диалоговых окон:

- Календарь

- Выбор файла

- Список

- Значок уведомления

- Сообщение

  - Ошибка

  - Информация

  - Вопрос

  - Предупреждение

- Ход выполнения

- Ввод текста

- Текстовая информация

## Использование

Когда вы пишите сценарии, вы можете использовать Zenity для создания простых графических диалоговых окон, которые взаимодействуют с пользователем, как в следующих случаях:

- Вы можете создать диалоговое окно, чтобы получить информацию от пользователя. Например, вы можете попросить пользователя выбрать дату из календаря или выбрать файл из окна выбора файла.

- Вы можете создать диалоговое окно, чтобы предоставить информацию пользователю. Например, вы можете использовать окно с ходом выполнения, чтобы указать текущее состояние операции или использовать окно предупреждения, чтобы оповестить пользователя.

Когда пользователь закрывает диалоговое окно, Zenity печатает текст, создаваемый окном, в стандартный поток вывода.

Когда вы пишите команды Zenity, убедитесь, что вы помещаете каждый аргумент в кавычки.

Например, используйте:

    zenity --calendar --title="Планировщик праздников"

Не пишите:

    zenity --calendar --title=Планировщик праздников

Если не использовать кавычки, то можно получить неожиданные результаты.

### Клавиши доступа

Клавиша доступа это клавиша, которая позволяет вам выполнять действие с клавиатуры, нежели используя мышь, для выбора команды из меню или диалогового окна. Каждая клавиша доступа назначается с помощью подчёркнутой буквы в параметре, задающем текст меню или диалогового окна.

Некоторые окна Zenity поддерживают использование клавиш доступа. Чтобы указать символ, который нужно использовать для клавиши доступа, поместите знак подчёркивания перед тем символом в тексте диалогового окна. Следующий пример показывает, как установить букву «В» для клавиши доступа:

    "_Выберите имя".

### Коды Выхода

Zenity возвращает следующие коды выхода:

Код выхода | Описание
--- | ---
`0` | Пользователь нажал либо OK, либо Закрыть.
`1` | Пользователь нажал либо Отмена, либо использовал функции окна, чтобы закрыть диалоговое окно.
`-1` | Произошла неожиданная ошибка.
`5` | Окно диалога закрыто из-за завершения времени ожидания.

### Общие параметры

Все диалоговые окна Zenity поддерживают следующие общие параметры:

`--title`=заголовок

  Указывает заголовок диалогового окна.

`--window-icon`=путь_к_значку

  Указывает значок, который изображается в рамке диалогового окна. Существуют 4 запасных значка, доступных по следующим ключевым словам: info, warning, question и error.

`--width`=ширина

  Указывает ширину диалогового окна.

`--height`=высота

  Указывает высоту диалогового окна.

`--timeout`=время_ожидания

  Указывает время ожидания в секундах, по истечении которого диалоговое окно закрывается.

### Параметры вызова справки

Zenity предоставляет следующие параметры справки:

`--help`

  Показывает сокращённый текст справки.

`--help-all`

  Показывает полный текст справки для всех диалоговых окон.

`--help-general`

  Показывает текст справки по общим параметрам диалоговых окон.

`--help-calendar`

  Показывает текст справки по параметрам диалогового окна календаря.

`--help-entry`

  Показывает текст справки по параметрам диалогового окна ввода текста.

`--help-error`

  Показывает текст справки по параметрам диалогового окна сообщения об ошибке.

`--help-info`

  Показывает текст справки по параметрам информационного диалогового окна.

`--help-file-selection`

  Показывает текст справки по параметрам диалогового окна выбора файла.

`--help-list`

  Показывает текст справки по параметрам диалогового окна списка.

`--help-notification`

  Показывает текст справки по параметрам значка уведомлений.

`--help-progress`

  Показывает текст справки по параметрам диалогового окна хода выполнения.

`--help-question`

  Показывает текст справки по параметрам диалогового окна вопроса.

`--help-warning`

  Показывает текст справки по параметрам диалогового окна предупреждения.

`--help-text-info`

  Показывает текст справки по параметрам диалогового окна текстовой информации.

`--help-misc`

  Показывает справки по разнообразным параметрам.

`--help-gtk`

  Показывает справку по параметрам GTK+.

### Разнообразные параметры

Zenity также может запускаться со следующими дополнительными параметрами:

`--about`

  Изображает диалоговое окно О программе Zenity, которое содержит информацию о версии Zenity, информацию об авторских правах и информацию о разработчике.

`--version`

  Изображает номер версии Zenity.

### Параметры GTK+

Zenity поддерживает стандартные параметры программ GTK+. Для получения дополнительной информации о параметрах GTK+, выполните команду `zenity -?`.

### Переменные окружения

Обычно, Zenity определяет окно терминала из которого она была запущена и выводит диалоговые окна поверх этого окна. Это можно отключить удалив переменную окружения `WINDOWID`.

## Диалоговое окно календарь

Используйте параметр `--calendar`, чтобы создать диалоговое окно с календарём. Zenity возвращает выбранную дату в стандартный поток. Если в командной строке не указана дата, то диалоговое окно будет использовать текущую дату.

Диалоговое окно календарь поддерживает следующие параметры:

`--text`=текст

  Указывает текст, который будет изображён в диалоговом окне календаря.

`--day`=день

  Указывает день, который будет выделен в диалоговом окне календаря. День должен быть числом между 1 и 31, включительно.

`--month`=месяц

  Указывает месяц, который будет выделен в диалоговом окне календаря. Месяц должен быть числом между 1 и 12, включительно.

`--year`=год

  Указывает год, который будет выбран в диалоговом окне календаря.

`--date-format`=формат

  Указывает формат даты, в котором она будет возвращена после выбора из диалогового окна. Формат даты по умолчанию зависит от локали. Формат должен иметь вид, приемлемый для функции `strftime`, например `%A %d/%m/%y`.

Следующий сценарий является примером того, как создавать диалоговое окно календаря:

            #!/bin/sh

            if zenity --calendar \
            --title="Выберите Дату" \
            --text="Щёлкните на дате, чтобы выбрать её." \
            --day=10 --month=8 --year=2004
              then echo $?
              else echo "Дата не выбрана"
            fi

### Пример диалогового окна календарь

Zenity пример диалогового окна календарь

## Диалоговое окно выбора файла

Используйте параметр `--file-selection`, чтобы создать диалоговое окно выбора файла. Zenity возвращает имена выбранных файлов или каталогов в стандартный поток. Режимом диалогового окна выбора файлов по умолчанию является режим «открыть».

Диалоговое окно выбора файлов поддерживает следующие параметры:

`--filename`=имя_файла

  Указывает файл или каталог, который будет выбран в диалоговом окне, когда оно впервые появится.

`--multiple`

  Позволяет выбирать сразу несколько файлов в окне выбора.

`--directory`

  Позволяет выбирать только каталоги в диалоговом окне выбора файла.

`--save`

  Устанавливает диалоговое окно в режим сохранения файла.

`--separator`=разделитель

  Указывает строку, которая будет использована для разделения имён файлов в возвращаемом списке.

Следующий сценарий является примером того, как создавать диалоговое окно выбора файла:

            #!/bin/sh

            FILE=`zenity --file-selection --title="Выберите файл"`

            case $? in
                     0)
                            echo "Выбран \"$FILE\".";;
                     1)
                            echo "Файл не выбран.";;
                    -1)
                            echo "Файл не выбран.";;
            esac

### Пример диалогового окна выбора файла

Zenity пример диалогового окна выбора файла

## Значок уведомления

`--text`=текст

  Указывает текст, который будет изображён в области уведомления.

Следующий сценарий является примером того, как создавать значок уведомлений:

            #!/bin/sh

            zenity --notification\
              --window-icon="info" \
              --text="Необходимо обновить систему."

### Пример значка уведомления

Zenity пример значка уведомления

## Диалоговое окно списка

Используйте параметр `--list`, чтобы создать диалоговое окно списка. Zenity возвращает элементы первого столбца текста из выбранных строк в стандартный поток.

Данные для этого диалогового окна должны указываться столбец за столбцом, строка за строкой. Данные могут быть поданы диалоговому окну через стандартный ввод. Каждая запись должна быть отделена символом новой строки.

Если вы используете параметр `--checklist` или `--radiolist`, каждая строка должна начинаться либо с TRUE, либо с FALSE.

Диалоговое окно списка поддерживает следующие параметры:

`--column`=столбец

  Указывает заголовки столбцов, которые будут изображены в диалоговом окне списка. Вы должны указать параметр `--column` для каждого столбца, который вы хотите отобразить в диалоговом окне.

`--checklist`

  Указывает, что первый столбец в диалоговом окне списка содержит флажки.

`--radiolist`

  Указывает, что первый столбец в диалоговом окне содержит поля выбора.

`--editable`

  Позволяет редактирование отображаемых элементов.

`--separator`=разделитель

  Указывает строку-разделитель, используемую, когда диалоговое окно возвращает выбранные элементы.

`--print-column`=столбец

  Указывает, какой столбец нужно вывести при выборе элемента. По умолчания это 1-й столбец. Можно использовать ALL, чтобы вывести все столбцы из списка.

Следующий сценарий является примером того, как создавать диалоговое окно списка:

            #!/bin/sh

            zenity --list \
              --title="Выберите ошибки, которые Вы хотите просмотреть" \
              --column="Номер ошибки" --column="Критичность" --column="Описание" \
                992383 Normal "GtkTreeView падает при множественном выборе" \
                293823 High "Словарь GNOME не умеет обращаться с прокси" \
                393823 Critical "Редактирование Меню не работает в GNOME 2.0"

### Пример диалогового окна списка

Zenity пример диалогового окна списка

## Диалоговое окно сообщения

Zenity может создавать четыре типа диалоговых окон сообщений:

- Ошибка

- Информация

- Вопрос

- Предупреждение

Для каждого типа используйте параметр `--text`, чтобы задать текст в диалоге.

### Диалоговое окно ошибки

Используйте параметр `--error`, чтобы создать диалоговое окно ошибки.

Следующий сценарий является примером того, как можно создавать диалоговое окно ошибки:

              #!/bin/bash

              zenity --error \
              --text="Не удалось найти /var/log/syslog."

#### Пример диалогового окна ошибки

Zenity пример диалогового окна ошибки

### Диалоговое окно информации

Используйте параметр `--info`, чтобы создать диалоговое окно информации.

Следующий сценарий является примером того, как создавать диалоговое окно информации:

              #!/bin/bash

              zenity --info \
              --text="Слияние завершено. Обновлено 3 из 10 файлов."

#### Пример диалогового окна информации

Zenity пример диалогового окна информации

### Диалоговое окно вопроса

Используйте параметр `--question`, чтобы создать диалоговое окно вопроса.

Следующий сценарий является примером того, как создавать диалоговое окно вопроса:

              #!/bin/bash

              zenity --question \
              --text="Вы уверены, что хотите продолжить?"

#### Пример диалогового окна вопроса

Zenity пример диалогового окна вопроса

### Диалоговое окно предупреждения

Используйте параметр `--warning`, чтобы создать диалоговое окно предупреждения.

Следующий сценарий является примером того, как создавать диалоговое окно предупреждения:

              #!/bin/bash

              zenity --warning \
              --text="Отсоедините кабель питания, чтобы избежать удара током."

#### Пример диалогового окна предупреждения

Zenity пример диалогового окна предупреждения

## Диалоговое окно хода выполнения

Используйте параметр `--progress`, чтобы создать диалоговое окно хода выполнения.

Zenity считывает данные из стандартного ввода строка за строкой. Если строка начинается с #, то текст, следующий за этим префиксом, размещается в диалоговом окне. Если строка содержит только число, то индикатор хода выполнения устанавливается на этот процент выполнения.

Диалоговое окно индикатора хода выполнения поддерживает следующие параметры:

`--text`=текст

  Указывает текст, который будет изображён в диалоговом окне.

`--percentage`=процент

  Указывает начальное состояние индикатора хода выполнения.

`--auto-close`

  Диалоговое окно закрывается, когда процент выполнения достигает 100%.

`--pulsate`

  Указывает, что индикатор хода выполнения пульсирует до тех пор, пока из стандартного ввода не будет прочитан символ конца файла EOF.

Следующий сценарий является примером того, как можно создавать диалоговое окно индикатора хода выполнения:

            #!/bin/sh
            (
            echo "10" ; sleep 1
            echo "# Обновление журнала почты" ; sleep 1
            echo "20" ; sleep 1
            echo "# Сброс задачи cron" ; sleep 1
            echo "50" ; sleep 1
            echo "Это строка будет просто проигнорирована" ; sleep 1
            echo "75" ; sleep 1
            echo "# Перезагрузка системы" ; sleep 1
            echo "100" ; sleep 1
            ) |
            zenity --progress \
              --title="Обновление системного журнала" \
              --text="Просмотр журналы почты..." \
              --percentage=0

            if [ "$?" = -1 ] ; then
                    zenity --error \
                      --text="Обновление отменено."
            fi

### Пример диалогового окна индикатора хода выполнения

Zenity пример диалогового окна индикатора хода выполнения

## Диалоговое окно ввода текста

Используйте параметр `-entry`, чтобы создать диалоговое окно ввода текста. Zenity возвращает введенный текст в стандартный поток вывода.

Диалоговое окно ввода текста поддерживает следующие параметры:

`--text`=текст

  Указывает текст, который будет изображён в диалоговом окне (но не в поле ввода).

`--entry-text`=текст

  Указывает текст, который будет изображён в поле ввода диалогового окна.

`--hide-text`

  Скрывает текст в поле ввода диалогового окна.

Следующий сценарий является примером того, как можно создать диалоговое окно ввода текста:

            #!/bin/sh

            if zenity --entry \
            --title="Добавить запись" \
            --text="Введите пароль:" \
            --entry-text "password" \
            --hide-text
              then echo $?
              else echo "Пароль не введён\"
            fi

### Пример диалогового окна ввода текста

Zenity пример диалогового окна ввода текста

## Диалоговое окно текстовой информации

Используйте параметр `--text-info`, чтобы создать диалоговое окно текстовой информации.

Диалоговое окно текстовой информации поддерживает следующие параметры:

`--filename`=имя_файла

  Указывает имя файла, который будет загружен в окно текстовой информации.

`--editable`

  Позволяет редактирование изображённого текста. Отредактированный текст возвращается в стандартный поток, после того, как диалоговое окно будет закрыто.

Следующий сценарий является примером того, как можно создавать диалоговое окно текстовой информации:

            #!/bin/sh

            FILE=`zenity --file-selection \
              --title="Выберите файл"`

            case $? in
                     0)
                            zenity --text-info \
                              --title=$FILE \
                              --filename=$FILE \
                              --editable 2>/tmp/tmp.txt;;
                     1)
                            echo "Файл не выбран.";;
                    -1)
                            echo "Файл не выбран.";;
            esac

### Пример диалогового окна текстовой информации

Zenity пример диалогового окна текстовой информации