Zenity e PyZenity

Alle volte capita di dover visualizzare un’informazione al volo e sarebbe bello se fosse possibile farlo senza troppi sforzi. Quando il mondo dei ‘puter era nuovo (“in the beginning” dice Neal Stephenson) c’era la linea di comando e il comando era echo. Lo è ancora ma oggi si usa l’interfaccia a finestre e il terminale l’utente tipo non lo vede. Non vale recriminare sul bel tempo andato, cioè uno può anche farlo ma non è certo produttivo.
La prima idea per me è stata di costruirmi un equivalente grafico di echo. Anzi ne ho fatto due versioni, la prima utilizzando tcl/tk, poi rimpiazzata da Python per standardizzarmi con me stesso.
Problema risolto? Sì, funziona, è semplice da usare e immediato. Fine 🙂

Non proprio.
Qui potrei fare un lungo discorso sulla serendipity/serendipità ma chi vuole se lo trova bello confezionato su Wikipedia (come sarebbe meno bello il mondo se non ci fosse Wikipedia!). Davvero vi conviene farci un salto, c’è anche questa definizione:

Serendipity is looking in a haystack for a needle and discovering a farmer’s daughter.

dovuta a Julius Comroe Jr., 1976, autore che non conosco ma meriterebbe.

Tornando a bomba cercando altro mi sono imbattuto in Zenity. Chissà quante volte l’ho fatto in passato senza accorgermene, sono lento di comprendonio, quello che a Torino si chiama gnugnu.
Sì esiste una pagina Wiki anche per Zenity, solo in inglese. Ci sono anche un paio di pagine su Gnome, qui e qui sulla Free Software Foundation.

Poi sul web ci sono millemila pagine di esempi, basta googlare.
Oltre alle cose eccezionali demandate al lettore come esercitazione per non privarlo del piacere della scoperta voglio solo far vedere due cosette.
Se devo visualizzare una nota in modo non invasivo posso fare così:

#!/bin/sh
zenity --notification\
    --window-icon="info" \
    --text="Attento: da quanti giorni non fai il backup?"

che produce

(il testo (tooltip) compare solo quando il cursore del mouse è sull’icona, naturalmente).

Forse è troppo piccola e poco appariscente e allora toniamo a echo, anzi aecho. Eccolo:

#!/bin/bash
if [ $# = 1 ]
then
    zenity --info \
        --title="aecho" \
        --text="$1"
elif [ $# = 2 ]
    then
        zenity --info \
            --title="$2" \
            --text="$1"
else
    zenity --$3 \
        --title="$2" \
        --text="$1"
fi

E questi sono i risultati, rispettivamente per:

sh aecho.sh "prova di zenity\npasso solo il testo\ndel messaggio"
sh aecho.sh "prova di zenity\npasso il testo e il titolo\ndel messaggio" "prova di Zenity"
sh aecho.sh "prova di zenity\npasso il testo, il titolo\ne l'icona\ndel messaggio" "prova di Zenity" "error"

Adesso racconto una cosa che mi ha fatto perdere parecchio tempo (sono un po’ troppo gnugnu). Non dimenticate le virgolette attorno a $1 e $2 nello script, altrimenti Zenity visualizza solo la prima parola.

PyZenity
Zenity fa tutto quello che volevo fare e per cui avevo rivoltato mari e monti (non esattamente ma passatemi l’iperbole, solo questa volta, non lo faccio più). Si può volere di più ancora? Ad esempio richiamare le sue funzionalità dentro Python? C’è chi ci ha pensato ed ha fatto un lavoro superlativo: il modulo PyZenity di Brian Ramos.
La pagina di Brian ha tutto: cos’è, download, documentazione.
E aggiunge meraviglia a meraviglia.

Inoltre…
Sembra che PyZenity sia solo per Linux, almeno l’installer. Per Windoze bisognerebbe provare.
Nei commenti al post precedente xxx (bel nick!) mi indicava PyZenity (l’avevo già scoperto) mentre ero indaffarato a cercare la soluzione dell’errore delle quote. E non c’è niente di peggio che le continue interruzioni date dal flusso degli eventi del mondo esterno. I post si devono fare la domenica mattina o, previo recupero di un portatile, imboscandosi, senza portarsi dietro il telefono cellulare 😉

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • xxx  Il 27 ottobre 2010 alle 14:39

    lol
    l’installer di PyZenity và solo su linux, ma su windows se si copia a mano il modulo nella cartella dei moduli di python, và anche lì 😉
    ovviamente bisogna installare zenity anche su windows: http://placella.com/software/zenity/

    • juhan  Il 27 ottobre 2010 alle 14:42

      Grazie delle precisazioni.

  • glipari  Il 27 ottobre 2010 alle 14:48

    Bel post.
    Giusto per completezza: per quelli come me che preferiscono KDE c’è kdialog, più o meno equivalente a zenity, mentre non so se ci sia un equivalente in Python (so che c’è PyQT però).

  • lightuono  Il 29 ottobre 2010 alle 11:16

    Zenity è spettacolare! Usato tantissime volte in molti script basati su Bash per installazione o configurazione del sistema 😉

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: