Skip to content

ismiyati/giu

 
 

Repository files navigation

giu

Cross platform rapid GUI framework for golang based on imgui and the great golang binding imgui-go.

Features

Compare to other imgui golang bindings, giu has following features:

  • Live-update during the resizing of OS window (implemented on GLFW 3.3 and OpenGL 3.2).
  • Redraw only when user event occurred. Costs only 0.5% CPU usage with 60FPS.
  • Declarative UI (see examples for more detail).
  • Drop in usage, no need to implement render and platform.
  • Freetype font rendering support.
  • OS clipboard support.

Screenshot

Hello world

package main

import (
    "fmt"

    g "github.com/AllenDang/giu"
)

func onClickMe() {
    fmt.Println("Hello world!")
}

func onImSoCute() {
    fmt.Println("Im sooooooo cute!!")
}

func loop(w *g.MasterWindow) {
    g.SingleWindow(w, "hello world", g.Layout{
        g.Label("Hello world from giu"),
        g.Line(
            g.Button("Click Me", onClickMe),
            g.Button("I'm so cute", onImSoCute)),
        })
}

func main() {
    wnd := g.NewMasterWindow("Hello world", 400, 200, false, nil)
    wnd.Main(loop)
}

Here is result.

Helloworld

Projects using giu

PipeIt is a text transformation, conversion, cleansing and extraction tool.

PipeIt Demo

About

Cross platform rapid GUI for golang based on imgui

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 77.5%
  • C 13.1%
  • Go 9.4%