GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit dialogová okna GUI ve skriptech Bash se Zenity v Linuxu a Unixu

Pokud jde o skriptování bash, všechny skripty jsou zaměřeny hlavně na operace příkazového řádku. Ať už potřebujete vstup od uživatele nebo zobrazit nějaké zprávy, vše se děje přes terminál. Většina lidí, kteří píší skripty pomocí Bash, netuší, že je k dispozici sada nástrojů GUI. V tomto článku se podíváme na jeden takový nástroj s názvem Zenity - jednoduchý program, který vám umožňuje vytvářet grafická (GTK+) dialogová okna v příkazovém řádku a skriptech shellu.

Co je Zenity?

Zenity je přepsáním gdialogu, portu dialogu GNOME, který vám umožňuje vytvářet sadu widgetů pro různé operace, kde mohou uživatelé graficky pracovat se skriptem. Widgety jsou založeny na sadě nástrojů GTK.

Zenity je open source program napsaný pomocí C programovací jazyk. Podporuje Linux, BSD a Windows.

Bez dalších okolků se podívejme, jak zobrazit grafická dialogová okna GTK+ z příkazového řádku a skriptů shellu pomocí Zenity.

Jak nainstalovat Zenity v Linuxu

Nejprve zkontrolujte, zda je zeity nainstalován a dostupný k použití spuštěním následujících příkazů:

$ which zenity
/usr/bin/zenity
$ zenity --version
3.32.0
$ zenity --about

Pokud zeity není ve vaší distribuci nainstalován, spusťte následující příkazy v závislosti na vaší distribuci a nainstalujte jej.

Alpine Linux:

$ sudo apk add zenity

Arch Linux:

$ sudo pacman -S zenity

Fedora, RHEL, CentOS, Alma Linux a Rocky Linux:

$ sudo dnf install zenity

Debian, Ubuntu, Linux Mint, Pop OS:

$ sudo apt install zenity

openSUSE:

$ sudo zypper install zenity

1. Nápověda Zenity a běžné možnosti

Ke každému widgetu je přidružena možnost nápovědy, jejímž prostřednictvím můžete získat sadu podporovaných možností.

Spusťte následující příkaz pro přístup k části nápovědy.

$ zenity --help

Existuje několik běžných možností, které lze použít spolu s jakýmkoli widgetem. Tyto možnosti nejsou povinné, ale pokud je použijete, budete moci změnit chování widgetu.

Chcete-li získat seznam běžných možností, spusťte následující příkaz.

$ zenity --help-general

Jak tyto možnosti fungují, uvidíme v následujících sekcích.

2. Dialogové okno zprávy

V dialogovém okně se zprávou se zobrazí dialogové okno s chybou, varováním, informací a otázkou. V závislosti na situaci musíte použít příslušné dialogové okno ve skriptu.

2.1. Dialogové okno chyby

Chcete-li zobrazit seznam podporovaných možností pro chybové dialogové okno, spusťte následující příkaz:

$ zenity --help-error

Chcete-li ve skriptu zobrazit dialogové okno chyby, použijte následující příkaz. Zde je --error flag vytvoří chybové dialogové okno a --text flag vytiskne textovou zprávu. Z obrázku můžete vidět, že k dialogovému oknu je přidružena ikona chyby.

zenity --error \
       --title "Error Message" \
       --width 500 \
       --height 100 \
       --text "Permission denied. Run with sudo or as root user."

Z obrázku výše můžete také vidět, že některé běžné možnosti jako --width, --height se používají k ovládání geometrie dialogového okna. Příznak --title se používá k tisku dialogového panelu s názvem.

2.2. Dialogové okno upozornění

Chcete-li zobrazit seznam podporovaných možností pro dialogové okno varování, spusťte následující příkaz:

$ zenity --help-warning

Použijte --warning příznak ve skriptu pro zobrazení varovného pole a --text příznak pro zobrazení varovné zprávy.

