GUI Scripts · 6 min read · Jan 22, 2026

Aggiungere una semplice GUI agli script shell di Linux con kdialog

Gli script shell sono cose incredibilmente utili. Ti permettono di fare qualcosa di così semplice come creare un comando facile per sostituirne uno più difficile con molti flag, fino a raggruppare molti comandi complessi da eseguire da un cron job. Sono fantastici perché puoi lanciarli rapidamente nel tuo terminale preferito, ma in alcuni casi richiedono di ricordare combinazioni specifiche di flag o opzioni. Se ti trovi in questa situazione, puoi aggiungere alcuni semplici dialoghi GUI per aiutarti a velocizzare il compito da svolgere.

Per utilizzare questo tutorial, avrai bisogno dei seguenti:

  • Accesso a una shell simile a Unix (questo è scritto pensando a bash).
  • macOS e sistemi operativi *nix (come Linux) dovrebbero venire con questo o uno simile.
  • Su Windows, puoi installare l’ambiente CygWin, o sulle versioni recenti di Windows 10 utilizzare il “Windows Subsystem for Linux”
  • Le librerie di base per l’ambiente desktop KDE. Non hai bisogno di tutto, specialmente se hai già un altro DE installato.

Installare kdialog dovrebbe essere necessario solo se hai iniziato con un ambiente desktop diverso da KDE e non hai altre applicazioni KDE sul tuo computer. Fa parte del pacchetto kde-baseapps-bin su Ubuntu, il che significa che è installato per impostazione predefinita su Kubuntu. Su altri derivati, puoi installarlo con il seguente comando nel terminale:

Installare kdialog dal terminale.

sudo apt-get install kde-baseapps-bin

Questo comporterà probabilmente un’installazione considerevole, poiché altre librerie e pacchetti KDE verranno installati insieme ad esso. Ma hey, lo spazio su disco è economico, giusto?

Poiché gli script sono (in generale) destinati a fare le cose automaticamente, avremo bisogno di mostrare questo dialogo solo nelle seguenti situazioni:

  • Se abbiamo bisogno di catturare qualche tipo di input dall’utente, oppure;
  • Se vogliamo mostrare all’utente qualche tipo di feedback in modo evidente (cioè non solo un testo sputato nella riga di comando).

Prendiamo l’esempio di utilizzare un comando per [eseguire il backup del tuo sito Drupal usando drush]. Naturalmente, poiché sei un imprenditore di Internet in erba, non hai solo un sito Drupal—? ne hai tre. Preferiresti non dover eseguire comandi separati quando vuoi eseguire il backup di tutti i tuoi siti, ma allo stesso tempo non vuoi dover ricordare un lungo percorso se vuoi fare uno snapshot di uno solo. Possiamo usare un paio di dialoghi per aiutarci:

  • Presentare all’utente un elenco di siti che possiamo eseguire il backup e chiedere di fare una scelta, e;
  • Mostrare all’utente un messaggio che conferma il risultato, sia esso un successo o un fallimento.

kDialog funziona chiamandolo dalla riga di comando insieme a un tipo di dialogo, qualsiasi parametro che quel tipo possa richiedere e qualsiasi altra opzione come un titolo del dialogo.

Ci sono una buona varietà di tipi di dialogo tra cui scegliere a seconda delle tue esigenze, come segue:

Tipi di kDialog

