Come visualizzare le finestre di dialogo della GUI nello script bash usando Zenity
Su questa pagina
- Prerequisiti
- Installa Zenity
- Zenity Opzioni generali
- Casella di messaggio Zenity
- 1. Una finestra di dialogo delle informazioni
- 2. Una finestra di dialogo di errore
- 3. Una finestra di dialogo con una domanda
- 4. Una finestra di dialogo di avviso
- Calendario
- Finestra di dialogo per l'immissione di testo
- Finestra di dialogo Elenco
- Finestra di selezione del colore
- Finestra di selezione file
- Dialogo di avanzamento
Sappiamo tutti che gli script bash di Linux sono un vero punto di forza di Linux. Spesso vogliamo visualizzare un'interfaccia utente grafica (GUI) nei nostri script per facilitare l'interazione con gli utenti. La GUI rende qualsiasi script più user-friendly e bello.
Per GTK negli script di shell, ci sono molte opzioni e strumenti disponibili in Linux.
In questo articolo, ti mostreremo come utilizzare Zenity per visualizzare le finestre di dialogo della GUI negli script Bash.
Zenity è un'applicazione open source per la visualizzazione di semplici GUI negli script di shell. Rende gli script più intuitivi visualizzando le finestre di dialogo GTK+. Zenity è un pratico strumento da riga di comando per i moderni script di shell. Zenity è facile da usare e un'applicazione multipiattaforma.
Prerequisiti
Un utente sudo con privilegi di root.
Installa Zenit
Zenity fa parte del desktop GNOME e per impostazione predefinita è installato sulla maggior parte delle distribuzioni Linux. Puoi verificare l'installazione di Zenity sul tuo sistema eseguendo il seguente comando nel terminale.
zenity --version
Se Zenity non è installato sul tuo sistema, puoi installarlo usando il comando Apt, dnf o pacman.
Per sistemi basati su Ubuntu/Debian:sudo apt-get install zenity
Per i sistemi basati su RedHat:
dnf install zenity
Per i sistemi basati su Arch:
pacman -S zenity
Zenity Opzioni generali
Ci sono alcune opzioni generali che possono essere utilizzate con Zenity in modo indipendente. Le opzioni generali sono --title, --window-icon, --width, --height, --timeout
Puoi utilizzare ---title option per specificare un titolo per la finestra di dialogo.
È possibile utilizzare l'opzione --window-icon per specificare un'icona che verrà utilizzata come icona per la finestra di dialogo Zenity.
Non solo, ma puoi impostare larghezza e altezza per la finestra di dialogo Zenity impostando le opzioni --width e --height nel comando Zenity.
Usando l'opzione --timeout puoi impostare un timeout del dialogo, dopo che la finestra di dialogo si è chiusa automaticamente.
Finestra di messaggio Zenity
Puoi creare una finestra di dialogo dei messaggi GUI semplice e piacevole utilizzando il semplice comando Zenity dal terminale.
Quattro tipi di finestra di dialogo dei messaggi disponibili in Zenity.- Informazioni
- Errore
- Domanda
- Attenzione
1. Una finestra di dialogo delle informazioni
È possibile creare una finestra di dialogo delle informazioni eseguendo il seguente comando nel terminale:
zenity --info --text="Software Update Available." --width=500
2. Una finestra di dialogo di errore
Eseguire il seguente comando per visualizzare la finestra di dialogo di errore
zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200
3. Una finestra di dialogo della domanda
Puoi facilmente chiedere Sì o nessuna domanda eseguendo il seguente comando:
zenity --question --text="Do you want to reboot pc?" --width=200
#/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
fi4. Una finestra di dialogo di avviso
zenity --warning --title="Update Available" --text="OS Update required" --width=200
Notifica
È possibile visualizzare la notifica utilizzando Zenity.
zenity --notification --text "Good Morning"
Caselle di input Zenity
Usando Zenity puoi creare semplici finestre di dialogo che prendono l'input dall'utente e lo visualizzano come output standard.
Ecco alcune caselle di input:
Calendario
La finestra di dialogo Calendario visualizza un calendario e restituisce agli utenti la data selezionata come output standard.
zenity --calendar
Output:
17/04/21Finestra di dialogo per l'immissione di testo
È possibile utilizzare l'opzione --entry per creare una finestra di dialogo per l'immissione di testo. È molto utile quando vuoi chiedere all'utente di inserire del testo.
zenity --entry --title "User Info" --text "Please enter your name"
Finestra di dialogo elenco
È possibile utilizzare l'opzione --list per creare una finestra di dialogo a più colonne, qui è necessario inserire i dati per la finestra di dialogo elenco colonna per colonna, riga per riga. È possibile utilizzare la casella di controllo o rediobox con la finestra di dialogo elenco come mostrato di seguito:
zenity --list --title "Choose Processor" --radiolist --column "ID" --column="Name" 1 AMD 2 Intel
Puoi anche fornire una casella di controllo con l'opzione --list per la selezione multipla.
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|FirefoxFinestra di selezione del colore
È possibile utilizzare l'opzione --color-selection per prendere il valore di selezione del colore dall'utente.
zenity --color-selection --show-palette
Finestra di selezione file
È possibile utilizzare l'opzione --file-selection per acquisire file o directory selezionati come output standard. Puoi anche salvare il file usando l'opzione --file-selection.
zenity --file-selection --multiple --filename "/"
Dialogo sull'avanzamento
Puoi creare una bella barra di avanzamento usando l'opzione --progress. Questo è utile molte volte, quando si desidera mostrare all'utente la barra di avanzamento del completamento dell'applicazione o dello script.
Sotto il comando con mostra la barra di avanzamento del download.(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
Per ulteriori opzioni di avanzamento, eseguire il seguente comando nel terminale
zenity --help-progress
Per ulteriori opzioni Zenity puoi usare man Zenity e Zenity --help.
Conclusione
Nella guida sopra, hai imparato come puoi scrivere uno script bash per visualizzare le finestre di dialogo della GUI usando Zenity e rendere lo script Bash più user-friendly. Non esitate a chiedermi se avete domande.