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

Отображение информационного текстового диалога с помощью bash-скрипта

2. Окно диалога об ошибке

Выполните следующую команду, чтобы отобразить окно диалога об ошибке:

zenity --error --text="Ошибка при установке" --title="Ошибка" --width=500 --height=200

Показать диалог об ошибке с помощью bash-скрипта

3. Окно диалога с вопросом

Вы можете легко задать вопрос с ответом «Да» или «Нет», выполнив следующую команду:

zenity --question --text="Вы хотите перезагрузить ПК?" --width=200

Диалоговые окна в bash
Вы можете использовать диалог с вопросом 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  
fi

4. Окно диалога с предупреждением

zenity --warning --title="Доступно обновление" --text="Требуется обновление ОС" --width=200

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

Уведомление

Вы можете отображать уведомления с помощью Zenity.

zenity --notification --text "Доброе утро"

Вводные окна Zenity

С помощью Zenity вы можете создавать простые диалоговые окна, которые принимают ввод от пользователя и отображают его в стандартном выводе.

Вот некоторые вводные окна:

Календарь

Диалоговое окно календаря отображает календарь и возвращает выбранную пользователем дату в стандартный вывод.

zenity --calendar
Вывод:  
17/04/21

Ввод календаря из bash-скрипта

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

Вы можете использовать параметр –entry, чтобы создать диалог ввода текста. Это очень полезно, когда вы хотите попросить пользователя ввести какой-то текст.

zenity --entry --title "Информация о пользователе" --text "Пожалуйста, введите ваше имя"

Диалог списка

Вы можете использовать параметр –list, чтобы создать диалог с несколькими колонками. Здесь вам нужно ввести данные для диалога списка колонка за колонкой, строка за строкой. Вы также можете использовать флажки или радиокнопки с диалоговым окном списка, как показано ниже:

zenity --list  --title "Выберите процессор" --radiolist  --column "ID" --column="Имя" 1 AMD 2 Intel

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

Вы также можете дать флажки с параметром –list для множественного выбора.

Опции с флажками в bash

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

Выбор цвета в bash-скрипте

Диалог выбора файла

Вы можете использовать параметр –file-selection, чтобы захватить выбранные файлы или директории в стандартный вывод. Вы также можете сохранить файл с помощью параметра –file-selection.

zenity --file-selection --multiple --filename "/"

Открыть окно выбора файла из bash

Диалог прогресса

Вы можете создать красивую полосу прогресса, используя параметр –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-скрипт более удобным для пользователей. Не стесняйтесь задавать мне вопросы, если у вас есть какие-либо.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.