goui

module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2026 License: MIT

README

GOUI

Build lightweight, modern desktop apps in Go—no GCC required

中文

GOUI is a native GUI framework written entirely in Go. Build both your interface and application logic in Go, without a browser engine or a C/C++ build toolchain.

The current version provides the foundations and controls needed for small desktop applications; public APIs are still evolving.

Project Purpose
goui-sourceview Code editor extension with syntax highlighting, completion, bracket matching, and find/replace.
applesdk Pure Go macOS SDK bindings for services including StoreKit, iCloud, and CloudKit.

Try the demo

The demo brings together controls, text editing, layouts, data views, detachable tabs, overlays, graphics, animations, and system integration. Switch between light/dark appearances, accent colors, and eight UI languages.

Platform Demo download
Windows x64 Download EXE
macOS Apple Silicon Download .app ZIP
Linux x64 / X11 Download executable

The downloads above are the published v0.5.0 demo. The current source includes the v0.6.0 additions described below.

On Linux, run chmod +x goui-demo-v0.5.0-linux-amd64 before launching it. On macOS, extract and open GOUI Demo.app; the bundle is Developer ID signed and Apple-notarized.

Windows

GOUI Demo on Windows

macOS

GOUI Demo on macOS

Linux

GOUI Demo on Linux

To run the current source from the repository root:

CGO_ENABLED=0 go run ./example/demo

Why GOUI?

  • No cgo, no GCC. Build with CGO_ENABLED=0 using the Go toolchain, including cross-compilation for supported targets. Native APIs are bound at runtime; building your application does not require a C/C++ compiler.
  • One binary, one app. Embed icons and other assets with Go's embed package. Windows executables and Linux binaries can run directly; macOS can wrap the executable in an .app for application identity, icons, and signing.
  • Modern appearance, native integration. A consistent Modern stylesheet with light/dark modes and accent colors, paired with native window chrome, fonts, text layout, IME, clipboard, and file dialogs.
  • AI-friendly. Semantic snapshots describe the widget tree. The gui/dev adapter supports inspecting windows and popovers, dispatching input, and committing text for debugging and AI automation.

Single-binary delivery does not mean there are no system dependencies. GOUI loads native system libraries at runtime. See platforms and dependencies for requirements.

Standing on the shoulders of giants

GOUI learns from mature frameworks rather than inventing every mechanism:

GTK4 for widgets and event controllers, Flutter for constraint-based layout, Qt and Avalonia for desktop integration, and SwiftUI for declarative composition. The result remains Go-shaped, not an imitation of any one framework.

Rendering builds on native Direct2D/DirectWrite, Core Text, and Pango/Cairo, alongside the project's NanoVG Go fork. SVG support uses the project's oksvg fork. GOUI keeps these foundations behind clear platform, widget, and declarative layers.

Size and memory

GOUI is a lightweight native GUI framework. Actual executable size and runtime memory usage depend on the application and rendering backend.

These are historical development-build measurements, not v0.6.0 release measurements.

Executable size

Built with Go 1.25.8, CGO_ENABLED=0, -trimpath, and -ldflags="-s -w", with -H=windowsgui also set on Windows.

Target Minimal app Demo
Windows amd64 4.58 MiB 8.56 MiB
macOS arm64 4.75 MiB 8.26 MiB
Linux amd64 4.46 MiB 8.43 MiB

The full demo includes its logo, SVG icons, eight-language resources, and nine feature pages. Windows includes generated icon and version resources. These figures are from development builds, not published release artifacts; .app metadata, installer/archive overhead, and system libraries are not included.

Process memory usage

Application RSS PSS
Minimal app 58.8 MiB 28.6 MiB
Demo 78.5 MiB 46.2 MiB

RSS includes resident shared-library pages; PSS apportions shared pages between processes. The figures are summed from Linux /proc/<pid>/smaps and are provided for reference; results on other platforms may differ.

What you can build with today

Area Supported capabilities
Declarative UI State and property bindings, local dependency tracking and subtree updates, composed views, common view modifiers, and custom Widgets/Views.
Controls Buttons and connected button groups, images/icons, check/radio/toggle buttons and groups, switches, dropdowns, and linear/circular progress indicators.
Text Formatted and selectable Labels; Unicode single-line/multiline editing, native window IME, selection, clipboard, undo/redo, placeholders, configurable obscuring, brief last-grapheme reveal, and composable input filters.
Layout Constraint-based horizontal/vertical boxes, wrapping, baseline alignment, per-edge padding, scrolling, split views, and overlays.
Data views Virtualized lists, trees with reusable expanders, and tables with custom editable cells, column visibility/stretching, sorting, resizing, grid lines, and alternating row colors.
Tabbed workspaces Close requests and context menus, drag reordering, shrinking and overflow scrolling, cross-window transfer, and detaching into new windows.
Menus and overlays Menu buttons and coordinated menu groups, context menus, popovers, tooltips, modal input boundaries, in-window Dialogs, and Toasts.
Input Shortcuts, Tab navigation and keyboard focus hints, event controllers, gesture competition, and drag and drop within and across applications.
Graphics and appearance Software/OpenGL/Direct2D backends, HiDPI, transforms, clipping and path erasure, transparency/shadows, SVG and style-aware icons, custom painting, cached DrawingArea rendering, and offscreen widget rendering.
Themes and localization Basic fallback and Modern themes, light/dark modes, accent and semantic colors, style scopes, system settings, localization resources, and built-in text in eight languages.
Windows and system integration Native/integrated/custom chrome, HeaderBar and window controls, transparent windows, positioning/initial centering, taskbar preferences, file dialogs and access credentials, clipboard, and opening URLs/files.
Timing and developer tools GUI-thread timers, frame-driven animation with custom interpolation/curves, semantic snapshots and input automation, opt-in CPU-frame/resource diagnostics, and build/package tools.

Core controls live in gui, with declarative bindings in ui. Additional controls live in widgets, with their declarative bindings in widgets/ui. Platform behavior and validation limits are recorded in the Roadmap and individual design documents.

v0.6.0 preparation

  • Input policies and obscuring: try username/digit limits, a small multiline limit, custom masking characters, and optional brief reveal in the demo's Text editing page. Programmatic assignments and history replay retain their own semantics.
  • Optional diagnostics: start a capture in Windows & inspection, explore other pages, then read or stop it. CPU-frame timings and resource operations are sampled explicitly; they are not GPU timings, monitor refresh rates, or memory-use measurements.
  • Rendering stability: preserve Label text caches across equivalent styles and measurement queries; keep allocated editor/table geometry stable during measurement, and fix popup hover state and dropdown scrollbar spacing.

Build with an AI coding assistant

The GOUI application development Skill guides your AI through GOUI APIs, state, layout, styles, resources, building, and debugging. To install it, tell your AI:

Install the GOUI application development skill following https://github.com/golang-gui/goui/blob/main/skills/INSTALL.md.

The AI follows the installation instructions using its tool's native skill mechanism; no GOUI-specific Agent adapter or manual file copying is required. Tools without Skill support can read the guide directly, but this is not a native installation. Installing the Skill does not install or upgrade your application's GOUI dependency.

For code editor integration and customization, use the SourceView application development Skill, maintained in the SourceView repository with its own installation guide.

For reusable components and custom controls, see Custom Widget and View for composing, extending, and implementing both layers.

Quick start

Requires Go 1.24 or newer and a supported desktop environment. Create a module and add GOUI:

mkdir hello-goui
cd hello-goui
go mod init example.com/hello-goui
go get github.com/golang-gui/goui@latest

Save as main.go:

package main

import (
    "fmt"
    "log"

    "github.com/golang-gui/goui/theme/modern"
    "github.com/golang-gui/goui/ui"
)

func counterText(count *ui.State[int]) ui.View {
    return ui.Build(func() ui.View {
        return ui.Label(fmt.Sprintf("Clicked %d times", count.Get()))
    })
}

func main() {
    count := ui.MakeState(0)
    err := ui.Run("com.example.Hello", func(app ui.App) ui.RootView {
        return ui.Root().
            StyleSheet(modern.FromSettings(app.Settings())). // Use the Modern theme
            Windows(
                ui.Window("main").
                    Title("Hello GOUI").
                    Size(480, 240).
                    Content(
                        ui.VBox(
                            ui.Modify(counterText(&count)).MainWeight(1),
                            ui.Button("Click me").OnClick(func() {
                                // Prefer Update to count.Set(count.Get() + 1):
                                count.Update(func(old int) int {
                                    return old + 1
                                })
                            }),
                        ).Spacing(12).Padding(20),
                    ),
            )
    })
    if err != nil {
        log.Fatal(err)
    }
}

