Skip to content
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

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

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

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

HTML/Javascript/CSS/Electron Based

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

  • 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.

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

QT Based

  • 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.

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

Native Libraries

  • 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

  • Pros: Crossplatform
  • Cons: Needs some dependencies

Other Platforms

  • Platform: wxWidgets
  • License: Custom wxWindows license

  • Platform: GTK

Bonus: Terminal Based (TUI)

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

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

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

  • Also based on tcell, Inspired by Qt