Go - biblioteci UI

Recent am avut nevoie sa imi fac un mic utilitar GUI linux. Am vrut sa folosesc Go pentru acest utilitar si am inceput sa caut biblioteci/bindinguri pentru gtk/qt, etc.

Cerintele mele sunt:

  • am nevoie de chestii normale de UI (checkbox, dropdown, etc)
  • decoratiunile sa fie luate “nativ” din tema sistemului

Toate sunt abandonate? S-a mai lovit cineva de asta?

P.S. a involuat cumva scena de UI-uri pentru desktop? Adica, trebuie sa ma intorc 10 ani si sa refolosesc un Qt Creator ca sa am un designer de UI drag and drop?

Salut Floris,

Din pacate realizarea de aplicatii GUI pentru Go nu s-a dezvoltat niciodata serios pentru ca nu a fost sustinuta de marile companii. Daca ne gandim la lipsa unui mecanism OOP avansat in Go e de inteles. Pe de alta parte scopul pentru care a aparut Go a fost din start zona de server programming.

Exista niste proiecte mai mult sau mai putin dezvoltate dar avand in vedere ca un toolkit GUI necesita o munca imensa multiplatforma, cele mai multe dintre ele, chiar daca functioneaza, cu siguranta au lipsuri mari. Am pus mai jos niste referinte desi probabil ai dat si tu de ele…

1 Like

Pentru proiecte pe Windows cred că walk merită evaluat.

Cu Fyne am incercat intr-un final si mi s-a parut mai ok.

Ce am mai incercat:

go-gtk3, dar nici nu a pornit hello-world-ul.

Gio ui cu care am reusit sa fac majoritatea lucrurilor dar la care am renuntat in momentul in care am vrut sa fac o mini stilizare a UI-ului si era totul peste mana si am reinceput totul in Fyne.

Va scriu cum a mers cu Fyne dupa ce fac mai mult progres.

2 Likes

Fyne-ui este singurul fara batai de cap. Implementat nativ in go fara librarii externe si alte prostii sau cu limite la platforme. Esti gata de lucrat in cateva minute.

Singurul dezavantaj este un consum de memorie mai ridicat. In medie cat o aplicatie realizata pe baza de Electron (Chrome). ~200-300mb.

Intretinut si dezvoltat in mod activ. Ruleaza pana si pe android/ios nu doar desktop.

1 Like

Salutare, sunt curios daca poti dezvolta pe tema asta. Avand in vedere structs, pointer receivers, value receivers, embedding, interfaces mi se pare destul de ok din punct de vedere OOP-ish. Defapt mi se pare mult mai sanatos decat un limbaj ca Java cu mostenirile si implementarile interfetelor.

In alta ordine de idei, majoritatea solutiilor in afara de solutiile de brower spawning (a la Electron) mi se par destul de greoaie / primitive in ziua de astazi. Personal nu as mai avea rabdare sa stau sa implementez ceva ce ar fi putut fi facut in 2 minute cu CSS si HTML.

Eu cred ca nimeni nu are rabdarea, dar trebuie cum s-ar zice. Cand vrei sa ti se aprinda aplicatia instant, de exemplu.

Da, Go nu este in sine un limbaj orientat obiect dar dispune de elementele necesare scrierii de aplicatii intr-un stil orientat obiect. Totusi acest suport nu este nativ ceea ce inseamna ca anumite elemente trebuie construite sau simulate. Acest lucru face dezvoltarea de aplicatii OOP dificila la un moment dat.

Un limbaj orientat OOP nativ e mult mai prietenos cu aceste principii si are suport explicit pentru mostenire, incapsulare, polimorfism, overloading, etc.

Si eu sunt un fan al acestui limbaj dar am constatat ca lipsa unor elemente native nu il face atractiv pentru genul acesta de aplicatii. Un alt aspect este ca o foarte mare parte din programamtori fie nu au inteles gandirea din spatele limbajului Go si nu l-au acceptat fie daca au inteles-o au contestat-o ceea ce a scazut si mai mult rata de adoptie pentru acest segment de aplicatii.