Viale Europa, 43. Lignano Sabbiadoro (UD)
Viale Europa, 43. Lignano Sabbiadoro (UD)
Quando si sviluppano software desktop multi-piattaforma, una delle principali problematiche è sempre l’interfaccia grafica.
Ogni sistema operativo ha la propria libreria grafica e quindi la strada corretta sarebbe sviluppare con gli strumenti nativi per ogni sistema operativo.
Naturalmente questo rende la produzione del software più lenta in quanto bisogna occuparsi di più software, uno per sistema operativo.
Ci sono soluzioni commerciali come le QT che vengono in aiuto da questo punto di vista. Ma naturalmente i costi di licenza posso essere un problema.
Per fortuna esistono soluzioni opensource e grazie alle comunity questi progetti possono diventare maturi ed essere tranquillamente utilizzati in software professionali.
Un esempio sono proprio le GTK, che arrivate alla versione 4.0 rendono questo progetto molto interessante.
Progetti come questi, offrono anche diversi bindings per diversi linguaggi di programmazione.
Quindi non ci resta che creare la nostra prima applicazione GTK utilizzando il nostro linguaggio di programmazione preferito: GO.
Il nostro obbiettivo è creare una semplice applicazione che possa funzionare su Linux e su macOS. Quindi per prima cosa dobbiamo installare le librerie necessarie.
Su linux (Ubuntu):
sudo apt install libgtk-4-dev
Su macOS:
brew install gtk4 gtk+3 gobject-introspection pkg-config
Ora possiamo scrivere il nostro software. Per poter usare le GTK in GO facciamo riferimento a questo progetto: gotk4.
Creiamo quindi il nostro file mygtkapp.go
A questo punto ci basterà semplicemente eseguire il codice
go run -v mygtkapp.go
E sul nostro computer comparirà una finestrella con la scritta centrale.
Naturalmente questo è un semplicissimo programma, ma qualora avessimo bisogno di un’interfaccia più elaborata possiamo fare riferimento al progetto Cambalache un tool che ci permettere di disegnare la nostra UI in modo molto più pratico e di esportare in formato XML che grazie al Builder delle GTK è possibile integrarlo nel nostro codice.