Build and run on your current platform:

CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o hello-goui .
./hello-goui

On Windows PowerShell, use $env:CGO_ENABLED='0', then run:

go build -trimpath -ldflags="-s -w -H=windowsgui" -o hello-goui.exe ..

Views are ordinary Go values. ui.Build automatically tracks State.Get() reads during its synchronous build; changes rebuild that subtree. Keep state outside repeatedly built views, as count is here. Use ui.Modify to apply common modifiers to a function's ui.View result without adding a widget or layout boundary. Individual properties can use bindings such as BindText(&state); App.RequestUpdate explicitly rebuilds the application. System settings changes also rebuild this example, updating its Modern stylesheet.

Platforms and dependencies

Platform / current release target Window system Drawing backends Text layout
Windows / amd64 Win32 Direct2D, OpenGL, Software DirectWrite
macOS / arm64 AppKit OpenGL, Software Core Text
Linux / amd64 X11 OpenGL, Software Pango / Cairo

On Windows and macOS, native frameworks are supplied by the operating system. On Linux, the current backend needs an X11 display server; Wayland sessions need XWayland, and window behavior still needs validation on the target desktop. Runtime libraries include X11/Xext/Xrender/Xrandr/Xcursor, GL/GLX, GLib/GIO, Fontconfig, and Pango/Cairo. Settings integration and native file dialogs use GTK. No development headers or C compiler are needed. Linux Integrated decoration additionally needs a compositor; otherwise GOUI can fall back to native decoration.

You can select a drawing backend with GOUI_PLAT_PAINTER=software or opengl; Windows also accepts direct2d. See the demo guide for platform details.

Build and package

Ordinary go build is sufficient to build an application. The optional cmd/goui tool handles platform resources and packaging from goui.toml: Windows icon/version resources, macOS Info.plist/ICNS/.app and explicit signing, and Linux desktop/icon resources. These steps do not require GCC; macOS signing uses the platform's codesign tool.

For example, build the demo and its platform resources:

CGO_ENABLED=0 go run ./cmd/goui build -config example/demo/goui.toml -ldflags="-s -w"

Environment variables

These are usually unnecessary. Set them before launching the application for startup configuration, debugging, or compatibility checks. Restart the application after changing them; they are not runtime switching interfaces.

Variable Purpose and values Default behavior
GOUI_PLAT_SCALE Overrides the logical-unit-to-physical-pixel scale; fractional values such as 1, 1.5, and 2 are supported Uses the platform's system scale; an unset, unparseable, or non-positive value does not override it
GOUI_PLAT_PAINTER Selects a drawing backend: opengl, software; Windows also accepts direct2d Uses the platform's default backend and initialization fallback policy

GOUI_PLAT_SCALE=2 means 1 DIP maps to 2 physical pixels. It does not change the operating system's display settings or replace HiDPI testing on real devices.

Backend names are lowercase. An unset or unrecognized name uses the default:

  • Windows: Direct2D by default, falling back to OpenGL and then Software if initialization fails.

    Specifying direct2d follows the same sequence; explicitly selecting opengl does not fall back and returns an error if initialization fails.

  • Linux / macOS: OpenGL by default, falling back to Software if initialization fails. Specifying opengl follows the same policy.

  • Specifying software selects software rendering directly. These fallbacks occur during backend initialization, not automatically while the app is running.

Linux / X11 also recognizes these compatibility variables:

Variable Purpose
GDK_SCALE Sets a scale such as 1 or 2; precedence is GOUI_PLAT_SCALE > GDK_SCALE > desktop DPI settings
XCURSOR_THEME Selects an installed cursor theme, overriding the desktop cursor theme setting
XCURSOR_SIZE Sets the cursor size in positive integer pixels, such as 24 or 32, overriding the desktop cursor size setting

For example, launch the software-rendered demo at 2x from the repository root using Bash:

CGO_ENABLED=0 GOUI_PLAT_PAINTER=software GOUI_PLAT_SCALE=2 go run ./example/demo

Windows PowerShell:

$env:CGO_ENABLED = '0'
$env:GOUI_PLAT_PAINTER = 'direct2d'
$env:GOUI_PLAT_SCALE = '1.5'
go run ./example/demo

Variables in the Bash example apply only to that command; those in the PowerShell example remain set in the current terminal session. To restore automatic selection, remove the relevant variables and restart the application. For example, in PowerShell: Remove-Item Env:GOUI_PLAT_PAINTER, Env:GOUI_PLAT_SCALE -ErrorAction SilentlyContinue.

