GUI dialoogvensters in bash script weergeven met Zenity

We weten allemaal dat Linux bash scripts een echte kracht van Linux zijn. Vaak willen we in onze scripts een grafische gebruikersinterface (GUI) weergeven om de interactie met gebruikers te vergemakkelijken. GUI maakt elk script gebruiksvriendelijker en mooier.

Voor GTK in shell scripts zijn er in Linux veel mogelijkheden en gereedschappen beschikbaar.

In dit artikel laten we je zien hoe je Zenity kunt gebruiken om GUI dialoogvensters in Bash scripts te tonen.

Zenity is een open-source toepassing voor het weergeven van eenvoudige GUI in shell scripts. Het maakt scripts gebruiksvriendelijker door GTK+ dialoogvensters te tonen. Zenity is een handig command-line gereedschap voor moderne shell scripting. Zenity is gemakkelijk te gebruiken en een cross-platform toepassing.

Vereisten

Een sudo gebruiker met root voorrechten.

Installeer Zenity

Zenity is een onderdeel van de GNOME desktop en wordt standaard op de meeste Linux distributies geïnstalleerd. Je kunt de installatie van Zenity op je systeem controleren door het volgende commando in de terminal uit te voeren.

zenity --version

Als Zenity niet op je systeem geïnstalleerd is, kun je het installeren met Apt, dnf of pacman commando.

Voor Ubuntu/Debian gebaseerde systemen:

sudo apt-get install zenity

Voor RedHat gebaseerde systemen :

dnf install zenity

Voor Arch gebaseerde systemen:

pacman -S zenity

Zenity Algemene opties

Er zijn enkele Algemene opties die onafhankelijk met Zenity gebruikt kunnen worden. Algemene opties zijn –title, –window-icon, –width, –height, –timeout

Je kunt de optie —title gebruiken om een titel voor het dialoogvenster op te geven.

Je kunt de optie –window-icon gebruiken om een pictogram op te geven dat als pictogram voor het Zenity Dialoogvenster gebruikt zal worden.

Niet alleen dat, maar je kunt ook de breedte en hoogte voor het Zenity Dialoogvenster instellen door –width en –height opties in te stellen in het Zenity commando.

Met de –timeout optie kun je een timeout van het dialoog instellen, waarna het dialoogvenster automatisch gesloten wordt.

Zenity Berichtenbox

Je kunt een aantal eenvoudige en mooie GUI berichtendialogen maken met eenvoudige Zenity commando’s vanuit de terminal.

Vier soorten berichtendialogen die in Zenity beschikbaar zijn.

  • Informatie
  • Fout
  • Vraag
  • Waarschuwing .

1. Een Informatie Dialoogvenster

Je kunt een Informatie Dialoogvenster maken door het volgende commando in terminal uit te voeren:

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

Toon info tekst dialoog met bash script

2. Een fout dialoogvenster

Voer het volgende commando uit om een error dialoogvenster te tonen

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

Foutdialoog tonen met bash script

3. Een vraag dialoogvenster

Je kunt gemakkelijk een ja of nee vraag stellen door het volgende commando uit te voeren:

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

Dialoogvensters in bash
Je kunt Zenity Vraag Dialoog gebruiken in shell script zoals dit:

#/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. Een waarschuwingsvenster

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

Bash toon waarschuwingsdialoogvenster

Melding

Je kunt meldingen weergeven met Zenity.

zenity --notification --text "Good Morning"

Toon bureaublad meldingen in Gnome met bash scripts

Zenity Invoervakken

Met Zenity kun je eenvoudige dialoogvensters maken die invoer van de gebruiker aannemen en die als standaard uitvoer weergeven.

Hier zijn enkele invoervakken:

Kalender

Kalender Dialoogvenster toont een kalender en geeft de door de gebruiker geselecteerde datum als standaard uitvoer.

zenity --calendar
Output:
17/04/21

Kalenderinvoer van bash script

Tekst invoer dialoogvenster

Je kunt de optie –entry gebruiken om een tekst invoer dialoogvenster te maken. Het is erg handig wanneer je de gebruiker wilt vragen wat tekst in te voeren.

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

Lijst dialoogvenster

Je kunt de –list optie gebruiken om een dialoog met meerdere kolommen te maken, Hier moet je de gegevens voor de lijstdialoog kolom per kolom, rij per rij invoeren. Je kunt selectievakje of rediobox gebruiken bij lijstdialoogvensters zoals hieronder:

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

Lijst Dialoogvenster

Je kunt ook selectievakje met –lijst optie geven voor meervoudige selectie.

Keuzevakjes met bash

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

Kleurenselectie dialoogvenster

Je kunt –kleur-selectie optie gebruiken om kleurkeuze waarde van de gebruiker op te nemen.

zenity --color-selection --show-palette

Bash script kleurenkiezer

Bestand selectie dialoogvenster

Je kunt de –file-selection optie gebruiken om geselecteerde bestanden of mappen als standaard uitvoer op te nemen. Je kunt ook bestanden opslaan met de –file-selection optie.

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

Open bestandskeuzedoos vanuit bash

Voortgangsvenster

Je kunt een mooie voortgangsbalk maken met –progress optie. Dit is vaak handig, wanneer je de gebruiker de voortgangsbalk van de voltooiing van je toepassing of script wilt laten zien.

Onderstaand commando met toont je download voortgangsbalk.

(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

Voor meer voortgangsoptie voer je het volgende commando in terminal uit

zenity --help-progress

Voor meer Zenity opties kun je man Zenity en Zenity –help gebruiken.

Conclusie

In de bovenstaande gids heb je geleerd hoe ty je met Zenity een bash script kunt schrijven om GUI dialoogvensters te tonen en Bash script gebruiksvriendelijker te maken. Voel je vrij me te vragen als je vragen hebt.