Home
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.
- OpenGL/SDL/Immediate Mode/GPU Based
- HTML/Javascript/CSS/Electron Based
- Qt Based
- Native Libraries
- Other Platforms
- Bonus: Terminal Based (TUI)
- Bindings package for dear imGui
- Pros: dear imGui itself is very complete and awesome.
- Cons: Couldn't get go-imgui to work, might be due to newer go versions.
- More Screenshots & Awesome Galleries: https://github.com/ocornut/imgui/issues/1607
- Bindings package for nuklear
- Pros: Actively maintained, looks promising, easier to setup than go-imgui
- Cons: Newer and less features than imgui
- More Screenshots: https://github.com/vurtun/nuklear
- 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.
- Bindings package for sciter
- Pros: Actively developed, based on sciter which has business customers.
- Cons: html/css based, might have a commercial license
- Projects using Vecty
- Example Vecty Project
- Pros: Actively maintained, React-like, clean interface, GopherJS
- Cons: You still need to tweak a lot ui/style-wise
- Screenshot is taken from qlql
- 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
- 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.
- License: LGPL
- Cons: License restrictions, very outdated but a lot of new forks are available.
- Screenshot from old example by me https://github.com/tomarus/gohmap
- Another Qt bindings package for Go.
- Cons: Also LGPL
- 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
- Platform: wxWidgets
- License: Custom wxWindows license
- Platform: Windows Only
- Examples: https://github.com/lxn/walk/tree/master/examples
- Platform: GTK
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