Applicazioni GTK con Vala

Posted on Sep 21, 2021

Ho appena concluso un esperimento. L’obiettivo era esplorare un linguaggio nuovo di mio interesse, cercando di implementare subito qualcosa di concreto.

Il linguaggio in oggetto è Vala e il risultato di questa brevissima esplorazione si chiama pommy.

L’esperimento, mettendo assieme i vari spezzoni di tempo investiti, è durato circa una giornata di lavoro.

Cos’è Vala

Vala è un linguaggio orientato agli oggetti con una sintassi molto simile a C#. Il suo compilatore trasforma la sintassi Vala in linguaggio C e da questo produce il codice macchina.

Attualmente il linguaggio è alla versione 0.54.1 (pubblicata il 21-09-2021), ma il linguaggio esiste già dal 2006. Nonostante l’attuale versione sia lontana dalla 1.0 esistono parecchie applicazioni sviluppate con questo linguaggio.

Perchè Vala

Sono interessato a creare delle applicazioni e widget GTK in ambiente Linux.

Per raggiungere questo risultato avrei potuto:

  • Utilizzare C, ma non ho dimestichezza col linguaggio e non volevo affrontare una curva di apprendimento troppo ripida per arrivare a un risultato concreto.
  • Utilizzare Python che ben supporta GTK e presenta un buon numero di risorse ed esempi in rete, ma volevo creare un eseguibile.
  • Utilizzare Go, ma mi sembra che il supporto GTK sia piuttosto immaturo.
  • Utilizzare Rust, ma anche qui avrei dovuto superare una curva di apprendimento abbastanza ripida.

Ho deciso di esplorare Vala perchè è un linguaggio creato dalla GNOME Foundation con lo scopo di permettere l’implementazione di applicazioni native Gnome (quindi GTK) ad alto livello. Vala è per questo motivo molto integrato con le librerie GTK e permette di essere subito operativi.

Impressioni sull’esperienza

Alcune considerazioni a caldo dopo questa piccola maratona.

L’esperienza è risultata abbastanza complessa, probabilmente molto ha giocato la mia inesperienza nello sviluppo desktop Linux e in particolare di GTK.

La documentazione ufficiale su Vala si può trovare su www.valadoc.org. Per quanto riguarda l’ecosistema di librerie che circonda il linguaggio ho trovato la documentazione ancora immatura: difficile reperire molte informazioni o esempi in rete (quello che si trova spesso è anche parecchio vecchio), non c’è una standardizzazione della documentazione nelle librerie che rende difficile la ricerca per un neofita (ad esempio in Elm - linguaggio alla versione 0.19 - la struttura della documentazione dell’ecosistema è standard e quindi di facile accesso).

Mi ha aiutato molto seguire vari esempi in Python per capire come utilizzare le notifiche e come implementare l’indicatore stesso.

A questo si sono sommati vari problemi non dovuti strettamente al linguaggio ma all’implementazione nelle varie versioni di desktop manager. Per fare un esempio concreto ho sviluppato il codice su una macchina virtuale con XFCE e ho perso parecchio tempo a capire come mai non riuscivo a far visualizzazione un’etichetta per l’indicatore. Ho capito successivamente che il pannello XFCE non supporta etichette ma solo icone, mentre su MATE (che è il mio desktop manager di riferimento) le etichette sono pienamente supportate. La prossima volta svilupperò su un ambiente identico a quello di destinazione.

Nel prossimo futuro proverò a implementare qualche altra piccola applicazione utilizzando Vala.

Pommy

Pommy è un timer per misurare la durata di un’attività. Implementa un indicatore che si posiziona nella barra delle notifiche del proprio desktop manager e presenta una notifica allo scadere della sessione di attività.

Prende spunto da gtk-pomo-indicator un’applicazione python che utilizzo da anni per dividere la mia giornata lavorativa in sessioni di attività, seguendo alcuni concetti della tecnica del pomodoro.

Pommy è pubblicata con licenza GPLv3 e disponibile qui.