zenity --warning \
       --title "Warning Message" \
       --width 500 \
       --height 100 \
       --text "Disk space exceeded the threshold limit. Check ASAP."

2.3. Dialogové okno Informace

Chcete-li získat přístup k seznamu podporovaných možností pro informační dialogové okno, spusťte následující příkaz:

$ zenity --help-info

Použijte --info příznak ve skriptu pro zobrazení informačního pole a --text příznak pro zobrazení informační zprávy.

zenity --info \
       --title "Info Message" \
       --width 500 \
       --height 100 \
       --text "Installation completed successfully."

2.4. Dialogové okno otázky

Chcete-li získat přístup k seznamu podporovaných možností pro dialogové okno otázky, spusťte následující příkaz:

$ zenity --help-question

V dialogovém okně otázky se zobrazí zpráva spolu s Ano nebo Ne volba. Pokud stisknete Ano , návratový kód bude "nula" a pro „Ne“ návratový kód bude "jeden" . K zápisu další logiky do skriptů musíte použít výstupní kódy.

zenity --info \
       --title "Info Message" \
       --width 500 \
       --height 100 \
       --text "Installation completed successfully."

3. Dialogové okno pro zadávání textu

Chcete-li zobrazit seznam podporovaných možností pro dialogové okno pro zadávání textu, spusťte následující příkaz:

$ zenity --help-entry

Dialogové okno pro zadávání textu vyzve uživatele k zadání. Příznak --entry použít k vytvoření vstupního dialogového okna. Chcete-li v dialogovém okně zobrazit nějaký text, použijte --text vlajka. Hodnota zadaná do textového pole bude vytištěna v terminálu, jakmile stisknete ok. Pokud chcete dále zpracovávat vstup z textového pole, musíte výstup uložit do proměnné, jak jsem to udělal níže.

$ USR=$(zenity --entry \
       --width 500 \
       --title "check user" \
       --text "Enter the user name"); echo $USR

Pokud si nepřejete, aby byl vstupní text při psaní viditelný, použijte --hide-text vlajka.

$ USR=$(zenity --entry \
       --width 500 \
       --title "check user" \
       --text "Enter the user name" \
       --hide-text); echo $USR

Můžete také nastavit výchozí hodnotu uvnitř vstupního pole pomocí --entry-text vlajka. Musíte odstranit hodnotu a zadat svůj vstup, jinak bude stávající hodnota považována za výchozí.

$ USR=$(zenity --entry \
       --width 500 \
       --title "check user" \
       --text "Enter the user name" \
       --entry-text $USER); echo $USR

4. Dialogové okno hesla

Chcete-li získat přístup k seznamu podporovaných možností pro dialogové okno hesla, spusťte následující příkaz:

$ zenity --help-password

Dialogové okno hesla bude přijímat uživatelské jméno a heslo pomocí --username a --password vlajka. Výstup se zobrazí jako (Uživatelské jméno | Heslo). Výstup příkazu musíte přiřadit proměnné a extrahovat uživatelské jméno a heslo pro další zpracování.

$ zenity --password --username

5. Dialogové okno Textové informace

Chcete-li získat přístup k seznamu podporovaných možností pro dialogové okno textových informací, spusťte následující příkaz:

$ zenity --help-text-info

Dialogové okno textových informací vytiskne libovolný text ze souboru nebo v dialogovém okně otevře adresu URL. Například pro čtení souboru a zobrazení textu použijte parametr --filename . V níže uvedeném příkladu čtu /etc/hosts soubor.

zenity --text-info \
--title "Hostname Information" \
--filename "/etc/hosts"

--checkbox příznak lze použít k získání vstupu od uživatele. Dobrým příkladem by bylo „Přijímám licenční smlouvu“. Pokud toto políčko nezaškrtnete, tlačítko OK bude deaktivováno.

zenity --text-info \
--title "Hostname Information" \
--filename "/etc/hosts" \
--checkbox "This is a checkbox"

6. Dialogové okno Kalendář