Tipo di dialogoImmagine di esempioDescrizione
Scatole di messaggio informativoVisualizza una scatola con un pulsante “OK” per chiudere, fornendo un messaggio di testo e un’icona di informazione, avviso o errore “non critico”.
Pop-up passivoQuesto visualizza un messaggio che scomparirà entro pochi secondi, cioè non richiede all’utente di chiuderlo o ignorarlo.
Scatola di messaggio Sì/NoCome le “Scatole di messaggio informativo”, questo visualizza un dialogo con un’icona di informazione/avviso/errore che fornirà anche la selezione dell’utente di “Sì” o “No”.
Scatole di dialogo di inputQuesto fornisce una singola scatola in cui l’utente può digitare del testo.
Scatole di visualizzazione fileQuesto visualizzerà il contenuto di un file (testo semplice) all’interno di una scatola di dialogo.
Scatole di dialogo di menu e selezioneQuesto fornisce un dialogo con un elenco di elementi, consentendo all’utente di fare una o più selezioni: - I dialoghi di menu e radiolist consentono la selezione di un’opzione. - Il dialogo checklist consente la selezione di un’opzione, più opzioni o tutte le opzioni. - Il dialogo combobox consente la selezione di un’opzione utilizzando un menu a discesa.
Scatole di dialogo di selezione fileL’utente può selezionare parte del filesystem, inclusi: - Selezionare file esistenti, con la possibilità di filtrare per nome o tipo di file - Inserire un nuovo nome di un file da salvare/aggiornare - Directory
Dialoghi di progressoL’utente può combinare kDialog con il comando dcop per creare un dialogo che aggiorna l’utente sul progresso di un’operazione.

Esaminando le opzioni sopra, due di esse si distinguono per il loro potenziale:

  • Il “Dialogo checklist” ci permetterà di selezionare uno, o tutti, i nostri siti da eseguire il backup.
  • La “Scatola di messaggio informativo” può essere utilizzata per visualizzare se ciascuno di questi ha avuto successo o meno.

Date queste opzioni, possiamo immaginare il nostro script che appare in questo modo:

SITE1 si trova QUI (rendere questi percorsi completi, non percorsi relativi)
SITE2 si trova LÀ
SITE3 si trova IN UN ALTRO POSTO

display a kDialog con SITE1, SITE2 e SITE3 come opzioni
e dirmi quale/i l'utente sceglie

per ciascuno che l'utente ha scelto:
    eseguire +drush ard+ su quel sito, e
    registrare se è stato un successo o meno.

display un altro +kDialog+ con ciascuno di quei risultati.

Tenendo presente ciò, tuffiamoci subito.

La prima cosa che dovremmo fare è assemblare il comando drush che vogliamo applicare a ciascun sito quando viene selezionato. Supponiamo che tutti i siti siano sullo stesso web host in directory diverse, ma vogliamo memorizzare i backup in una directory comune “backup”. Possiamo usare il seguente:

cd SITE
drush ard --destination=/home/user/backup/SITENAME.tar.gz

Quindi, usando la tua conoscenza della definizione di variabili e dei cicli for, possiamo rendere questo script come segue:

#! /bin/bash

// Nota: crea variabili per contenere i percorsi a tutti i siti
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'

// Nota: crea una variabile per contenere il percorso di destinazione
DESTINATION='/home/user/backup'

// Nota: visualizza un dialogo chiedendo all'utente di selezionare quali siti eseguire il backup
CHOICES=$(kdialog --checklist "Seleziona i siti da eseguire il backup:" 1 "Sito personale" off 2 "Sito aziendale" off 3 "Sito hobby" off)

// Nota: registra un messaggio di successo/fallimento per ciascuna delle scelte restituite dal dialogo
for each in $CHOICES
do
    case {
        1)
            cd $PERSONALSITE
            drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Backup sito personale: Riuscito\n"
            else
                RESULTS += "Backup sito personale: Fallito\n"
            fi
        2)
            cd $BUSINESSSITE
            drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Backup sito aziendale: Riuscito\n"
            else
                RESULTS += "Backup sito aziendale: Fallito\n"
            fi
        3)
            cd $HOBBYSITE
            drush ard --destination=$DESTINATION/myhobbysite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Backup sito hobby: Riuscito\n"
            else
                RESULTS += "Backup sito hobby: Fallito\n"
            fi
    esac

// NOTA: visualizza un dialogo con i risultati di tutte le operazioni di backup.
kdialog --msgbox $RESULTS

Se salviamo questo e lo eseguiamo come descritto nel primo articolo della serie Bash, saremo in grado di eseguire un singolo comando, ottenere un dialogo facile da usare per scegliere il nostro sito, quindi vedere una bella finestra che riporta come è andata.

Sebbene questo script possa certamente essere ottimizzato in un paio di modi, dimostra come puoi utilizzare kdialog per raccogliere alcuni input dell’utente e visualizzare alcuni risultati eseguendo un singolo programma all’interno del tuo script.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.