Как отображать диалоги GUI в скрипте bash с помощью Zenity
На этой странице
- Предпосылки
- Установить Zenity
- Общие параметры Zenity
- Окно сообщений Zenity
- 1. Информационное диалоговое окно
- 2. Диалоговое окно ошибки
- 3. Диалоговое окно вопроса
- 4. Диалоговое окно с предупреждением
- Календарь
- Диалоговое окно ввода текста
- Диалоговое окно со списком
- Диалоговое окно выбора цвета
- Диалоговое окно выбора файла
- Диалоговое окно Прогресс
Все мы знаем, что bash-скрипты Linux — настоящая сила Linux. Часто мы хотим отображать в наших сценариях графический интерфейс пользователя (GUI), чтобы упростить взаимодействие с пользователями. GUI делает любой скрипт более удобным и красивым.
Для GTK в сценариях оболочки в Linux доступно множество опций и инструментов.
В этой статье мы покажем вам, как использовать Zenity для отображения диалоговых окон с графическим интерфейсом в сценариях Bash.
Zenity — это приложение с открытым исходным кодом для отображения простого графического интерфейса в сценариях оболочки. Это делает сценарии более удобными для пользователя, отображая диалоги GTK+. Zenity — удобный инструмент командной строки для написания современных сценариев оболочки. Zenity — это простое в использовании и кроссплатформенное приложение.
Предпосылки
Пользователь sudo с привилегиями root.
Установить Зенити
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 независимо. Общие параметры: --title, --window-icon, --width, --height, --timeout.
Вы можете использовать параметр ---title, чтобы указать заголовок диалогового окна.
Вы можете использовать параметр --window-icon, чтобы указать значок, который будет использоваться в качестве значка для диалогового окна Zenity.
Кроме того, вы можете установить ширину и высоту диалогового окна Zenity, установив параметры --width и --height в команде Zenity.
Используя параметр --timeout, вы можете установить время ожидания диалога, после которого диалоговое окно автоматически закрывается.
Окно сообщений Zenity
Вы можете создать простой и красивый диалог сообщения с графическим интерфейсом, используя простую команду Zenity из терминала.
В Zenity доступно четыре типа диалога сообщений.- Информация
- Ошибка
- Вопрос
- Предупреждение
1. Информационное диалоговое окно
Вы можете создать информационное диалоговое окно, выполнив следующую команду в терминале:
zenity --info --text="Software Update Available." --width=500
2. Диалоговое окно ошибки
Выполните следующую команду, чтобы отобразить диалоговое окно ошибки
zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200
3. Диалоговое окно вопроса
Вы можете легко запросить «Да» без вопросов, выполнив следующую команду:
zenity --question --text="Do you want to reboot pc?" --width=200
#/bin/bash
touch demo.txt
if zenity --question --title="Confirm deletion" --text="Are you sure you want to demo.txt file?" --no-wrap
then
rm demo.txt
zenity --info --title="Success" --text="demo.text was removed" --no-wrap
fi4. Диалоговое окно с предупреждением
zenity --warning --title="Update Available" --text="OS Update required" --width=200
Уведомление
Вы можете отображать уведомления с помощью Zenity.
zenity --notification --text "Good Morning"
Поля ввода Zenity
Используя Zenity, вы можете создавать простые диалоговые окна, которые принимают ввод от пользователя и отображают его как стандартный вывод.
Вот несколько полей ввода:
Календарь
Диалоговое окно «Календарь» отображает календарь и возвращает выбранную пользователем дату в качестве стандартного вывода.
zenity --calendar
Output:
17/04/21Диалог ввода текста
Вы можете использовать параметр --entry для создания диалогового окна ввода текста. Это очень полезно, когда вы хотите попросить пользователя ввести текст.
zenity --entry --title "User Info" --text "Please enter your name"
Диалог списка
Вы можете использовать параметр --list для создания диалогового окна с несколькими столбцами. Здесь вам нужно ввести данные для диалогового окна списка столбец за столбцом, строка за строкой. Вы можете использовать флажок или rediobox с диалоговым окном списка, как показано ниже:
zenity --list --title "Choose Processor" --radiolist --column "ID" --column="Name" 1 AMD 2 Intel
Вы также можете установить флажок с параметром --list для множественного выбора.
zenity --list --title "Packages" --list --text "select packages you want to install" --checklist --column "id" --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Output
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# Downloading at \2\/s, ETA \3/' | zenity --progress --title="Downloading File..." --percentage=1 --pulsate
Для большего прогресса выполните следующую команду в терминале
zenity --help-progress
Для получения дополнительных опций Zenity вы можете использовать man Zenity и Zenity --help.
Заключение
В приведенном выше руководстве вы узнали, как написать сценарий bash для отображения диалоговых окон графического интерфейса с помощью Zenity и сделать сценарий Bash более удобным для пользователя. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.