Zoeken op website

Zenity - Creëert grafische (GTK+) dialoogvensters in opdrachtregel- en shell-scripts


GNU Linux, het besturingssysteem gebouwd op een zeer krachtige Kernel genaamd Linux. Linux staat bekend om zijn opdrachtregelbewerkingen. Met de uitvinding van Linux in het dagelijkse computergebruik en desktopcomputers blijft nix niet langer bevooroordeeld ten aanzien van de opdrachtregel, het is evenzeer grafisch, en het ontwikkelen van grafische applicaties blijft niet langer een moeilijke taak.

Hier in dit artikel bespreken we het maken en uitvoeren van een eenvoudig grafisch dialoogvenster met behulp van de GTK+ applicatie genaamd “Zenity“.

Wat is Zeniteit?

Zenity is een open source en platformonafhankelijke applicatie die GTK+ dialoogvensters op de opdrachtregel weergeeft en shell-scripts gebruikt. Het maakt het mogelijk om informatie te vragen en te presenteren aan/van shell in grafische vakken. Met de applicatie kunt u grafische dialoogvensters maken op de opdrachtregel en wordt de interactie tussen gebruiker en shell zeer eenvoudig.

Er zijn andere alternatieven, maar niets is te vergelijken met de eenvoud van Zenity, vooral als je geen complexe programmering nodig hebt. Zenity, een hulpmiddel dat je in handen moet hebben.

Zenity-functies

  1. FOSS-software
  2. Cross-platform-applicatie
  3. Sta uitvoering van het GTK+-dialoogvenster toe
  4. Commandoregelhulpmiddel
  5. Ondersteuning bij Shell-scripting

Bruikbaarheid

  1. Gemakkelijke GUI-creatie
  2. Minder functies dan andere complexe tools
  3. Zorgt ervoor dat shellscripts kunnen communiceren met GUI-gebruikers
  4. Eenvoudige dialoogcreatie is mogelijk voor grafische gebruikersinteractie

Omdat Zenity beschikbaar is voor alle bekende grote platforms en gebaseerd is op de GTK+-bibliotheek, kan het Zenity-programma worden overgezet naar/van een ander platform.

Installatie van Zenity onder Linux

Zentity wordt standaard geïnstalleerd of beschikbaar in de repository van de meeste standaard Linux-distributies van vandaag. U kunt controleren of het op uw machine is geïnstalleerd of niet door de volgende opdrachten uit te voeren.

ravisaive@tecmint:~$ zenity --version 

3.8.0
ravisaive@tecmint:~$ whereis zenity 

zenity: /usr/bin/zenity /usr/bin/X11/zenity /usr/share/zenity /usr/share/man/man1/zenity.1.gz

Als het niet is geïnstalleerd, kunt u het installeren met de opdracht Apt of Yum, zoals hieronder weergegeven.

ravisaive@tecmint:~$ sudo apt-get install zenity		[on Debian based systems]

root@tecmint:~# yum install zenity				[on RedHat based systems]

Bovendien kunt u het ook bouwen vanuit de bronbestanden, download het nieuwste Zenity bronpakket (d.w.z. huidige versie 3.8) met behulp van een volgende link.

  1. http://ftp.gnome.org/pub/gnome/sources/zenity/

Zenity basisdialoogvensters

Enkele van de basisdialogen van Zenity, die rechtstreeks vanaf de opdrachtregel kunnen worden aangeroepen.

1. Wat dacht je van een snel kalenderdialoogvenster?
root@tecmint:~# zenity --calendar

2. Een foutdialoogvenster
root@tecmint:~# zenity --error

3. Een dialoogvenster voor algemene tekstinvoer
root@tecmint:~# zenity --entry

4. Een informatiedialoog
root@tecmint:~# zenity --info

5. Een vraagdialoogvenster
root@tecmint:~# zenity --question

6. Een voortgangsbalk
root@tecmint:~# zenity --progress

7. Dialoogvenster Schaal
root@tecmint:~# zenity --scale

8. Een wachtwoorddialoog
root@tecmint:~# zenity --password

9. Een dialoogvenster Formulier
root@tecmint:~# zenity --forms

10. Een dialoog over
root@tecmint:~# zenity --about

Dialoogvenster Shellscript maken

Nu zouden we het maken van Zenity Dialog hier bespreken met behulp van eenvoudige shell-scripts. Hoewel we een enkele dialoog kunnen creëren door Zenity-opdrachten rechtstreeks vanuit de shell uit te voeren (zoals we hierboven deden), kunnen we geen twee dialoogvensters koppelen om een betekenisvol resultaat te verkrijgen.

Wat dacht je van een interactief dialoogvenster dat input van je vraagt en het resultaat toont.

#!/bin/bash 
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry) 
zenity --info --title="Welcome" --text="Mr./Ms. $first" 
last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry) 
zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

Sla het op in ‘anything.sh‘ (conventioneel) en vergeet niet het uitvoerbaar te maken. Stel 755 toestemming in voor het anything.sh bestand en voer het script uit.

root@tecmint:~# chmod 755 anything.sh 
root@tecmint:~# sh anything.sh

Over scriptbeschrijving

De conventionele shebang oftewel hashbang

#!/bin/bash

In de onderstaande regel is ‘eerste’ een variabele en de waarde van de variabele wordt gegenereerd tijdens runtime.

    1. –entry’ betekent dat zenity wordt gevraagd een tekstinvoervak te genereren.
    2. – title=‘ definieert de titel van het gegenereerde tekstvak.
    3. —text=‘ definieert de tekst die beschikbaar is in het tekstinvoervak.
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry)

Deze regel van het onderstaande scriptbestand is bedoeld voor het genereren van een informatiedialoogvenster (–info), met de titel “Welkom” en de tekst “Mr./Ms.first ”

zenity --info --title="Welcome" --text="Mr./Ms. $first"

Deze regel van het script is vergelijkbaar met regel nummer twee van het script, behalve dat hier een nieuwe variabele ‘laatste’ is gedefinieerd.

last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry)

Deze laatste regel van het script is opnieuw vergelijkbaar met de derde regel van het script en genereert een informatiedialoogvenster dat zowel de variabelen ‘$first’ als ‘$last’ bevat.

zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

Voor meer informatie over hoe u aangepaste dialoogvensters kunt maken met behulp van shell-script, gaat u naar de volgende referentiepagina Zenity.

  1. https://help.gnome.org/users/zenity/stable/

In het volgende artikel zouden we Zenity integreren met meer shellscript voor GUI gebruikersinteractie. Blijf tot die tijd op de hoogte en verbonden met Tecmint. Vergeet niet uw waardevolle feedback te geven in het commentaargedeelte.