Oggi conosceremo una libreria bash, creata da Metal3D che permette di creare interfacce semi-grafiche molto simili alle curses con la semplicità di bash.
Il programma si chiama bashsimplecurses ed è possibile scaricarlo alla sua pagina Google Code. Purtroppo ancora questa libreria non riesce a sostituire le mitiche curses/ncurses dato che supporta solo la visualizzazione di finestre colorate nello schermo (niente menù e form, ma per questo è possibile usare Dialog). Lo script è stato creato interamente utilizzando le funzioni che ci offre bash (come echo)
Ma non perdiamoci in chiacchiere e vediamo come funziona.
Dopo aver scaricato il pacchetto tar.gz, scompattiamolo e diamo (da root) il comando make install. Dopodichè, copiamo il file simple_curses.sh nella cartella dove salveremo i nostri script.
A questo punto, vediamo come creare le famose finestrelle.

#!/bin/bash

#importo lo script
source $(dirname $0)/simple_curses.sh

#creo la funzione principale
main(){
window "Titolo della finestra"
append "Contenuto"
endwin
}
main_loop

Questo script servirà per creare questo:

Per dare un pò di colore alla nostra finestra, ci basterà specificare dopo il nome della finestra, il colore che vorremmo utilizzare (es “red”) tra

  • red
  • green
  • blue
  • grey

Mentre, per specificare la dimensione della finestra, basterà scrivere la percentuale dopo il colore (o il titolo) (es 50).

I comandi sono i seguenti:

  • window “TITLE” “COLOR” WIDTH = Crea una finestra con Titolo, colore e dimensione
  • append “TEXT” = Inserisce una riga di testo nella finestra
  • append_tabbed “TEXTE” COLS SEP = Inserisce una tabella nella finestra
  • append_file = Inserisce un file nella finestra
  • append_command = Esegue un comando nella finestra
  • addsep = Aggiunge un separatore

Per creare più finestre in uno script, basterà ripetere tutti i comandi ricordando che, con il comando move_up si tornerà in alto mentre col_right porterà la nuova finestra a sinistra. Per capirci questo:

#!/bin/bash

source $(dirname $0)/simple_curses.sh

main(){
window “Test 1” “red” “33%”
append “Prima finestra”
endwin

col_right
move_up

window “Test 2” “red” “33%”
append “Linea 1”
append “Linea 2”
endwin

window “Test 3” “red” “33%”
append “Testo, testo e ancora testo”
endwin
window “Test 4” “grey” “33%”
append “Esempio di comando”
append “`date`”
append “Ecco la data di oggi”
endwin

col_right
move_up
window “Test 5” “red” “34%”
append “Aggiungiamo delle piccole finestre!”
endwin

window “Little” “green” “12%”
append “Finestrella 1”
endwin
col_right
window “Other window” “blue” “22%”
append “Finestrella 2”
endwin

}
main_loop

Ed ecco il risultato:

Comodo, no?

Questo articolo è stato preso dal sito Digilinux di matrobriva secondo i termini della licenza Creative Commons BY 2.5.
L’articolo originale si trova alla pagina: http://digilinux.altervista.org/articoli/bashcurses.html
  • Ch3o

    Mah da profano, mi sono trovato benissimo con zenity…

  • Fausto Sclocchini

    E’ bello vedere come la proverbiale disponibilità di LFFL contribuisca di volta in volta a creare situazioni piacevoli come questa….mi riferisco al clima bellissimo delle feste con vecchi e nuovi amici in casa. Gli articoli di matrobriva sono nuovi e interessanti il sito Digilinux s cui riportano sono pieni di novità.
    Questo clima di ospitalità mi fà citare quanto segue:
    “E’ solo quando si è perfettamente d’accordo sul già noto, che si può proseguire insieme verso l’ignoto”
    Un “abbraccio” a tutti,Fausto.

    • Grazie Fausto, in effetti anche io trovo un bel clima in questo blog… posterò al più presto nuovi articoli!

  • Luigi

    Rimanendo nell’ambito di questo interessantissimo articolo, vorrei segnalare
    un tool per aggiungere velocemente form e/o menu curses a script shell:
    CCFE (Curses Commend Frontend), http://freshmeat.net/projects/ccfe
    Tra l’altro ha licenza GPL ed e’ sviluppato da un italiano…

    Saluti a tutti

No more articles