Optional development tools

GOUI_DEV_ADDR is the listening address for the gui/dev development adapter, not a platform rendering setting. First add import _ "github.com/golang-gui/goui/gui/dev" to the application, then set the variable to enable the service. It does not start unless the package is imported and the variable is set. For an application that already imports the package:

GOUI_DEV_ADDR=127.0.0.1:8888 ./your-app

The service provides semantic snapshots, input event dispatch, and text submission. Use it only for local development; enabling it in production is not recommended.

The separate gui/diagnostics package offers explicitly controlled CPU-frame and resource captures without a development server. The dev adapter also exposes /goui/dev/diagnostics for starting, reading, and stopping a capture; reading alone never enables it.

A small, layered design

ui        Declarative views and explicit update coordination
gui       Widgets, layout, painting, events, focus, signals, and snapshots
platform  Native windows, event loops, input, drawing, and typography

Use only the layers you need. animation, layout, style, icon, and mlang provide focused capabilities; gui/dev is an opt-in debugging adapter. GOUI aims to be a practical GUI toolkit, not a browser or an all-purpose platform SDK.

Roadmap

  • Add touch input and gestures while keeping mouse/keyboard use first-class.
  • Support more platforms, architectures, and window systems.
  • Add more purpose-built controls and reusable application components.
  • Keep optimizing performance and memory use, backed by reproducible measurements.

License and acknowledgements

GOUI is MIT licensed. Dependencies retain their own licenses.

The logo retains attribution to the Go gopher by Renee French (CC BY 4.0).

Directories