Chcete-li zobrazit seznam podporovaných možností pro dialogové okno kalendáře, spusťte následující příkaz:

$ zenity --help-calendar

V dialogovém okně kalendáře se zobrazí kalendář a umožní vám vybrat datum. Výstup musíte uložit do proměnné, jinak se vybrané datum vytiskne v terminálu.

zenity --calendar \
       --title="Select a Date" \
       --text="Select Date to pull the employee record."

Ve výchozím nastavení je vybráno dnešní datum, ale můžeme také vybrat vlastní datum pomocí --day , --month a --year příznaky.

zenity --calendar \
       --title="Select a Date" \
       --text="Select Date to pull the employee record." \
       --year 2015 \
       --month 7 \
       --day 15

Výchozí výstupní formát bude DD\MM\YY . Je také možné vytvořit vlastní výstup data pomocí --date-format vlajka.

zenity --calendar \
       --title="Select a Date" \
       --text="Select Date to pull the employee record." \
       --date-format %m-%d-%y

7. Dialogové okno pro výběr barvy

Chcete-li získat přístup k seznamu podporovaných možností pro dialogové okno pro výběr barvy, spusťte následující příkaz:

$ zenity --help-color-selection

Dialog pro výběr barvy zobrazí paletu a umožní vám vybrat barvu a výstupem bude hodnota RGB. Použijte --color-selection příznak spolu s --show-palette vlajka.

$ COLOR_RGB=$(zenity --color-selection --show-palette)
$ echo $COLOR_RGB

8. Dialogové okno pro výběr souboru

Chcete-li otevřít seznam podporovaných možností pro dialogové okno pro výběr souboru, spusťte následující příkaz:

$ zenity --help-file-selection

Dialog pro výběr souboru vám umožní vybrat soubory nebo adresáře a jako výstup se zobrazí cesta. Příznak --file-selection by měl být použit. Existuje několik příznaků, které lze použít v dialogu pro výběr souboru.

  • --filename => Cesta k výchozímu souboru/adresáři
  • --directory => Pouze adresáře k výběru
  • --multiple => Umožňuje vybrat více názvů souborů
  • --save => Nastavit úsporný režim
zenity --file-selection \
       --title "Select Files" \
       --filename "/home/${USER}/" \
       --multiple

V případě vícenásobného výběru bude cesta k souboru oddělena pomocí "|" symbol.

Je možné nastavit vlastní oddělovač pomocí --separator vlajka. V níže uvedeném příkladu používám dvojtečku (: ) jako oddělovač.

zenity --file-selection \
       --title "Select Files" \
       --filename "/home/${USER}/" \
       --multiple \
       --separator :

9. Dialogové okno Formuláře

Chcete-li získat přístup k seznamu podporovaných možností pro dialogové okno formulářů, spusťte následující příkaz:

$ zenity --help-forms

Dialogové okno formulářů umožňuje vytvářet formuláře. Dobrým příkladem je formulář pro registraci nového uživatele. Použijte --forms příznak pro vytvoření dialogového okna formuláře. Existuje několik dalších příznaků, které lze použít spolu s --forms vlajka.

  • --add-entry => Přidejte nový záznam do dialogového okna formuláře, aby uživatel mohl zadat vstup.
  • --text => Text, který se zobrazí v dialogovém okně.
  • --add-password => Přijímá heslo, ale nezobrazí hodnotu na obrazovce.
  • --calendar => Otevřete kalendář a vyberte z něj datum.

Níže je jednoduchý příklad formuláře pro přihlášení uživatele pomocí dialogového okna formulářů.

zenity --forms \
       --text "Welcome to signup wizard" \
       --add-entry "Enter the first name" \
       --add-entry "Enter the last name" \
       --add-entry "Enter login name" \
       --add-password "Enter password"

Výchozí oddělovač pro vstupní hodnoty je "|" symbol. Můžete si také přizpůsobit oddělovač pomocí --separator vlajka.

10. Dialogové okno průběhu

