Startpagina » hoe » Hoe eenvoudige grafische shellscripts te maken met Zenity op Linux

    Hoe eenvoudige grafische shellscripts te maken met Zenity op Linux

    Zenity voegt grafische interfaces toe aan shell-scripts met een enkele opdracht. Shell-scripts zijn een geweldige manier om repetitieve taken te automatiseren, maar ze zijn normaal gesproken beperkt tot de terminal - Zenity haalt ze uit de terminal en op uw bureaublad.

    We hebben in het verleden een introductie gegeven over shell scripting. Je hoeft geen programmeur te zijn om aan de slag te gaan met shell-scripts - ze vereisen weinig meer dan kennis van Linux-terminalopdrachten.

    Zenity krijgen

    Zenity wordt standaard geleverd met Ubuntu. Als u een Ubuntu-derivaat gebruikt, zoals Kubuntu, moet u dit mogelijk handmatig installeren met de volgende opdracht:

    sudo apt-get install zenity

    Zenity is een onderdeel van GNOME, dus het zou al moeten worden opgenomen in Linux-distributies die het GNOME-bureaublad gebruiken. Controleer uw pakketbeheerder voor de zenity pakket als je het niet hebt.

    Zenity gebruiken

    Je kunt vanaf de terminal spelen met Zenity. Stel dat u een foutvenster wilt maken wanneer er een probleem optreedt met uw shellscript. Hier is een voorbeeldcommando dat u zou kunnen gebruiken:

    zenity -error -title = "Er is een fout opgetreden" -text = "Er is een probleem opgetreden tijdens het uitvoeren van het shell-script."

    Voer de opdracht uit en u ziet een venster met het bericht.

    Zet deze enkele opdracht in je shellscript op de juiste plaats en je hebt een grafische foutmelding. U kunt ook variabelen gebruiken om meer informatie over de fout op te nemen.

    Laten we zeggen dat je een ja of nee vraag wilt stellen. Je zou een commando zoals dit kunnen gebruiken:

    zenity -question -title = "Query" -text = "Wilt u het script uitvoeren?"

    Je kunt het ja of nee-antwoord in je shell-script vangen en verschillende opdrachten uitvoeren op basis van de knop waarop de gebruiker klikt.

    Er is ook een dialoogvenster voor tekstinvoer:

    zenity -entry -title = "Favoriete website" -text = "Wat is uw favoriete website?"

    Vang de invoer van de gebruiker in een shellscript en je zou het als een variabele kunnen opslaan.

    Er is ook een keuzelijst met bestanden, een kalender en andere soorten dialoogvensters. Raadpleeg de handleiding van Zenity voor een volledige lijst met dialoogtypen en hun opties.

    Een voorbeeldscript

    Laten we proberen Zenity te gebruiken om een ​​eenvoudig grafisch shellscript te maken. Met slechts drie opdrachten kunnen we een grafisch timerprogramma maken:

    #! / Bin / bash
    # Dit script vraagt ​​de gebruiker een tijdje, wacht op het opgegeven aantal
    # tijd, en toont een waarschuwingsdialoog.

    TIME = $ (zenity -entry -title = "Timer" -text = "Voer een tijdsduur in voor de timer. \ N \ n Gebruik 5s gedurende 5 seconden, 10m gedurende 10 minuten of 2 uur voor 2 uur.")

    slaap $ TIJD

    zenity -info -title = "Timer voltooid" -text = "De timer is voltooid. \ n \ n Het was $ TIME."

    We gebruiken wat extra trucs hier. We krijgen de waarde van de TIME-variabele van de eerste zenity-opdracht en voeren deze naar de slaapopdracht. We gebruiken ook / n om nieuwe tekstregels te maken in de zenity-dialogen.

    Na het opslaan van het shellscript en het uitvoeren van de chmod + x commando erop om het uitvoerbare rechten te geven, we kunnen het starten.

    Voer een duur in en het script zal de standaard gebruiken slaap commando om op de achtergrond af te tellen. Wanneer de timer van het slaapcommando is voltooid, geeft het script het zenity info-bericht weer.

    U kunt een bureaublad- of paneelsnelkoppeling voor dit script maken en uitvoeren zonder de terminal te raken.


    Dit is slechts het oppervlak aan het krassen van wat je zou kunnen doen met zenheid; je zou het kunnen gebruiken om veel gecompliceerdere programma's te maken. Als u op zoek bent naar meer informatie over shell-scripting, bekijk dan onze handleiding voor het gebruik van for-lussen in shell-scripts.