AllenDang / Giu
Licence: mit
Cross platform rapid GUI framework for golang based on Dear ImGui.
Stars: ✭ 862
Programming Languages
golang
3204 projects
Projects that are alternatives of or similar to Giu
Dearpygui
Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies
Stars: ✭ 6,631 (+669.26%)
Mutual labels: cross-platform, gui, imgui
Hello imgui
Hello, Dear ImGui: cross-platform Gui apps for Windows / Mac / Linux / iOS / Android / Emscripten with the simplicity of a "Hello World" app
Stars: ✭ 120 (-86.08%)
Mutual labels: cross-platform, gui, imgui
Autopy
A simple, cross-platform GUI automation module for Python and Rust.
Stars: ✭ 522 (-39.44%)
Mutual labels: cross-platform, gui
Layout
Single-file library for calculating 2D UI layouts using stacking boxes. Compiles as C99 or C++.
Stars: ✭ 551 (-36.08%)
Mutual labels: gui, imgui
Imgui Go
Go wrapper library for "Dear ImGui" (https://github.com/ocornut/imgui)
Stars: ✭ 499 (-42.11%)
Mutual labels: gui, imgui
Iconfontcppheaders
C, C++ headers and C# classes for icon fonts: Font Awesome, Fork Awesome, Material Design, Kenney game icons and Fontaudio
Stars: ✭ 509 (-40.95%)
Mutual labels: gui, imgui
Guilite
✔️The smallest header-only GUI library(4 KLOC) for all platforms
Stars: ✭ 5,841 (+577.61%)
Mutual labels: cross-platform, gui
Cvui
A (very) simple UI lib built on top of OpenCV drawing primitives
Stars: ✭ 619 (-28.19%)
Mutual labels: gui, imgui
Qt.go
Qt binding for Go (Golang) aims get Go's compile speed again.
Stars: ✭ 487 (-43.5%)
Mutual labels: cross-platform, gui
Nigui
Cross-platform desktop GUI toolkit written in Nim
Stars: ✭ 430 (-50.12%)
Mutual labels: cross-platform, gui
Gwen Nolegacy Opentk Renderer
A C# port of the GWEN GUI library, with an OpenTK renderer
Stars: ✭ 26 (-96.98%)
Mutual labels: cross-platform, gui
Nuklear
A single-header ANSI C immediate mode cross-platform GUI library
Stars: ✭ 5,055 (+486.43%)
Mutual labels: gui, imgui
Uikit Cross Platform
Cross-platform Swift implementation of UIKit, mostly for Android
Stars: ✭ 421 (-51.16%)
Mutual labels: cross-platform, uikit
Nodegui
A library for building cross-platform native desktop applications with Node.js and CSS 🚀. React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org
Stars: ✭ 7,324 (+749.65%)
Mutual labels: cross-platform, gui
Imgui
Bloat-free Immediate Mode Graphical User interface for JVM with minimal dependencies (rewrite of dear imgui)
Stars: ✭ 394 (-54.29%)
Mutual labels: gui, imgui
Imguifiledialog
File Dialog for ImGui : https://github.com/aiekick/ImGuiFileDialog
Stars: ✭ 398 (-53.83%)
Mutual labels: cross-platform, imgui
giu
Cross platform rapid GUI framework for golang based on Dear ImGui and the great golang binding imgui-go.
Any contribution (features, widgets, tutorials, documents and etc...) is appreciated!
Supported Platforms
giu is built upon GLFW v3.3, so idealy giu could support all platforms that GLFW v3.3 supports.
- Windows (only tested on Windows 10 x64)
- MacOS (only tested on MacOS v10.15)
- Linux (thanks remeh to test it)
- Raspberry pi 3b (thanks sndvaps to test it)
Features
Compare to other Dear ImGui golang bindings, giu has following features:
- Small executable file size (<3mb after upx compression for the example/helloworld demo).
- 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).
- DPI awareness (auto scale font and UI to adapte high DPI monitor).
- Drop in usage, no need to implement render and platform.
- OS clipboard support.
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() {
g.SingleWindow("hello world").Layout(
g.Label("Hello world from giu"),
g.Line(
g.Button("Click Me").OnClick(onClickMe),
g.Button("I'm so cute").OnClick(onImSoCute),
),
)
}
func main() {
wnd := g.NewMasterWindow("Hello world", 400, 200, g.MasterWindowFlagsNotResizable, nil)
wnd.Run(loop)
}
Here is result.
Document
Check Wiki
Contribution
All kinds of pull request (document, demo, screenshots, code, etc...) are more then welcome!
Projects using giu
PipeIt
PipeIt is a text transformation, conversion, cleansing and extraction tool.
NVTool
NVTool is a video encoding tool based on NVEncC.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].