Dialog Lezione 1 – Cosa é, e prima finestra

Bene ho deciso di inaugurare un nuovo capitolo nella sezione degli articoli a puntate, questa volta cerchero’ di introdurre uno strumento molto utile per chi scrive degli script bash (soprattutto se si tratta di installer o simili). Si tratta di un tool chiamato “dialog” che permette di creare delle interfacce visuali basate su ncurses.

Molti installer delle principali distribuzioni linux/unix sono scritti utilizzando questo programma. Per esempio l’installer di archlinux, di debian, etc.

Questo tool si presenta sotto forma di comando per la shell, quindi per vedere se lo avete installato provate a digitare il comando:

dialog

Se lo é vi verrá stampato l’help del comando. Che gia di suo fornisce molte informazioni sulle funzionalitá disponibili. Se invece il comando non viene trovato, allora probabilmente lo dovete installare, e come installarlo dipende dalla vostra distribuzione, cmq il nome del pacchetto é appunto dialog. Esiste anche una variante che é basata su X invece di ncurses e si chiama xdialog.

In questa prima lezione vedremo due esempi di finestre molto semplici: la message box e la text box, e alcuni parametri utili.

Dialog viene usatoc ome un qualsiasi comando della shell , vediamo  inizialmente una semplicissima messagebox:

dialog --msgbox "Hello world" 0 0

Il risultato e’ simile al seguente:

 

Un semplice hello world

Semplice no? Spieghiamo meglio gli argomenti:

  • –msgbox indica  al comando dialog di utilizzare la come finestra  una message box (Appunto un box per i messaggi).
  • “Hello world” Questo indica il testo che apparira all’interno
  • 0 Indica l’altezza della finestra (con 0 diciamo al programma di dare automaticamente le dimensioni alla finestra in base alla quantita’ di testo.
  • 0 Rappresenta la larghezza, come sopra con il numero 0 indichiamo una dimensione automatica.

Ora vediamo come  aggiungere un messaggio alla nostra finestra:

dialog --title "First dialog" --msgbox "Hello world" 0 0

Il risultato e’ il seguente

Come vediamo ora la nostra finestra ha un titolo grazie all’opzione –title “Testo del titolo”. Se vogliamo possiamo aggiungere ancora un ulteriore titolo, quello che potremo definire titolo dell’applicazione e che comparira’  sullo sfondo.

Il comando in questo caso (mantenendo i parametri precedenti) e’ il seguente:

dialog --backtitle "Italialinux dialog course" --title "First \
--msgbox "Hello world" 0 0

Con backtitle definiamo il titolo che andra’ a inserirsi nello sfondo della finestra, come nell’immagine seguente:

Come vedete lavorare con le interfacce fornite da dialog e’ molto semplice.  Vediamo ora l’altra finestra di questa lezione. La textbox. In questo caso il messaggio non viene passato da stdin ma tramite un file, per il resto la sintassi resta la stessa.

Quindi per mostrare una textbox il comando sara’ il seguente:

dialog --backtitle "Italialinux dialog course" --title "First dialog" \
--textbox testo.txt 0 0

Dove testo.txt rappresenta il file che contiene il testo che vuole essere mostrato all’interno del box.

Il risultato e’ simile al seguente:

Come vedete anche questo e’ molto semplice. Ora se stiamo facendo un programma di installazione, non vogliamo che il tasto per uscire dalla finestra sia Exit (in quanto un po fuorviante) ma vogliamo sostituirlo con Ok. Anche in questo caso e’ possibile, e anche semplice e ci viene in aiuto l’opzione –exitlabel. Quindi aggiornamo il comando precedente, e avremo:

dialog --backtitle "Italialinux dialog course" --title "First dialog" \
--exit-label "Ok" --textbox testo.txt 0 0

Il risultato sara’ ovviamente:

Come vedete lavorare con le interfacce dialog e’ molto semplice, e puo aiutarci nel fare i nostri script di installazione e/o configurazione per le nostre applicazioni su quasi tutti i principali sistemi unix (per esempio gli esempi mostrati in questa lezione sono stati fatti utilizzando minix).

Per oggi ci fermiamo qua, alla prossima lezione vedremo come funziona la inputbox.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.