Поиск по сайту:

Как отображать диалоги GUI в скрипте bash с помощью Zenity


На этой странице

  1. Предпосылки
  2. Установить Zenity
  3. Общие параметры Zenity
  4. Окно сообщений Zenity
    1. 1. Информационное диалоговое окно
    2. 2. Диалоговое окно ошибки
    3. 3. Диалоговое окно вопроса
    4. 4. Диалоговое окно с предупреждением

    1. Календарь
    2. Диалоговое окно ввода текста
    3. Диалоговое окно со списком
    4. Диалоговое окно выбора цвета
    5. Диалоговое окно выбора файла
    6. Диалоговое окно Прогресс

    Все мы знаем, что 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
    fi

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

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