Enterprise-Grade GUI Toolkit for Go
Modern widgets, reactive state, GPU-accelerated rendering
Join the Discussion: Help shape the future of Go GUI! Share your ideas, report issues, and discuss features at our GitHub Discussions.
gogpu/ui is a reference implementation of a professional GUI library for Go, designed for building:
- IDEs (GoLand, VS Code class)
- Design Tools (Photoshop, Figma class)
- CAD Applications
- Professional Dashboards
- Chrome/Electron Replacement Apps
| Feature | gogpu/ui | Fyne | Gio |
|---|---|---|---|
| CGO-free | Yes | No | Yes |
| WebGPU rendering | Yes | OpenGL | Direct GPU |
| Reactive state | Signals | Binding | Events |
| Layout engine | Flexbox + Grid | Custom | Flex |
| Virtualization | Yes | Limited | Manual |
| IDE docking | Yes | No | No |
Phase 0 Foundation is complete! Core packages are implemented and tested.
| Package | Description | Coverage |
|---|---|---|
geometry |
Point, Size, Rect, Constraints, Insets | 100% |
event |
MouseEvent, KeyEvent, WheelEvent, Modifiers | 100% |
widget |
Widget interface, WidgetBase, Context, Canvas, Color | 100% |
internal/render |
Canvas implementation using gogpu/gg | 96.5% |
internal/layout |
Flex, Stack, Grid layout engines | 89.9% |
Total: ~10,261 lines of code with 95%+ average test coverage
- Phase 1: MVP with signals integration and window support
- API refinement based on community feedback
Watch/Star the repo to follow development!
┌─────────────────────────────────────────────────────────────┐
│ User Application │
├─────────────────────────────────────────────────────────────┤
│ theme/material3 │ theme/fluent │ theme/cupertino │
│ (Planned) │ (Planned) │ (Planned) │
├─────────────────────────────────────────────────────────────┤
│ widgets/ │ docking/ │ animation/ │
│ Button, TextField│ DockingHost │ Animation, Spring │
│ (Planned) │ (Planned) │ (Planned) │
├─────────────────────────────────────────────────────────────┤
│ layout/ │ state/ │
│ VStack, HStack, Grid, Flexbox │ Signals │
│ (Internal ✅) │ (Planned) │
├─────────────────────────────────────────────────────────────┤
│ widget/ │ event/ │
│ Widget, WidgetBase, Context │ Mouse, Keyboard │
│ (Complete ✅) │ (Complete ✅) │
├─────────────────────────────────────────────────────────────┤
│ geometry/ │ internal/render │ internal/layout │
│ Point, Rect │ Canvas impl │ Flex, Stack, Grid │
│ (Complete ✅) │ (Complete ✅) │ (Complete ✅) │
├─────────────────────────────────────────────────────────────┤
│ gogpu/gg │ gogpu/gogpu │ coregx/signals │
│ 2D Graphics │ Windowing │ State Management │
└─────────────────────────────────────────────────────────────┘
package main
import (
"fmt"
"github.com/gogpu/gogpu"
"github.com/gogpu/ui/layout"
"github.com/gogpu/ui/widgets"
"github.com/coregx/signals"
)
func main() {
app := gogpu.NewApp(gogpu.Config{
Title: "My Application",
Width: 1280,
Height: 720,
})
// Reactive state
count := signals.New(0)
// Declarative UI
root := layout.VStack(
widgets.Text("Counter Demo").FontSize(24),
layout.HStack(
widgets.Button("-").OnClick(func() {
count.Set(count.Get() - 1)
}),
widgets.Text(signals.Computed(func() string {
return fmt.Sprintf("Count: %d", count.Get())
})),
widgets.Button("+").OnClick(func() {
count.Set(count.Get() + 1)
}),
).Spacing(8),
widgets.TextField().
Placeholder("Enter text...").
Width(300),
).Spacing(16).Padding(24)
app.SetRoot(root)
app.Run()
}Note: This is the target API design. Foundation is complete, widgets are in development.
- Geometry types (Point, Size, Rect, Constraints)
- Event system (Mouse, Keyboard, Wheel, Focus)
- Widget interface and WidgetBase
- Canvas interface and implementation
- Layout engine (Flex, Stack, Grid)
- Color type with utilities
- Signals integration (coregx/signals)
- Basic primitives (Box, Text, Image)
- Public layout API
- Theme system foundation
- Window integration (gogpu/gogpu)
- Button, TextField, Label
- Checkbox, Radio, Switch
- Slider, Progress
- Dropdown, Select
- Material Design 3 theme
- List, Table, Tree (virtualized)
- Tabs, Accordion, SplitView
- Animation engine
- ScrollView with physics
- IDE-style docking
- Drag & drop
- Accessibility (WCAG 2.1 AA)
- Additional themes (Fluent, Cupertino)
| Dependency | Purpose | Status |
|---|---|---|
| Go 1.25+ | Language runtime | Required |
| gogpu/gg | 2D graphics rendering | ✅ Integrated |
| gogpu/gogpu | Windowing and GPU abstraction | Phase 1 |
| coregx/signals | Reactive state management | Phase 1 |
go get github.com/gogpu/ui@latestNote: Currently provides foundation packages only. Full widget library coming in v0.1.0.
| Phase | Version | Description | Status |
|---|---|---|---|
| Phase 0 | v0.0.x | Foundation: geometry, event, widget, layout | ✅ Complete |
| Phase 1 | v0.1.0 | MVP: Signals, primitives, windowing | 🔄 In Progress |
| Phase 2 | v0.2.0 | Beta: Widgets, Material 3 | Planned |
| Phase 3 | v0.3.0 | RC: Virtualization, animation | Planned |
| Phase 4 | v1.0.0 | Production: Docking, a11y, themes | Planned |
Full details: ROADMAP.md
| Project | Description | Purpose |
|---|---|---|
| gogpu/gg | 2D graphics | Canvas API, scene graph, GPU text |
| gogpu/wgpu | Pure Go WebGPU | Vulkan, Metal, GLES, Software backends |
| gogpu/gogpu | Graphics framework | GPU abstraction, windowing, input |
| gogpu/naga | Shader compiler | WGSL → SPIR-V, MSL, GLSL |
Total ecosystem: 200K+ lines of Pure Go — no CGO, no Rust, no C.
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
Ways to contribute:
- Design discussions in GitHub Discussions
- API feedback and suggestions
- Documentation improvements
- Code contributions (see open issues)
MIT License — see LICENSE for details.
gogpu/ui — Enterprise-grade GUI for Go
Part of the GoGPU ecosystem
