{"id":42458316,"url":"https://github.com/gogpu/ui","last_synced_at":"2026-01-28T09:10:13.593Z","repository":{"id":330466992,"uuid":"1110749464","full_name":"gogpu/ui","owner":"gogpu","description":"Pure Go GUI toolkit built on GoGPU — widgets, layouts, styling","archived":false,"fork":false,"pushed_at":"2025-12-25T19:50:44.000Z","size":36,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-27T04:07:44.732Z","etag":null,"topics":["go","golang","gui","ui","webgpu","widgets","zero-cgo"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gogpu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-05T16:58:07.000Z","updated_at":"2025-12-26T02:21:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gogpu/ui","commit_stats":null,"previous_names":["gogpu/ui"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gogpu/ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogpu%2Fui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogpu%2Fui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogpu%2Fui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogpu%2Fui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gogpu","download_url":"https://codeload.github.com/gogpu/ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogpu%2Fui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28843215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T07:39:25.367Z","status":"ssl_error","status_checked_at":"2026-01-28T07:39:24.487Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","gui","ui","webgpu","widgets","zero-cgo"],"created_at":"2026-01-28T09:10:12.271Z","updated_at":"2026-01-28T09:10:13.587Z","avatar_url":"https://github.com/gogpu.png","language":"Shell","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/gogpu/.github/main/assets/logo.png\" alt=\"GoGPU Logo\" width=\"120\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003egogpu/ui\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eEnterprise-Grade GUI Toolkit for Go\u003c/strong\u003e\u003cbr\u003e\n  Modern widgets, reactive state, GPU-accelerated rendering\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gogpu/ui/actions\"\u003e\u003cimg src=\"https://github.com/gogpu/ui/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/gogpu/ui\"\u003e\u003cimg src=\"https://img.shields.io/badge/status-foundation-brightgreen\" alt=\"Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://go.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go\" alt=\"Go Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/gogpu/gogpu/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/gogpu/gogpu?style=flat\u0026labelColor=555\u0026color=yellow\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/gogpu/gogpu/discussions\"\u003e\u003cimg src=\"https://img.shields.io/github/discussions/gogpu/gogpu?style=flat\u0026labelColor=555\u0026color=blue\" alt=\"Discussions\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003e **Join the Discussion:** Help shape the future of Go GUI! Share your ideas, report issues, and discuss features at our [GitHub Discussions](https://github.com/orgs/gogpu/discussions/18).\n\n---\n\n## Overview\n\n**gogpu/ui** is a reference implementation of a professional GUI library for Go, designed for building:\n\n- **IDEs** (GoLand, VS Code class)\n- **Design Tools** (Photoshop, Figma class)\n- **CAD Applications**\n- **Professional Dashboards**\n- **Chrome/Electron Replacement Apps**\n\n### Key Differentiators\n\n| Feature | gogpu/ui | Fyne | Gio |\n|---------|----------|------|-----|\n| **CGO-free** | Yes | No | Yes |\n| **WebGPU rendering** | Yes | OpenGL | Direct GPU |\n| **Reactive state** | Signals | Binding | Events |\n| **Layout engine** | Flexbox + Grid | Custom | Flex |\n| **Virtualization** | Yes | Limited | Manual |\n| **IDE docking** | Yes | No | No |\n\n---\n\n## Status: Extensibility Foundation (v0.0.x → v0.1.x)\n\n\u003e **Phase 0 Foundation complete + Phase 1.5 Extensibility 83% done!**\n\n### Implemented Packages\n\n| Package | Description | Coverage |\n|---------|-------------|----------|\n| `geometry` | Point, Size, Rect, Constraints, Insets | 100% |\n| `event` | MouseEvent, KeyEvent, WheelEvent, Modifiers | 100% |\n| `widget` | Widget interface, WidgetBase, Context, Canvas, Color | 100% |\n| `internal/render` | Canvas implementation using gogpu/gg | 96.5% |\n| `internal/layout` | Flex, Stack, Grid layout engines | 89.9% |\n| **`registry`** | Widget factory registration (third-party support) | 100% |\n| **`layout`** | Public layout API with custom algorithms | 89.5% |\n| **`theme`** | Theme System + Extensions + Registry | 100% |\n| **`plugin`** | Plugin bundling with dependency resolution | 99.4% |\n\n**Total: ~19,500 lines of code with 97%+ average test coverage**\n\n### Current Focus\n\n- Phase 1: MVP with signals integration and window support\n- Phase 1.5: Community extension guidelines (docs)\n- API refinement based on community feedback\n\n**Watch/Star the repo to follow development!**\n\n---\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    User Application                         │\n├─────────────────────────────────────────────────────────────┤\n│  theme/material3   │  theme/fluent   │  theme/cupertino     │\n│    (Planned)       │   (Planned)     │    (Planned)         │\n├─────────────────────────────────────────────────────────────┤\n│  widgets/         │  docking/        │  animation/          │\n│  Button, TextField│  DockingHost     │  Animation, Spring   │\n│  (Planned)        │  (Planned)       │  (Planned)           │\n├─────────────────────────────────────────────────────────────┤\n│  registry/        │  plugin/         │  theme/              │\n│  Widget Factory   │  Plugin System   │  Theme + Extensions  │\n│  (Complete ✅)    │  (Complete ✅)   │  (Complete ✅)      │\n├─────────────────────────────────────────────────────────────┤\n│  layout/                            │  state/               │\n│  VStack, HStack, Grid, Flexbox      │  Signals              │\n│  (Public API ✅)                    │  (Planned)            │\n├─────────────────────────────────────────────────────────────┤\n│  widget/                            │  event/               │\n│  Widget, WidgetBase, Context        │  Mouse, Keyboard      │\n│  (Complete ✅)                      │  (Complete ✅)       │\n├─────────────────────────────────────────────────────────────┤\n│  geometry/        │  internal/render │  internal/layout     │\n│  Point, Rect      │  Canvas impl     │  Flex, Stack, Grid   │\n│  (Complete ✅)    │  (Complete ✅)   │  (Complete ✅)      │\n├─────────────────────────────────────────────────────────────┤\n│  gogpu/gg          │  gogpu/gogpu    │  coregx/signals      │\n│  2D Graphics       │  Windowing      │  State Management    │\n└─────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Planned API\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n\n    \"github.com/gogpu/gogpu\"\n    \"github.com/gogpu/ui/layout\"\n    \"github.com/gogpu/ui/widgets\"\n    \"github.com/coregx/signals\"\n)\n\nfunc main() {\n    app := gogpu.NewApp(gogpu.Config{\n        Title:  \"My Application\",\n        Width:  1280,\n        Height: 720,\n    })\n\n    // Reactive state\n    count := signals.New(0)\n\n    // Declarative UI\n    root := layout.VStack(\n        widgets.Text(\"Counter Demo\").FontSize(24),\n\n        layout.HStack(\n            widgets.Button(\"-\").OnClick(func() {\n                count.Set(count.Get() - 1)\n            }),\n\n            widgets.Text(signals.Computed(func() string {\n                return fmt.Sprintf(\"Count: %d\", count.Get())\n            })),\n\n            widgets.Button(\"+\").OnClick(func() {\n                count.Set(count.Get() + 1)\n            }),\n        ).Spacing(8),\n\n        widgets.TextField().\n            Placeholder(\"Enter text...\").\n            Width(300),\n    ).Spacing(16).Padding(24)\n\n    app.SetRoot(root)\n    app.Run()\n}\n```\n\n\u003e **Note:** This is the target API design. Foundation is complete, widgets are in development.\n\n---\n\n## Implementation Progress\n\n### Foundation (Phase 0) ✅\n\n- [x] Geometry types (Point, Size, Rect, Constraints)\n- [x] Event system (Mouse, Keyboard, Wheel, Focus)\n- [x] Widget interface and WidgetBase\n- [x] Canvas interface and implementation\n- [x] Layout engine (Flex, Stack, Grid)\n- [x] Color type with utilities\n\n### Extensibility (Phase 1.5) 🔄 83%\n\n- [x] Widget Registry (third-party registration)\n- [x] Public Layout API (custom layouts)\n- [x] Theme System Foundation\n- [x] ThemeExtension Interface (Flutter-inspired)\n- [x] Theme Registry (dynamic switching)\n- [x] Plugin System (bundling, dependencies)\n- [ ] Community Extension Guidelines (docs)\n\n### Phase 1: MVP (In Progress)\n\n- [ ] Signals integration (coregx/signals)\n- [ ] Basic primitives (Box, Text, Image)\n- [x] ~~Public layout API~~ (done in Phase 1.5)\n- [x] ~~Theme system foundation~~ (done in Phase 1.5)\n- [ ] Window integration (gogpu/gogpu)\n\n### Phase 2: Beta\n\n- [ ] Button, TextField, Label\n- [ ] Checkbox, Radio, Switch\n- [ ] Slider, Progress\n- [ ] Dropdown, Select\n- [ ] Material Design 3 theme\n\n### Phase 3: Release Candidate\n\n- [ ] List, Table, Tree (virtualized)\n- [ ] Tabs, Accordion, SplitView\n- [ ] Animation engine\n- [ ] ScrollView with physics\n\n### Phase 4: Production\n\n- [ ] IDE-style docking\n- [ ] Drag \u0026 drop\n- [ ] Accessibility (WCAG 2.1 AA)\n- [ ] Additional themes (Fluent, Cupertino)\n\n---\n\n## Requirements\n\n| Dependency | Purpose | Status |\n|------------|---------|--------|\n| Go 1.25+ | Language runtime | Required |\n| [gogpu/gg](https://github.com/gogpu/gg) | 2D graphics rendering | ✅ Integrated |\n| [gogpu/gogpu](https://github.com/gogpu/gogpu) | Windowing and GPU abstraction | Phase 1 |\n| [coregx/signals](https://github.com/coregx/signals) | Reactive state management | Phase 1 |\n\n---\n\n## Installation\n\n```bash\ngo get github.com/gogpu/ui@latest\n```\n\n\u003e **Note:** Currently provides foundation packages only. Full widget library coming in v0.1.0.\n\n---\n\n## Roadmap\n\n| Phase | Version | Description | Status |\n|-------|---------|-------------|--------|\n| **Phase 0** | v0.0.x | Foundation: geometry, event, widget, layout | ✅ Complete |\n| **Phase 1.5** | v0.1.x | Extensibility: registry, theme, plugin | 🔄 83% Done |\n| **Phase 1** | v0.1.0 | MVP: Signals, primitives, windowing | 🔄 In Progress |\n| **Phase 2** | v0.2.0 | Beta: Widgets, Material 3 | Planned |\n| **Phase 3** | v0.3.0 | RC: Virtualization, animation | Planned |\n| **Phase 4** | v1.0.0 | Production: Docking, a11y, themes | Planned |\n\nFull details: [ROADMAP.md](ROADMAP.md)\n\n---\n\n## Related Projects\n\n| Project | Description | Purpose |\n|---------|-------------|---------|\n| [gogpu/gg](https://github.com/gogpu/gg) | 2D graphics | Canvas API, scene graph, GPU text |\n| [gogpu/wgpu](https://github.com/gogpu/wgpu) | Pure Go WebGPU | Vulkan, Metal, GLES, Software backends |\n| [gogpu/gogpu](https://github.com/gogpu/gogpu) | Graphics framework | GPU abstraction, windowing, input |\n| [gogpu/naga](https://github.com/gogpu/naga) | Shader compiler | WGSL → SPIR-V, MSL, GLSL |\n\n**Total ecosystem: 200K+ lines of Pure Go** — no CGO, no Rust, no C.\n\n---\n\n## Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n**Ways to contribute:**\n- Design discussions in [GitHub Discussions](https://github.com/orgs/gogpu/discussions/18)\n- API feedback and suggestions\n- Documentation improvements\n- Code contributions (see open issues)\n\n---\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003egogpu/ui\u003c/strong\u003e — Enterprise-grade GUI for Go\u003cbr\u003e\n  \u003csub\u003ePart of the \u003ca href=\"https://github.com/gogpu\"\u003eGoGPU\u003c/a\u003e ecosystem\u003c/sub\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":["GUI"],"sub_categories":["Search and Analytic Databases"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgogpu%2Fui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgogpu%2Fui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgogpu%2Fui/lists"}