Tommy van Leeuwen edited this page May 4, 2018 · 25 revisions

A visual exploration of Go GUI Options

This is a list of my personal explorations of some Go GUI libs and packages during 2018.

This list is biased towards feature-rich cross platform native GUI kits offering lots of widgets and features out of the box. There are a lot more webviews/html/js/css packages, but i didn't research them as they are not in my area of interest.

Conclusion: Not a single package is as feature rich and nice looking as Qt. But using Qt has severe licensing limitations when building closed-source commercial apps. If you don't mind an oldfashioned look you might want to use the Wx and GTK packages. Newer JS/CSS packages might provide more flexibility and modernism, but come with less widgets out of the box, and you really still need html/js/css skills most of the time. The platform native ui toolkit from Andlabs looks promising but only supports basic widgets, good enough for a lot of smaller apps.

See also awesome-go for a nicely maintained list of GUI packages.

Index

OpenGL/SDL/Immediate Mode/GPU Based

go-imgui

nuklear

nanogui-go

  • This is a port of nanogui
  • Pros: Looks nice
  • Cons: This port doesn't seem that really maintained, but nanogui itself does.

eweygewey

  • Pros: Looks promising
  • Cons: Not really actively developed.

GXUI

  • Pros: Someone actually willing to try to maintain and fork this
  • Cons: Not really maintained, looks like crap.

HTML/Javascript/CSS/Electron Based

go-sciter

  • Bindings package for sciter
  • Pros: Actively developed, based on sciter which has business customers.
  • Cons: html/css based, might have a commercial license

vecty

Astilectron

  • Pros: Actively maintained, modern project, has packaging + bundling support.
  • Cons: Javascript/CSS, comes without actual widgets for a GUI
  • 2nd screenshot from GroupMatcher build using astilectron.

app

  • Platform: OSX/Web
  • Pros: Active development
  • Cons: No windows/linux support

QT Based

therecipe/qt

  • License: LGPL
  • Has Packaging & Bundling Support
  • Pros: Pretty much your only option for decent GUIs as of today
  • Cons: License restrictions, no commercial license available, can be used for open-source projects only, see FAQ
  • Notes: See an example project using hot reloading of qml files at https://github.com/amlwwalker/got-qt
  • 2nd screenshot from Qt website.

go-qml

qt.go

  • Another Qt bindings package for Go.
  • Cons: Also LGPL

Native Libraries

andlabs ui

  • Platform: Native Windows/OSX, GTK on linux.
  • Pros: Platform native, linux/win/osx.
  • Cons: Mixed activity, small team, has only basic widgets but much potential.
  • More Screenshots: https://github.com/andlabs/libui

duit

  • Pros: Crossplatform
  • Cons: Needs some dependencies

Other Platforms

wxgo

  • Platform: wxWidgets
  • License: Custom wxWindows license

walk

gotk3

  • Platform: GTK

Bonus: Terminal Based (TUI)

See this blog post for a better comparison of TUI's.

tview

  • High level TUI implementation using tcell
  • Pros: All you need, has window management and text input support.
  • Cons: No charts support.

termui

  • Pros: Has charts support.
  • Cons: Lacks text input, not maintained, you need a fork to get it running.

gocui

tui-go

  • Also based on tcell, Inspired by Qt

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.