GoKi is a tree package based on the Ki interface implemented by the Node struct, supporting arbitrary directed (no loops!) structural trees and standard operations thereon, for primary use in constructing the scenegraph in the GoGi GUI framework. It can also be used for representing file system trees, web DOM trees, or any other such structural tree, which are so commonly used to represent structured information.

GoGi is a 2D and 3D GUI framework, built on GoKi, providing a fully native Go experience, built upon widely-used and familiar standards in the web (CSS-based styling and layout, SVG-based vector graphics) and other GUIs (e.g., the Qt Widget and model-view framework).

GoGi has feature parity (or better) compared to the industry standard Qt framework in most respects, including support for things like tooltips, fully-formatted HTML text with hypertext links, syntax-highlighted text display and full-featured editing, custom keymaps, color preferences (including light and dark mode), etc. The model-view framework uses reflection to render complex structured GUI elements like edit dialogs, tables, lists, choosers, etc based on standard Go structured types (struct, slices, map), including a TreeView based on Ki trees, with a full-featured FileTree and FileTreeView for file system trees.

The 3D framework supports a standard scenegraph-based framework that can import standard Collada .obj files, and custom dynamic 3D display elements. This 3D scenegraph can be embedded anywhere in the 2D scenegraph, and another 2D scenegraph can also be embedded within that 3D scenegraph, allowing nicely rendered, complex 2D GUI controls to be embedded within 3D scenes.

The https://github.com/goki github site has the repositories, full README and wiki docs, etc.

See the GoGi Wiki for more detailed documentation on the GoGi GUI.

There are extensive examples demo applications showing and testing the GUI elements included in the GoGi repository, and the following major applications:

These examples provide a decent codebase to see how to accomplish various things you might want to do.

As of now, GoGi supports full functionality across the three major desktop platforms: Mac, Linux and Windows, but it should be portable to mobile platforms and wasm with a bit of work by an interested party. The vast majority of the system works directly on the standard Go image.Image interface, and it doesn’t use any platform-specific widgets, so it is generally highly portable.

Screenshots

Screenshot of Widgets demo

Screenshot of Gi3D demo

Screenshot of GiEditor, Dark mode