Simple Bash Curses
Oggi conosceremo una libreria bash, creata da Metal3D che permette di creare interfaccie semi-grafiche similissime 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/bashQuesto script servirà per creare questo:
#importo lo script
source $(dirname $0)/simple_curses.sh
#creo la funzione principale
main(){
window "Titolo della finestra"
append "Contenuto"
endwin
}
main_loop
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
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
#!/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?