GNU/Linux >> Znalost Linux >  >> Linux

Jak zobrazit dialogová okna GUI v bash skriptu pomocí Zenity

Všichni víme, že linuxové bash skripty jsou skutečnou silou Linuxu. Často chceme v našich skriptech zobrazit grafické uživatelské rozhraní (GUI), abychom usnadnili interakci s uživateli. GUI dělá jakýkoli skript uživatelsky přívětivějším a krásnějším.

Pro GTK ve skriptech shellu je v Linuxu k dispozici mnoho možností a nástrojů.

V tomto článku vám ukážeme, jak používat Zenity k zobrazení dialogů GUI ve skriptech Bash.

Zenity je open-source aplikace pro zobrazení jednoduchého GUI ve skriptech shellu. Díky zobrazování GTK+ dialogů jsou skripty uživatelsky přívětivější. Zenity je užitečný nástroj příkazového řádku pro moderní skriptování shellu. Zenity se snadno používá a je multiplatformní aplikací.

Předpoklady

Uživatel sudo s právy root.

Nainstalujte Zenity

Zenity je součástí desktopu GNOME a ve výchozím nastavení je nainstalován na většině distribucí Linuxu. Instalaci Zenity ve vašem systému můžete ověřit provedením následujícího příkazu v terminálu.

zenity --version


Pokud Zenity není na vašem systému nainstalován, můžete jej nainstalovat pomocí Apt , dnf nebo pacman command.

Pro systémy založené na Ubuntu/Debian:

sudo apt-get install zenity

Pro systémy založené na RedHat:

dnf install zenity

Pro systémy založené na Arch:

pacman -S zenity

Obecné možnosti Zenity

Existují některé obecné možnosti, které lze se Zenity použít nezávisle. Obecné možnosti jsou --title, --window-icon, --width, --height, --timeout

Pro zadání názvu dialogového okna můžete použít volbu ---title.

Můžete použít volbu --window-icon k určení ikony, která bude použita jako ikona pro dialogové okno Zenity.

Nejen to, ale můžete nastavit šířku a výšku dialogového okna Zenity nastavením voleb --width a --height v příkazu Zenity.

Pomocí volby --timeout můžete nastavit časový limit dialogu, po kterém se dialogové okno automaticky zavře.

Schránka Zenity Message Box

Pomocí jednoduchého příkazu Zenity z terminálu můžete vytvořit nějaké základní a pěkné dialogové okno zpráv GUI.

V Zenity jsou k dispozici čtyři typy dialogového okna zpráv.
 

  • Informace
  • Chyba
  • Otázka
  • Upozornění

1. Informační dialogové okno

Informační dialogové okno můžete vytvořit spuštěním následujícího příkazu v terminálu:

zenity --info --text="Software Update Available." --width=500


2. Chybové dialogové okno

Provedením následujícího příkazu zobrazíte chybové dialogové okno

zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200


3. Dialogové okno s otázkami

Provedením následujícího příkazu se můžete snadno zeptat na Ano bez otázky:

zenity --question --text="Do you want to reboot pc?" --width=200


V shellovém skriptu můžete použít Zenity Question Dialog takto:

#/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. Dialogové okno varování

zenity --warning --title="Update Available" --text="OS Update required" --width=200

Oznámení

Oznámení můžete zobrazit pomocí Zenity.

zenity --notification --text "Good Morning"

Vstupní pole Zenity

Pomocí Zenity můžete vytvářet jednoduchá dialogová okna, která přebírají vstup od uživatele a zobrazují jej jako standardní výstup.

Zde jsou některá vstupní pole:

Kalendář

Kalendář Dialogové okno zobrazí kalendář a vrátí uživatelem vybrané datum jako standardní výstup.

zenity --calendar
Output:
17/04/21

Dialogové okno pro zadávání textu

Pro vytvoření dialogového okna pro zadávání textu můžete použít volbu --entry. Je to velmi užitečné, když chcete uživatele požádat, aby vložil nějaký text.

zenity --entry --title "User Info" --text "Please enter your name"

Dialogové okno seznamu

Můžete použít volbu --list k vytvoření vícesloupcového dialogu. Zde musíte zadat Data pro dialogové okno seznamu sloupec po sloupci, řádek po řádku. Můžete použít zaškrtávací políčko nebo rediobox s dialogovým oknem seznamu, jak je uvedeno níže:

zenity --list  --title "Choose Processor" --radiolist  --column "ID" --column="Name" 1 AMD 2 Intel

Můžete také zaškrtnout políčko s volbou --list pro vícenásobný výběr.

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

Dialogové okno pro výběr barvy

Můžete použít volbu --color-selection k převzetí hodnoty výběru barvy od uživatele.

zenity --color-selection --show-palette

Dialogové okno pro výběr souboru

Můžete použít volbu --file-selection k zachycení vybraných souborů nebo adresářů jako standardního výstupu. Soubor můžete také uložit pomocí volby --file-selection.

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

Dialogové okno průběhu

Pomocí volby --progress můžete vytvořit pěkný ukazatel průběhu. To je užitečné mnohokrát, když chcete uživateli zobrazit ukazatel průběhu dokončení vaší aplikace nebo skriptu.

Níže příkaz s ukazatelem průběhu stahování.

(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

Pro další postup spusťte následující příkaz do terminálu

zenity --help-progress

Pro více možností Zenity můžete použít man Zenity a Zenity --help .

Závěr

Ve výše uvedené příručce jste se naučili, jak můžete napsat bash skript pro zobrazení dialogů GUI pomocí Zenity a učinit skript Bash uživatelsky přívětivějším. Pokud máte nějaké dotazy, neváhejte se mě zeptat.


Linux
  1. Jak ladit Bash skript?

  2. Jak volat funkci Bash ve skriptu Bash uvnitř Awk?

  3. Jak předat parametry skriptu Bash?

  1. Jak nahradit mezery v názvech souborů pomocí bash skriptu

  2. Jak zobrazit pouze různé řádky pomocí diff (bash)

  3. Jak zkontrolovat přístup k internetu pomocí bash skriptu v linuxu?

  1. Jak zjistit virtualizaci pomocí skriptu Sys::Detect::Virtualization Perl?

  2. Jak analyzovat hlavičky HTTP pomocí Bash?

  3. Jak přidat úlohu crontab do crontab pomocí bash skriptu?