Chcete-li získat přístup k seznamu podporovaných možností pro dialogové okno ukazatele průběhu, spusťte následující příkaz:

$ zenity --help-progress

Použijte --progress příznak pro vytvoření ukazatele průběhu. Abyste mohli vytvořit ukazatel průběhu, musíte pochopit, jak funguje. Z vaší strany by měly být poskytnuty dva vstupy.

  1. Řádek, který obsahuje pouze číslo s echo příkaz bude považován za procento průběhu.
  2. Řádek, který začíná znakem # symbol v echo příkaz bude vytištěn jako zpráva o průběhu.
(
  echo 10
  echo "# Updating repository Index"
  sleep 5

  echo 15
  echo "# Reading input files"
  sleep 5

  echo 70
  echo "# Installing packages..."
  sleep 5

  echo 100
  echo "# Package Installation completed!"
) | zenity --title "Package Installation Progress Bar" --progress --auto-close

Jakmile je ukazatel průběhu dokončen, můžete pomocí příznaku --auto-close vytvořit dialogové okno, které se automaticky zavře.

11. Dialogové okno seznamu

Chcete-li otevřít seznam podporovaných možností pro dialogové okno seznamu, spusťte následující příkaz:

$ zenity --help-list

Dialogové okno seznamu umožňuje vytvořit seznam řádků a sloupců. Použijte --list příznak pro vytvoření dialogového okna seznamu a --column příznak pro přidání sloupců.

$ zenity --list \
      --column "Player" \
      --column "Club" \
      --column "Country" \
      Messi PSG Argentina \
      Neymar PSG Brazil \
      Ronaldo Manu Portugal

Podívejte se na výše uvedený příklad. Pomocí --column vlajky, vytvořil jsem tři sloupce. Po vytvoření sloupců můžete do dalších řádků zadat hodnotu, která se zobrazí pro každý řádek, jako jsem to udělal na obrázku výše.

V prvním sloupci lze vytvořit zaškrtávací políčko nebo přepínače. Chcete-li vytvořit přepínač, použijte --radiolist flag a pro vytvoření checkboxu použijte --checklist vlajka. Při vytváření seznamu rádií je povinné přidat PRAVDA nebo NEPRAVDA klíčová slova jako první hodnotu pro váš řádek. True vybere radiolist nebo zaškrtávací políčko, zatímco false ponechá políčko nezaškrtnuté.

zenity --list \
      --checklist \
      --column "checkbox" \
      --column "Player" \
      --column "Club" \
      --column "Country" \
      FALSE Messi PSG Argentina \
      FALSE Neymar PSG Brazil \
      FALSE Ronaldo Manu Portugal

Když vyberete řádek a kliknete na ok, hodnota se vytiskne na terminál s (| ) jako oddělovač. Ve výchozím nastavení se na terminál tiskne pouze první sloupec. Chcete-li vytisknout celý řádek, předejte --print-column ALL .

Závěr

Dostali jsme se na konec článku. Stručně jsem vysvětlil, co je to zeity, a různé dostupné widgety, které lze použít. Nemusíte neustále vyžadovat nástroje GUI. Pokud však potřebujete grafické GTK+ widgety v bash skriptování, Zenity se vám bude hodit mezi ostatními nástroji GUI.


Linux
  1. Jak vytvořit Bash skripty pomocí externích proměnných a vložených skriptů

  2. Jak nainstalovat Linux KVM a vytvořit hostovaný virtuální počítač s příklady

  3. Jak vytvořit a spustit kontejnery LXC Linux pomocí příkazů LXC

  1. Jak vytvořit zálohu pomocí příkazu tar v Linuxu

  2. Přidání jednoduchého grafického rozhraní do skriptů prostředí Linux pomocí kdialogu

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

  1. Jak vytvářet a spouštět virtuální počítače Ubuntu s Multipass na Linuxu

  2. Jak zobrazit využití disku s Duf na Linuxu a Unixu

  3. Jak nainstalovat Rclone v Linuxu a Unixu