Golang GUI

From Adam Colton
Jump to navigation Jump to search

I've looked around for GUI toolkits for Go before and haven't hit on anything I really like so (classic style) I'll take a crack at my own.

Logic Layer

The logic of the application should be wholly separate from the GUI. The application should register listeners to handle GUI events.

If this is done right, I should be able to plug in many UI tool kits.

Core Toolkits

GTK

I think this is the toolkit I want to go with. Supports the big 3 OS.

I should look at Glade again. If I can make that work, it would save a lot of work because it's close to what I want.

QT

This is more open than I initially thought and possibly better supported. https://www.amazon.com/Hands-GUI-Programming-Qt5-cross-platform-ebook/dp/B075Z3H7DS/

TK

Used in python, maybe?

Electron

I think it requires Node. Unfortunately I think this is the way to go. It also means I'll probably need to learn some Node and modern JS. And I'll need to choose a JS framework like Vue or React.

Wails

Uses Vue or React, so more Node.

Shiny

Both GTK and QT require bindings, which make me a bit nervous. I've already got shiny working once, I could build off this, or re-work it to support native tools.

Canvas Widgets

Kind of hacky, but I could build a custom widget toolkit myself. Then it would work everywhere. Just thinking about getting text working though kind of hurts my head.

Server

This would require getting away from Go, but I could write either a GTK or QT server and then anything could use it. I could do this in Rust.