Bash скрипты · 4 min read · Nov 10, 2025
Как отображать диалоги GUI в bash-скрипте с помощью Zenity

Мы все знаем, что bash-скрипты в Linux — это настоящая сила Linux. Часто мы хотим отображать графический интерфейс (GUI) в наших скриптах, чтобы упростить взаимодействие с пользователями. GUI делает любой скрипт более удобным и красивым.
Для GTK в оболочках доступно множество опций и инструментов в Linux.
В этой статье мы покажем вам, как использовать Zenity для отображения диалогов GUI в bash-скриптах.
Zenity — это приложение с открытым исходным кодом для отображения простого GUI в оболочках. Оно делает скрипты более удобными для пользователей, отображая диалоги GTK+. Zenity — это удобный инструмент командной строки для современных скриптов оболочки. Zenity прост в использовании и является кросс-платформенным приложением.
Предварительные требования
Пользователь sudo с правами root.
Установка Zenity
Zenity является частью рабочего стола GNOME и по умолчанию установлен на большинстве дистрибутивов Linux. Вы можете проверить установку Zenity в вашей системе, выполнив следующую команду в терминале.
zenity --versionЕсли Zenity не установлен в вашей системе, вы можете установить его с помощью команд Apt, dnf или pacman.
Для систем на базе Ubuntu/Debian:
sudo apt-get install zenityДля систем на базе RedHat:
dnf install zenityДля систем на базе Arch:
pacman -S zenityОбщие параметры Zenity
Существуют некоторые общие параметры, которые можно использовать с Zenity независимо. Общие параметры: –title, –window-icon, –width, –height, –timeout.
Вы можете использовать параметр —title, чтобы указать заголовок для окна диалога.
Вы можете использовать параметр –window-icon, чтобы указать значок, который будет использоваться в окне диалога Zenity.
Кроме того, вы можете установить ширину и высоту для окна диалога Zenity, установив параметры –width и –height в команде Zenity.
Используя параметр –timeout, вы можете установить тайм-аут для диалога, после чего окно диалога автоматически закроется.
Окно сообщения Zenity
Вы можете создать несколько базовых и красивых диалогов сообщений GUI, используя простую команду Zenity из терминала.
Четыре типа диалогов сообщений доступны в Zenity.
- Информация
- Ошибка
- Вопрос
- Предупреждение
1. Окно информационного диалога
Вы можете создать окно информационного диалога, выполнив следующую команду в терминале:
zenity --info --text="Доступно обновление программного обеспечения." --width=500
2. Окно диалога об ошибке
Выполните следующую команду, чтобы отобразить окно диалога об ошибке:
zenity --error --text="Ошибка при установке" --title="Ошибка" --width=500 --height=200
3. Окно диалога с вопросом
Вы можете легко задать вопрос с ответом «Да» или «Нет», выполнив следующую команду:
zenity --question --text="Вы хотите перезагрузить ПК?" --width=200
Вы можете использовать диалог с вопросом Zenity в скрипте оболочки следующим образом:
#/bin/bash
touch demo.txt
if zenity --question --title="Подтвердите удаление" --text="Вы уверены, что хотите удалить файл demo.txt?" --no-wrap
then
rm demo.txt
zenity --info --title="Успех" --text="demo.text был удален" --no-wrap
fi4. Окно диалога с предупреждением
zenity --warning --title="Доступно обновление" --text="Требуется обновление ОС" --width=200Уведомление
Вы можете отображать уведомления с помощью Zenity.
zenity --notification --text "Доброе утро"Вводные окна Zenity
С помощью Zenity вы можете создавать простые диалоговые окна, которые принимают ввод от пользователя и отображают его в стандартном выводе.
Вот некоторые вводные окна:
Календарь
Диалоговое окно календаря отображает календарь и возвращает выбранную пользователем дату в стандартный вывод.
zenity --calendarВывод:
17/04/21
Диалог ввода текста
Вы можете использовать параметр –entry, чтобы создать диалог ввода текста. Это очень полезно, когда вы хотите попросить пользователя ввести какой-то текст.
zenity --entry --title "Информация о пользователе" --text "Пожалуйста, введите ваше имя"Диалог списка
Вы можете использовать параметр –list, чтобы создать диалог с несколькими колонками. Здесь вам нужно ввести данные для диалога списка колонка за колонкой, строка за строкой. Вы также можете использовать флажки или радиокнопки с диалоговым окном списка, как показано ниже:
zenity --list --title "Выберите процессор" --radiolist --column "ID" --column="Имя" 1 AMD 2 Intel
Вы также можете дать флажки с параметром –list для множественного выбора.

zenity --list --title "Пакеты" --text "выберите пакеты, которые хотите установить" --checklist --column "id" --column "Имя" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"Вывод
Google Chrome|VLC|FirefoxДиалог выбора цвета
Вы можете использовать параметр –color-selection, чтобы получить значение выбора цвета от пользователя.
zenity --color-selection --show-paletteДиалог выбора файла
Вы можете использовать параметр –file-selection, чтобы захватить выбранные файлы или директории в стандартный вывод. Вы также можете сохранить файл с помощью параметра –file-selection.
zenity --file-selection --multiple --filename "/"
Диалог прогресса
Вы можете создать красивую полосу прогресса, используя параметр –progress. Это полезно во многих случаях, когда вы хотите показать пользователю полосу прогресса выполнения вашего приложения или скрипта.
Ниже приведенная команда покажет вам полосу прогресса загрузки.
(wget -r --no-parent patch -A.tar.gz http://157.245.99.119/latest/ -P /tmp 2>&1 ) | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+\.\) \(.*\)/\1\n# Загружается на \2\/с, ETA \3/' | zenity --progress --title="Загрузка файла..." --percentage=1 --pulsateДля получения дополнительных параметров прогресса выполните следующую команду в терминале:
zenity --help-progressДля получения дополнительных опций Zenity вы можете использовать man Zenity и Zenity –help.
Заключение
В приведенном выше руководстве вы узнали, как написать bash-скрипт для отображения диалогов GUI с помощью Zenity и сделать bash-скрипт более удобным для пользователей. Не стесняйтесь задавать мне вопросы, если у вас есть какие-либо.
Get new posts in your inbox
No spam. Unsubscribe anytime.