Path Synopsis
Package animation provides frame-driven value transitions.
Package animation provides frame-driven value transitions.
cmd
goui command
Command goui builds binaries and prepares platform application resources.
Command goui builds binaries and prepares platform application resources.
svgpng command
Command svgpng rasterizes SVG files into PNG files of several sizes with icon/svg, so the output matches what goui Icon renders.
Command svgpng rasterizes SVG files into PNG files of several sizes with icon/svg, so the output matches what goui Icon renders.
core
bits
Package bits provides small, allocation-free bit-set helpers built on Go's fixed-width integer types.
Package bits provides small, allocation-free bit-set helpers built on Go's fixed-width integer types.
colors
Package colors provides small, dependency-free helpers for working with image/color values: equality, and later standard color constants and hex parsing.
Package colors provides small, dependency-free helpers for working with image/color values: equality, and later standard color constants and hex parsing.
optional
Package optional provides a small generic container that distinguishes "a value is present" from "no value", so a zero value (0, "", nil, ...) can be told apart from an unset one.
Package optional provides a small generic container that distinguishes "a value is present" from "no value", so a zero value (0, "", nil, ...) can be told apart from an unset one.
example
demo command
GOUI widget and feature gallery.
GOUI widget and feature gallery.
demo/resource
Package resource contains display text and initial samples, not IDs or user edits.
Package resource contains display text and initial samples, not IDs or user edits.
modern command
Modern theme showcase.
Modern theme showcase.
gui
Package gui implements GOUI's imperative widget kernel.
Package gui implements GOUI's imperative widget kernel.
dev
Package dev is GOUI's opt-in local development protocol server, for tools and AI agents that inspect snapshots, dispatch platform events and commit text.
Package dev is GOUI's opt-in local development protocol server, for tools and AI agents that inspect snapshots, dispatch platform events and commit text.
diagnostics
Package diagnostics provides optional GUI-thread CPU-frame and resource captures.
Package diagnostics provides optional GUI-thread CPU-frame and resource captures.
textedit
Package textedit provides plain-text documents, edit history, preedit projections, measured fragments, paragraph height indexes and Cluster-based editing geometry.
Package textedit provides plain-text documents, edit history, preedit projections, measured fragments, paragraph height indexes and Cluster-based editing geometry.
textformat
Package textformat parses Label text into plain UTF-8 text and named style ranges.
Package textformat parses Label text into plain UTF-8 text and named style ranges.
Package icon provides reusable implementations of gui.IconSource.
Package icon provides reusable implementations of gui.IconSource.
draw
Package draw adapts offscreen Software drawing to gui.IconSource.
Package draw adapts offscreen Software drawing to gui.IconSource.
svg
Package svg supplies static SVG implementations of gui.IconSource.
Package svg supplies static SVG implementations of gui.IconSource.
internal
diagnostic
Package diagnostic contains opt-in operation counters shared by the GUI and native backends.
Package diagnostic contains opt-in operation counters shared by the GUI and native backends.
identity
Package identity provides reference checks for declarative adapters.
Package identity provides reference checks for declarative adapters.
resource
Package resource contains framework-owned presentation text, not application content, stable semantic identifiers, diagnostics or native system dialogs.
Package resource contains framework-owned presentation text, not application content, stable semantic identifiers, diagnostics or native system dialogs.
Package mlang provides language-aware text resources independent of GUI widgets.
Package mlang provides language-aware text resources independent of GUI widgets.
Package platform provides low-level bindings for windows, event loops, graphics, typography, and other operating-system services.
Package platform provides low-level bindings for windows, event loops, graphics, typography, and other operating-system services.
dragdrop
Package dragdrop contains the portable facts exchanged by native drag and drop backends.
Package dragdrop contains the portable facts exchanged by native drag and drop backends.
graphics/internal/boxshadow
Package boxshadow contains the backend-independent geometry and opacity semantics for graphics.BoxShadow.
Package boxshadow contains the backend-independent geometry and opacity semantics for graphics.BoxShadow.
graphics/internal/offscreen
Package offscreen holds the common allocation contract for image rendering.
Package offscreen holds the common allocation contract for image rendering.
graphics/internal/pixelsnap
Package pixelsnap aligns axis-aligned UI primitives to the device pixel grid.
Package pixelsnap aligns axis-aligned UI primitives to the device pixel grid.
graphics/test command
internal/desktopopen
Package desktopopen contains shared input rules for desktop open requests.
Package desktopopen contains shared input rules for desktop open requests.
internal/fileaccess
Package fileaccess implements desktop path access and private credential encoding shared by native dialog backends.
Package fileaccess implements desktop path access and private credential encoding shared by native dialog backends.
internal/workarea
Package workarea contains geometry shared by native desktop observations.
Package workarea contains geometry shared by native desktop observations.
internal/xerrors
Package xerrors scopes expected X errors to requests on the owning thread.
Package xerrors scopes expected X errors to requests on the owning thread.
linux/internal/portal
Package portal implements Linux desktop portal requests without a GUI event loop.
Package portal implements Linux desktop portal requests without a GUI event loop.
typography/internal/typographytest
Package typographytest contains shared native typography test fixtures.
Package typographytest contains shared native typography test fixtures.
tests
window/graphics/alpha command
预乘颜色窗口验证
预乘颜色窗口验证
window/graphics/clear_path command
ClearPath 原生绘制与透明提交验收。
ClearPath 原生绘制与透明提交验收。
window/graphics/image_update command
Image.Update 帧内时序及原生像素验收。
Image.Update 帧内时序及原生像素验收。
window/gui/animation command
帧信号与数值动画窗口验收。
帧信号与数值动画窗口验收。
window/gui/border_box command
BorderBox 自绘窗口边框验收,不使用 DevServer。
BorderBox 自绘窗口边框验收,不使用 DevServer。
window/gui/button_groups command
按钮分组窗口验收,需要真实桌面、系统字体和绘图后端,不使用 DevServer。
按钮分组窗口验收,需要真实桌面、系统字体和绘图后端,不使用 DevServer。
window/gui/dev command
DevServer 引用、文本及 Popover 窗口验证。
DevServer 引用、文本及 Popover 窗口验证。
window/gui/diagnostics command
可选绘制/资源诊断验证;诊断自身不依赖 DevServer。
可选绘制/资源诊断验证;诊断自身不依赖 DevServer。
window/gui/drag_handoff command
栏内拖动交给原生 DnD 的独立窗口验证;不使用 DevServer。
栏内拖动交给原生 DnD 的独立窗口验证;不使用 DevServer。
window/gui/dragdrop command
GUI Drag and Drop 窗口验证;不使用 DevServer。
GUI Drag and Drop 窗口验证;不使用 DevServer。
window/gui/file_access command
文件访问凭据验收,使用公开 GUI 接口,不依赖 DevServer。
文件访问凭据验收,使用公开 GUI 接口,不依赖 DevServer。
window/gui/file_dialog command
原生文件对话框的窗口模态、事件循环及 owner 生命周期验收;不使用 DevServer。
原生文件对话框的窗口模态、事件循环及 owner 生命周期验收;不使用 DevServer。
window/gui/integrated_layout command
Linux Integrated 完整内容与独立缩放边缘验证。
Linux Integrated 完整内容与独立缩放边缘验证。
window/gui/interactions command
上下文菜单、公开树行组合、拖放观察与自动滚动的原生窗口验收。
上下文菜单、公开树行组合、拖放观察与自动滚动的原生窗口验收。
window/gui/label command
Label 格式化文本窗口验收,不依赖 DevServer。
Label 格式化文本窗口验收,不依赖 DevServer。
window/gui/label_cache command
Label 排版与文字图片复用回归。
Label 排版与文字图片复用回归。
window/gui/menu_group command
MenuButtonGroup 与非模态菜单的窗口回归,需要真实桌面、字体及原生绘图后端。
MenuButtonGroup 与非模态菜单的窗口回归,需要真实桌面、字体及原生绘图后端。
window/gui/menu_pointer command
Menu pointer/keyboard highlight regression.
Menu pointer/keyboard highlight regression.
window/gui/modal command
通用 ModalScope 桌面验收,不使用 DevServer。
通用 ModalScope 桌面验收,不使用 DevServer。
window/gui/popup_sizing command
弹窗物理尺寸对齐回归。
弹窗物理尺寸对齐回归。
window/gui/render_widget command
RenderWidget 窗口验证;不使用 DevServer。
RenderWidget 窗口验证;不使用 DevServer。
window/gui/scroll_layout command
ScrollView 方向与布局窗口验收。
ScrollView 方向与布局窗口验收。
window/gui/tab_navigation command
Tab 焦点导航与 FocusVisible 窗口验证,不使用 DevServer。
Tab 焦点导航与 FocusVisible 窗口验证,不使用 DevServer。
window/gui/taskbar command
SkipTaskbar 窗口验收,不使用 DevServer。
SkipTaskbar 窗口验收,不使用 DevServer。
window/gui/text_caret command
超长行补充:加 -file /outside/repo/long.json -width 800,验证只读文件的冷 End 后直接正向拖选。
超长行补充:加 -file /outside/repo/long.json -width 800,验证只读文件的冷 End 后直接正向拖选。
window/gui/text_sizing command
文本尺寸及单行正文像素回归。
文本尺寸及单行正文像素回归。
window/gui/textinput command
单行遮蔽与两类编辑控件的输入策略验证,不使用 DevServer。
单行遮蔽与两类编辑控件的输入策略验证,不使用 DevServer。
window/gui/textplaceholder command
TextInput/TextView 占位提示窗口验证。
TextInput/TextView 占位提示窗口验证。
window/gui/textview command
TextView 窗口验证,逐项记录通过、失败与未执行的场景。
TextView 窗口验证,逐项记录通过、失败与未执行的场景。
window/gui/tooltip command
Tooltip 窗口验证,需要真实桌面、窗口管理器、字体及原生排版。
Tooltip 窗口验证,需要真实桌面、窗口管理器、字体及原生排版。
window/gui/widget_state command
Widget 组合状态、Box 样式与外部自定义 Widget 验收,不使用 DevServer。
Widget 组合状态、Box 样式与外部自定义 Widget 验收,不使用 DevServer。
window/gui/window_lifecycle command
原生宿主终止与初始居中降级验收,不使用 DevServer。
原生宿主终止与初始居中降级验收,不使用 DevServer。
window/gui/window_min_size command
显式窗口最小尺寸与内容布局隔离验证,不使用 DevServer。
显式窗口最小尺寸与内容布局隔离验证,不使用 DevServer。
window/gui/window_position command
窗口客户区定位验收,不使用 DevServer。
窗口客户区定位验收,不使用 DevServer。
window/gui/window_show command
Window.Show 窗口唤起验收,不使用 DevServer。
Window.Show 窗口唤起验收,不使用 DevServer。
window/platform/clipboard command
原生剪贴板结果回归,必须显式运行,不由 go test 启动。
原生剪贴板结果回归,必须显式运行,不由 go test 启动。
window/platform/clipboard/owner command
X11 剪贴板外部所有者,只在独立、可丢弃的 X server 中启动。
X11 剪贴板外部所有者,只在独立、可丢弃的 X server 中启动。
window/platform/ffi_events command
Xlib FFI pointer regression.
Xlib FFI pointer regression.
window/platform/input_trace command
三平台原生输入与 GOUI 事件对照记录;不使用 DevServer。
三平台原生输入与 GOUI 事件对照记录;不使用 DevServer。
window/platform/message_reentry command
Windows 消息绑定的 Go -> Win32 -> Go 重入回归,不使用 DevServer。
Windows 消息绑定的 Go -> Win32 -> Go 重入回归,不使用 DevServer。
window/platform/modifiers command
左右修饰键原生事件回归。
左右修饰键原生事件回归。
window/platform/repaint command
Native repaint invalidation regression; requires an interactive desktop.
Native repaint invalidation regression; requires an interactive desktop.
window/platform/window_chrome command
Windows Native/Integrated/None 客户区尺寸与顶部圆角验证。
Windows Native/Integrated/None 客户区尺寸与顶部圆角验证。
window/platform/window_position command
macOS 普通窗口默认位置验收,不使用 DevServer。
macOS 普通窗口默认位置验收,不使用 DevServer。
window/tools/packaging command
构建资源与应用打包的真实桌面验收,不依赖 DevServer。
构建资源与应用打包的真实桌面验收,不依赖 DevServer。
window/ui/animation command
声明式动画窗口验收。
声明式动画窗口验收。
window/ui/binding command
声明式自动读取追踪、局部更新与属性绑定窗口验收,不依赖 DevServer。
声明式自动读取追踪、局部更新与属性绑定窗口验收,不依赖 DevServer。
window/ui/clear_path command
自定义圆角窗口、Root.AfterPaint 与 UI 重建验收。
自定义圆角窗口、Root.AfterPaint 与 UI 重建验收。
window/ui/composition command
组合节点与普通对象的真实窗口验证,不依赖 DevServer。
组合节点与普通对象的真实窗口验证,不依赖 DevServer。
window/ui/dragdrop command
声明式 Drag and Drop 窗口验证;不使用 DevServer。
声明式 Drag and Drop 窗口验证;不使用 DevServer。
window/ui/drawing_area command
DrawingArea 软件绘图、缓存和 UI 协调窗口验收;需要真实桌面及字体,不使用 DevServer。
DrawingArea 软件绘图、缓存和 UI 协调窗口验收;需要真实桌面及字体,不使用 DevServer。
window/ui/enabled command
Widget 禁用、父子状态、焦点、文字输入与声明式恢复验收;不依赖 DevServer。
Widget 禁用、父子状态、焦点、文字输入与声明式恢复验收;不依赖 DevServer。
window/ui/icon command
Icon 窗口验证:样式驱动的矢量/自定义绘制,通过 Software 生成并缓存位图,不使用 DevServer。
Icon 窗口验证:样式驱动的矢量/自定义绘制,通过 Software 生成并缓存位图,不使用 DevServer。
window/ui/label command
声明式 Label 格式化窗口验收,不使用 DevServer。
声明式 Label 格式化窗口验收,不使用 DevServer。
window/ui/label_selection command
Label 可选择文本与声明式选区绑定验收,不使用 DevServer。
Label 可选择文本与声明式选区绑定验收,不使用 DevServer。
window/ui/mlang command
多语言资源、命令式翻译与声明式自动协调验收;不依赖 DevServer。
多语言资源、命令式翻译与声明式自动协调验收;不依赖 DevServer。
window/ui/mlang/resource
Package resource is this example's text and prepared icon bundle.
Package resource is this example's text and prepared icon bundle.
window/ui/modal command
OverlayItem.Modal 声明式窗口验收,不使用 DevServer。
OverlayItem.Modal 声明式窗口验收,不使用 DevServer。
window/ui/modifiers command
任意 View 通用修饰的窗口验收,不依赖 DevServer。
任意 View 通用修饰的窗口验收,不依赖 DevServer。
window/ui/pixel_snap command
平直边缘与窗口关闭图标的像素对齐回归,不使用 DevServer。
平直边缘与窗口关闭图标的像素对齐回归,不使用 DevServer。
window/ui/shortcuts command
快捷键与键盘布局窗口验证。
快捷键与键盘布局窗口验证。
window/ui/svgicon command
SVG Icon 窗口验证(不使用 DevServer)。
SVG Icon 窗口验证(不使用 DevServer)。
window/ui/textediting command
UI 文本编辑窗口验证:共享多行模型、独立单行编辑和声明式重建。
UI 文本编辑窗口验证:共享多行模型、独立单行编辑和声明式重建。
window/ui/textinput_obscure command
密码末字素短暂显露与声明式重建验收,不使用 DevServer。
密码末字素短暂显露与声明式重建验收,不使用 DevServer。
window/ui/themes command
默认 Basic 与可选 Modern 样式窗口验收,不依赖 DevServer。
默认 Basic 与可选 Modern 样式窗口验收,不依赖 DevServer。
window/ui/timer command
UI Timer 原生事件循环验收,不使用 DevServer。
UI Timer 原生事件循环验收,不使用 DevServer。
window/ui/tooltip command
声明式 Tooltip 手工验收,不依赖 DevServer,不自动模拟输入。
声明式 Tooltip 手工验收,不依赖 DevServer,不自动模拟输入。
window/ui/window_center command
窗口初始居中与声明式创建选项验收,不使用 DevServer。
窗口初始居中与声明式创建选项验收,不使用 DevServer。
window/ui/wrap command
WrapBox 桌面验证(无 DevServer 依赖)。
WrapBox 桌面验证(无 DevServer 依赖)。
window/widgets/check_button command
CheckButton 三态、互斥组、按钮式外观与声明协调窗口验收,不依赖 DevServer。
CheckButton 三态、互斥组、按钮式外观与声明协调窗口验收,不依赖 DevServer。
window/widgets/dialog_toast command
Dialog / Toast 及声明绑定桌面验收,不使用 DevServer。
Dialog / Toast 及声明绑定桌面验收,不使用 DevServer。
window/widgets/drop_down command
DropDown 原生浮窗、真实内容、键鼠选择和声明式协调验收,不依赖 DevServer。
DropDown 原生浮窗、真实内容、键鼠选择和声明式协调验收,不依赖 DevServer。
window/widgets/progress_bar command
ProgressBar 命令式窗口验收,不依赖 DevServer。
ProgressBar 命令式窗口验收,不依赖 DevServer。
window/widgets/split_view command
SplitView 两区/嵌套布局与输入验收,不使用 DevServer。
SplitView 两区/嵌套布局与输入验收,不使用 DevServer。
window/widgets/switch command
Switch 两态、点击/拖动、短动画及声明协调窗口验收,不依赖 DevServer。
Switch 两态、点击/拖动、短动画及声明协调窗口验收,不依赖 DevServer。
window/widgets/tab_detach command
TabView 拖出创建新窗口验收,不使用 DevServer。
TabView 拖出创建新窗口验收,不使用 DevServer。
window/widgets/tab_transfer command
TabView 跨窗口页面移交验收,不使用 DevServer。
TabView 跨窗口页面移交验收,不使用 DevServer。
window/widgets/table command
TableView 多列记录、虚拟化、声明协调与现代外观验收,不使用 DevServer。
TableView 多列记录、虚拟化、声明协调与现代外观验收,不使用 DevServer。
window/widgets/tabs command
TabBar/TabView 基础交互与外观窗口验证,不使用 DevServer。
TabBar/TabView 基础交互与外观窗口验证,不使用 DevServer。
window/widgets/tree_view command
TreeView 模型、虚拟化、键盘交互和声明绑定验收,不使用 DevServer。
TreeView 模型、虚拟化、键盘交互和声明绑定验收,不使用 DevServer。
window/widgets/ui_progress_bar command
ProgressBar 声明式窗口验收,不依赖 DevServer。
ProgressBar 声明式窗口验收,不依赖 DevServer。
window/widgets/ui_tab_transfer command
UI TabView 跨窗口子树移交验收,不使用 DevServer。
UI TabView 跨窗口子树移交验收,不使用 DevServer。
theme
basic
Package basic provides the fallback appearance for GOUI widgets.
Package basic provides the fallback appearance for GOUI widgets.
modern
Package modern builds an explicitly enabled, platform-independent stylesheet.
Package modern builds an explicitly enabled, platform-independent stylesheet.
Package ui implements GOUI's declarative view layer.
Package ui implements GOUI's declarative view layer.
Package widgets contains composite controls built on the gui Widget kernel.
Package widgets contains composite controls built on the gui Widget kernel.
style
Package style preserves the legacy widget fallback rule entry point.
Package style preserves the legacy widget fallback rule entry point.
ui
Package ui adapts composite widgets to GOUI's declarative View layer.
Package ui adapts composite widgets to GOUI's declarative View layer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL