hoe eenvoudige grafische shell scripts te maken met zenity op linux

Zenity voegt grafische interfaces om scripts shell met een enkel commando. Shell scripts zijn een geweldige manier om repetitieve taken te automatiseren, maar ze zijn meestal beperkt tot de terminal – Zenity brengt hen uit de terminal en op uw bureaublad.

We hebben een inleiding tot scripting shell in het verleden gegeven. Je hoeft niet naar een programmeur aan de slag met shell scripts – ze vereisen weinig meer dan kennis van Linux terminal commando’s.

Zenity wordt geleverd met Ubuntu standaard. Als u een Ubuntu-derivaat zoals Kubuntu te gebruiken, moet u wellicht handmatig installeren met het volgende commando

sudo apt-get install zenity

Zenity is een onderdeel van GNOME, dus het moet nu al worden opgenomen in Linux distributies die de GNOME desktop te gebruiken. Controleer uw package manager voor de zenity pakket als je het niet hebt.

U kunt spelen met Zenity van de terminal. Laten we zeggen dat u een foutmelding te maken wanneer zich een probleem voordoet met uw shell script. Hier is een voorbeeld commando dat je zou kunnen gebruiken

zenity -Fout -TITLE = “Er is een fout opgetreden” -text = “Er is een probleem opgetreden bij het uitvoeren van het shell script.”

Voer het commando en je zult een venster zien met de boodschap.

Doe dit enkele opdracht in uw shell script op de juiste plaats en je krijgt een grafische foutmelding te hebben. U kunt ook variabelen gebruiken om meer informatie over de fout bevatten.

Laten we zeggen dat je wilt een ja of nee vraag te stellen. U kon een opdracht gebruiken als deze

zenity -question -TITLE = “Query” -text = “Wilt u het script uit te voeren?”

U kunt het ja of nee reactie in uw shell script te vangen en het uitvoeren van verschillende opdrachten op basis van welke knop de gebruiker klikt.

Er is ook een dialoogvenster voor tekstinvoer

zenity -entry -TITLE = “Favorite Website” -text = “Wat is uw favoriete website?”

Vang invoer van de gebruiker in een shell script en je kon opslaan als een variabele.

Er is ook een bestand picker, agenda en andere vormen van dialogen. Voor een volledige lijst van de dialoog types en hun opties, zie Zenity handleiding pagina.

Laten we proberen met behulp van Zenity een eenvoudige grafische shell script te maken. Met slechts drie commando’s, kunnen we een grafische timer programma te maken

#! / Bin / bash; # Dit script vraagt ​​de gebruiker voor een tijd, wacht het opgegeven bedrag; # tijd en toont een waarschuwing dialoog.

TIME = $ (zenity -entry -TITLE = “Timer” -text = “Voer een duur van de timer. \ N \ n Met 5s gedurende 5 seconden, 10 meter gedurende 10 minuten, of 2h 2 uur.”)

slaap $ TIME

zenity -info -TITLE = “Timer Complete” -text = “De timer is voorbij. \ n \ n Het is $ TIME geweest.”

We zijn met behulp van enkele extra trucs hier. We krijgen de waarde van de variabele tijd vanaf het eerste zenity commando en voer het naar de slaap commando. We zijn ook met / n om nieuwe regels tekst in de zenity dialogen te creëren.

Na het opslaan van de shell script en het uitvoeren van de chmod + x commando op om het executable permissies te geven, kunnen we het te lanceren.

Voer een duur en het script zal de standaard slaap commando gebruiken om af te tellen op de achtergrond. Wanneer de sleep timer commando’s is voltooid, zal het script de zenity info bericht weer.

Je kon een desktop of paneel snelkoppeling voor dit script maken en uitvoeren zonder zelfs de terminal aan te raken.

Dit is slechts topje van de ijsberg van wat je zou kunnen doen met zenity, je zou kunnen gebruiken om veel meer ingewikkelde programma’s te maken. Als u op zoek bent naar meer informatie over shell scripting, kijk op onze gids voor het gebruik van loops in shell scripts.

Shit !!! Dat is zo raar!!! Ik was net googlen daarover (GUI voor Shell) en het leren van een aantal artikelen over Zenity !! Volgende keer zal ik mijn RSS-feeds te controleren lijst voor googlen X)

Golf klap!

Shell scripting veranderingen berekenen uit: a) je dingen doet op een computer, om, b) de computer om dingen te doen voor je.

Bash heeft veel coole functies. Mijn bijna 1-stop how-do-I X in bash is de Advanced-Bash Scripting Guide – http://tldp.org/LDP/abs/html/ Het gaat niet om GUI / Zenity, maar we moeten weten dit spul te maken computers van alle soorten werk voor ons.

Een paar echt cool instellingen / opties om uw bash scripts meer bullet proof zijn; * errexit; * pipefail; * trap, * nounset; * errtrace, en dat u variabelen of getallen worden alleen-lezen kan verklaren. Voor meer informatie, hier is een kopie van de meest uitstekende presentatie Michael Potter’s: http://www.uniforum.chi.il.us/slides/bash1.pdf

Ik zag Michael geef deze presentatie vorige maand en ik ben er zeker van waren er subtiele dingen die ik gemist … zelfs met meer dan 15 jaar van shell scripting praktijk.

Geen kdialog?

Yaaaaaahhhhhh !! Op zoek naar iets eenvoudig, maar effectief als deze geïntegreerde een bestand chooser in scripts. Wauw. Wat een koele nut! BEDANKT voor het artikel !!

Dit werkt ook op de Mac met de Fink Project.

@Eric

Yup, KDE-gebruikers kunnen gebruik maken van kdialog. Ik weet zeker dat er andere opties, ook!

Bedankt voor het geven van de meer informatie over de How to Make Simple grafische Shell Scripts met Zenity op Linux en het is nuttig.

Voor degenen die willen vergelijkbare kenmerken zonder een ondersteunende desktop goo-wee (GUI) .; Laten we niet vergeten de ‘dialoog’ pakket. Volgens haar man-page

“Dialog is een programma waarmee je om een ​​verscheidenheid van vragen of meldingen met behulp van dialoogvensters van een shell script te presenteren. Deze types van dialoogvensters worden uitgevoerd (hoewel niet alle noodzakelijk zijn gecompileerd in het dialoogvenster): === kalender, checklist, dselect, editbox, vorm, FSelecteer, gauge, infobox, overgetypt, inputmenu, menu, mixedform, mixedgauge, msgbox (message ), passwordbox, passwordform, pauze, progressbox, Radiolist, tailbox, tailboxbg, tekstvak, timebox en yesno (ja / nee) ”

Geniet; ~~~ 8d, -Dan

Eigenlijk, ‘dialoog’ is gebaseerd op de “grafische terminal” kenmerken van de console of xterm, waar het wordt uitgevoerd;. Voor x86-familie workstation, dat wil zeggen VT100-familie (ANSI v3.64) escape sequences.

Vroeger was er een ‘vloek’ of ‘ncurses’ (niet grafisch) editie van dialoog zijn, maar ik kan het niet meer vinden.

Sorry voor de verwarring, ~~~ 8d, – / Dan

Het dialoogvenster pakket (zeker de ene voorzien van Debian / stabiel) draait prima in een terminal venster. Standaard gebruikt het “tekenen” karakters zijn doos frames presenteren, maar de -ascii-lines optie dwingt om terug te keren tot basisvoorzieningen 7bit ASCII-tekens (+, -, |). Beide methoden lijken het teminfo database om de juiste positionering en tekening karakters, wat een juiste oplossing voor iets schrijven naar een terminal te leiden.

Een snelle controle van de bibliotheken gekoppeld aan dialoog (ldd `soort -p dialog`) toont ook aan dat ncurses is opgenomen, hetgeen niet verrassend is gezien het feit dat het een veel hoger niveau-interface dan de ruwe terminfo library.

Hoop dat dit helpt; Chris

Populaire Britse tv-show Top Gear heeft een ticket wachtlijst zo lang dat het invoeren van de wachtrij van vandaag biedt u een kans op het zien van een live show ergens na 2025.