Platform-native GUI library for Go.

Overview

ui: platform-native GUI library for Go

This is a library that aims to provide simple GUI software development in Go. It is based on my libui, a simple cross-platform library that does the same thing, but written in C.

It runs on/requires:

  • Windows: cgo, Windows Vista SP2 with Platform Update and newer
  • Mac OS X: cgo, Mac OS X 10.8 and newer
  • other Unixes: cgo, GTK+ 3.10 and newer
    • Debian, Ubuntu, etc.: sudo apt-get install libgtk-3-dev
    • Red Hat/Fedora, etc.: sudo dnf install gtk3-devel

It also requires Go 1.8 or newer.

It currently aligns to libui's Alpha 4.1, with only a small handful of functions not available.

Status

Package ui is currently mid-alpha software. Much of what is currently present runs stabily enough for the examples and perhaps some small programs to work, but the stability is still a work-in-progress, much of what is already there is not feature-complete, some of it will be buggy on certain platforms, and there's a lot of stuff missing. The libui README has more information.

Installation

Once you have the dependencies installed, a simple

go get github.com/andlabs/ui/...

should suffice.

Documentation

The in-code documentation is sufficient to get started, but needs improvement.

Some simple example programs are in the examples directory. You can go build each of them individually.

Windows manifests

Package ui requires a manifest that specifies Common Controls v6 to run on Windows. It should at least also state as supported Windows Vista and Windows 7, though to avoid surprises with other packages (or with Go itself; see this issue) you should state compatibility with higher versions of Windows too.

The simplest option is provided as a subpackage winmanifest; you can simply import it without a name, and it'll set things up properly:

import _ "github.com/andlabs/ui/winmanifest"

You do not have to worry about importing this in non-Windows-only files; it does nothing on non-Windows platforms.

If you wish to use your own manifest instead, you can use the one in winmanifest as a template to see what's required and how. You'll need to specify the template in a .rc file and use windres in MinGW-w64 to generate a .syso file as follows:

windres -i resources.rc -o winmanifest_windows_GOARCH.syso -O coff

You may also be interested in the github.com/akavel/rsrc and github.com/josephspurrier/goversioninfo packages, which provide other Go-like options for embedding the manifest.

Note that if you choose to ship a manifest as a separate .exe.manifest file instead of embedding it in your binary, and you use Cygwin or MSYS2 as the source of your MinGW-w64, Cygwin and MSYS2 instruct gcc to embed a default manifest of its own if none is specified. This default will override your manifest file! See this issue for more details, including workaround instructions.

macOS program execution

If you run a macOS program binary directly from the command line, it will start in the background. This is intentional; see this for more details.

Issues
  • Go get fails on linux_amd64

    Go get fails on linux_amd64

    Get the following when trying to go get:

    $ LANG=C go get -u github.com/andlabs/ui
    # github.com/andlabs/ui
    /usr/bin/ld: andlabs/ui/libui_linux_amd64.a(libui-combined.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
    /usr/bin/ld: final link failed: Nonrepresentable section on output
    collect2: error: ld returned 1 exit status
    

    LANG=C merely used to have the errors in English.

    opened by mixedCase 30
  • windows: On Windows (inside VirtualBox), repaint performance is horrendous.

    windows: On Windows (inside VirtualBox), repaint performance is horrendous.

    On Windows (inside VirtualBox), repaint performance is horrendous.

    Video is here: https://www.youtube.com/watch?v=TjIqIA7EV14

    Test Harness is here: https://bitbucket.org/gedw99/md-desktopnative-x

    # go 1.7
    
    go env
    set GOARCH=amd64
    set GOBIN=C:\Users\root\workspace\go\bin
    set GOEXE=.exe
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOOS=windows
    set GOPATH=C:\Users\root\workspace\go
    set GORACE=
    set GOROOT=C:\Go
    set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
    set CC=gcc
    set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\root\AppData\Local\Temp\go-build476382774=/tmp/go-build -gno-record-gcc-switches
    set CXX=g++
    set CGO_ENABLED=1
    
    go get bitbucket.org/gedw99/md-desktopnative-x
    
    cd cmd/01
    
    # build it
    go build
    
    # run it
    ./01
    

    It could be because i am inside Virtual box. If anyone else is on windows i would like to know how it performs for you.

    opened by joeblew99 29
  • Help installing on os x

    Help installing on os x

    hi there,

    I am trying to install the latest master on OS X.

     go install github.com/andlabs/ui
    can't load package: package github.com/andlabs/ui: ~/Development/Go/src/github.com/andlabs/ui/link_darwin.go: malformed #cgo argument: @executable_path
    

    Any hints how to solve this issue?

    Thanks in advance, awesome project

    opened by sharpner 25
  • Can't install

    Can't install

    go get -v -u github.com/andlabs/ui
    github.com/andlabs/ui (download)
    github.com/andlabs/ui
    # github.com/andlabs/ui
    /usr/sbin/ld: ../Go/src/github.com/andlabs/ui/libui_linux_amd64.a(libui-combined.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
    /usr/sbin/ld: final link failed: Nonrepresentable section on output
    collect2: error: ld returned 1 exit status
    

    go version go1.10 linux/amd64 libui 0.3.5.alpha-1 gcc 7.3.0

    opened by DeadNumbers 20
  • Standalone (non-MSYS) MinGW-w64 4 and lower do not include TaskDialog() (was: Go get failing)

    Standalone (non-MSYS) MinGW-w64 4 and lower do not include TaskDialog() (was: Go get failing)

    # github.com/andlabs/ui
    C:/GoSpace/src/github.com/andlabs/ui/libui_windows_amd64.a(stddialogs.cpp.obj): In function `msgbox':
    E:/github.com/andlabs/libui/windows/stddialogs.cpp:113: undefined reference to `__imp_TaskDialog'
    collect2.exe: error: ld returned 1 exit status
    

    Windows 10.

    opened by vadimyer 19
  • Add paddings to Stack and create Layout function

    Add paddings to Stack and create Layout function

    I tried to make an intuitive function to quickly create good-looking layouts. I liked the result, but I understand if you don't want to increase the API size right now, so this is only a suggestion. Anyway, the padding/margin code may be useful by itself.

    This change is twofold:

    • First, add unexported attributes padding and marginBorder to Stack that work as expected. I'm open to name suggestions here.
    • Second, export a function Layout that creates a stack with automatic orientation, padding and border.

    Layout works by giving only the topmost stacks a margin, and settings its orientation to "vertical". All nested stacks inside it are oriented perpendicular to its parent and have only padding, not margin. As a bonus, any nil value is converted to a stretchy space.

    So for example, this code:

    w := ui.NewWindow("Test Window", 400, 250)
    w.Open(ui.Layout(ui.NewLabel("Task Description"),
        ui.NewProgressBar(),
        nil,
        ui.Layout(ui.NewButton("Button 1"),
            ui.NewLineEdit("Edit"),
            nil,
            ui.Layout(ui.NewButton("Button 2"),
                ui.NewButton("Button 3"),
                ui.NewButton("Button 4")),
            ui.Layout(ui.NewButton("Button 5"),
                nil,
                ui.NewButton("Button 6")))))
    

    Creates this layout:

    goui

    I personally liked the results and will be using the function, merging or not. I'm also considering making a Stretch function, so you can write ui.Layout(button1, ui.Stretch(button2), button3) but right now I can't think of an elegant implementation because the stretching information is on the parent.

    opened by boppreh 19
  • env GOOS=windows GOARCH=amd64 go build uidemo.go

    env GOOS=windows GOARCH=amd64 go build uidemo.go

    Before I start, here is my go version 1.7beta2 environment: go version go version devel +fca9fc5 Thu Jun 16 19:45:33 2016 +0000 linux/amd64

    go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/loongson/Code" GORACE="" GOROOT="/home/loongson/go1.7beta2" GOTOOLDIR="/home/loongson/go1.7beta2/pkg/tool/linux_amd64" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build780373348=/tmp/go-build -gno-record-gcc-switches" CXX="g++" CGO_ENABLED="1"

    NOTE THE BUILDING NATIVELY WITH JUST go build works and with the following: env GOOS=linux GOARCH=amd64 go build uidemo.go

    GOOD.

    CROSS-COMPILING TO WINDOWS 64-BIT HOWEVER FAILS. It seems I have to be on windows in order for this to compile successfully.

    env GOOS=windows GOARCH=amd64 go build uidemo.go

    command-line-arguments

    ./uidemo.go:8: undefined: ui.Main ./uidemo.go:9: undefined: ui.NewEntry ./uidemo.go:10: undefined: ui.NewButton ./uidemo.go:11: undefined: ui.NewLabel ./uidemo.go:12: undefined: ui.NewVerticalBox ./uidemo.go:13: undefined: ui.NewLabel ./uidemo.go:17: undefined: ui.NewWindow ./uidemo.go:19: undefined: ui.Button ./uidemo.go:22: undefined: ui.Window ./uidemo.go:23: undefined: ui.Quit ./uidemo.go:23: too many errors

    opened by omac777 18
  • Weird  issue

    Weird issue

    I ran go get github.com/andlabs/ui/ and then ran go build . for the code found here: https://github.com/andlabs/ui/wiki/Update-your-UI-in-other-goroutine

    The first time I ran it, it worked beautifully.

    I clicked the max os x red close button and the window closed. I could see in the terminal that the process shut down correctly.

    When I ran the program again (same way as before), the program doesn't run anymore. It displays this error in terminal:

     *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-1154/Misc.subproj/NSUndoManager.m:340
    2017-01-24 18:08:36.541 Test[9371:126254] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
    2017-01-24 18:08:36.544 Test[9371:126254] (
    	0   CoreFoundation                      0x00007fff974af03c __exceptionPreprocess + 172
    	1   libobjc.A.dylib                     0x00007fff9a1af76e objc_exception_throw + 43
    	2   CoreFoundation                      0x00007fff974aee1a +[NSException raise:format:arguments:] + 106
    	3   Foundation                          0x00007fff935b999b -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
    	4   Foundation                          0x00007fff9353b64f +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 156
    	5   AppKit                              0x00007fff901f9e2e _DPSNextEvent + 2389
    	6   AppKit                              0x00007fff901f8e58 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346
    	7   AppKit                              0x00007fff901eeaf3 -[NSApplication run] + 594
    	8   Test                                0x000000000406cadd uiMain + 29
    	9   Test                                0x000000000404e6c0 runtime.asmcgocall + 112
    )
    2017-01-24 18:08:36.545 Test[9371:126254] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-1154/Misc.subproj/NSUndoManager.m:340
    2017-01-24 18:08:36.547 Test[9371:126254] An uncaught exception was raised
    2017-01-24 18:08:36.547 Test[9371:126254] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
    2017-01-24 18:08:36.548 Test[9371:126254] (
    	0   CoreFoundation                      0x00007fff974af03c __exceptionPreprocess + 172
    	1   libobjc.A.dylib                     0x00007fff9a1af76e objc_exception_throw + 43
    	2   CoreFoundation                      0x00007fff974aee1a +[NSException raise:format:arguments:] + 106
    	3   Foundation                          0x00007fff935b999b -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
    	4   Foundation                          0x00007fff9353b64f +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 156
    	5   AppKit                              0x00007fff901eec41 -[NSApplication run] + 928
    	6   Test                                0x000000000406cadd uiMain + 29
    	7   Test                                0x000000000404e6c0 runtime.asmcgocall + 112
    )
    2017-01-24 18:08:36.549 Test[9371:126254] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.'
    *** First throw call stack:
    (
    	0   CoreFoundation                      0x00007fff974af03c __exceptionPreprocess + 172
    	1   libobjc.A.dylib                     0x00007fff9a1af76e objc_exception_throw + 43
    	2   CoreFoundation                      0x00007fff974aee1a +[NSException raise:format:arguments:] + 106
    	3   Foundation                          0x00007fff935b999b -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
    	4   Foundation                          0x00007fff9353b64f +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 156
    	5   AppKit                              0x00007fff901eec41 -[NSApplication run] + 928
    	6   Test                                0x000000000406cadd uiMain + 29
    	7   Test                                0x000000000404e6c0 runtime.asmcgocall + 112
    )
    libc++abi.dylib: terminating with uncaught exception of type NSException
    SIGABRT: abort
    PC=0x7fff93bcd286 m=3
    signal arrived during cgo execution
    
    goroutine 4 [syscall, locked to thread]:
    runtime.cgocall(0x405b120, 0xc420023740, 0x0)
    	/usr/local/go/src/runtime/cgocall.go:131 +0x110 fp=0xc420023710 sp=0xc4200236d0
    github.com/andlabs/ui._Cfunc_uiMain()
    	??:0 +0x41 fp=0xc420023740 sp=0xc420023710
    github.com/andlabs/ui.start(0xc420054060, 0x40a1a40)
    	/Developer/Projects/GOPATH/src/github.com/andlabs/ui/main.go:56 +0x19b fp=0xc4200237b0 sp=0xc420023740
    runtime.goexit()
    	/usr/local/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc4200237b8 sp=0xc4200237b0
    created by github.com/andlabs/ui.Main
    	/Developer/Projects/GOPATH/src/github.com/andlabs/ui/main.go:36 +0x6b
    
    goroutine 1 [chan receive]:
    github.com/andlabs/ui.Main(0x40a1a40, 0x23, 0x8)
    	/Developer/Projects/GOPATH/src/github.com/andlabs/ui/main.go:37 +0xa1
    main.main()
    	/Users/PJ20/Desktop/Tools/Test/main.go:20 +0x2d
    
    goroutine 17 [syscall, locked to thread]:
    runtime.goexit()
    	/usr/local/go/src/runtime/asm_amd64.s:2086 +0x1
    
    rax    0x0
    rbx    0x6
    rcx    0xb0102548
    rdx    0x0
    rdi    0xb03
    rsi    0x6
    rbp    0xb0102570
    rsp    0xb0102548
    r8     0x0
    r9     0x7fff8fc13d60
    r10    0x8000000
    r11    0x206
    r12    0xb01026d0
    r13    0x4461000
    r14    0xb0104000
    r15    0xb01025b0
    rip    0x7fff93bcd286
    rflags 0x206
    cs     0x7
    fs     0x0
    gs     0x0
    logout
    
    
    opened by pjebs 16
  • how to get gcc

    how to get gcc

    I installed ui-master to run a gui using golang, and I am trying to run the demo via command prompt. I get the message "# ui-master exec: "gcc": executable file not found in %PATH%". Where/how can I get that? I found a gcc written in perl, but that can't be it, right?

    opened by buzzersdad 15
  • Redraw problems on Windows

    Redraw problems on Windows

    I'm using Windows 8.1, 64 bits, and the wakeup and test applications displays some redraw problems. Here's an example (the window is exactly as it started):

    ui-redraw

    The test application displayed similar problems but I couldn't capture them. It's not visible in gif above, but the borders of the text fields also flicker when resizing the window.

    opened by boppreh 15
  • [win] cannot build wiki example

    [win] cannot build wiki example

    I can't run the example in the wiki

    libui builds using gnu make (http://gnuwin32.sourceforge.net/packages/make.htm) even though a million warnings are displayed... copied libui/out/libui.dll and libui/ui.h to ui/. created example in another package

    So far I run almost everything with a http://mingw-w64.org (updated today) - didn't work here...

    go run example.go
    # github.com/andlabs/ui
    d:/programs/mingw64/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible D:/Development/src/github.com/andlabs/ui/libui.dll when searching for -lui
    d:/programs/mingw64/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible D:/Development/src/github.com/andlabs/ui/libui.dll when searching for -lui
    d:/programs/mingw64/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lui
    collect2.exe: error: ld returned 1 exit status
    

    I tried to install mingw using the installer of http://www.mingw.org/ - didn't work either

    go run example.go
    # github.com/andlabs/ui
    cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
    
    go version go1.6 windows/amd64
    WIN 10 Pro 64 bit
    VS 2015 Community
    
    opened by lloiser 14
  • Win10下gocv+andlabs/ui同时使用出现以下错误

    Win10下gocv+andlabs/ui同时使用出现以下错误

    Win10下gocv+andlabs/ui同时使用出现以下错误, 分别单独使用时正常, 有没有大佬碰到过

    Build Error: go build -o c:\Users\Administrator\Desktop\test2\__debug_bin.exe -gcflags all=-N -l .\main.go
    # command-line-arguments
    D:\Dev\Go\pkg\tool\windows_amd64\link.exe: running g++ failed: exit status 1
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../lib\libgdi32.a(libgdi32s00803.o):(.text+0x0): multiple definition of `Rectangle'; C:\Users\Administrator\AppData\Local\Temp\go-link-4038213707\000061.o:C:\Users\Administrator\go\pkg\mod\gocv.io\x\[email protected]/imgproc.cpp:404: first defined here
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_core460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_face460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_videoio460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_imgproc460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_highgui460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_imgcodecs460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_objdetect460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_features2d460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_video460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_dnn460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_xfeatures2d460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_plot460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_tracking460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_img_hash460: No such file or directory
    D:/Dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lopencv_calib3d460: No such file or directory
    
    opened by BigCatGit 0
  • collect2.exe: error: ld returned 1 exit status

    collect2.exe: error: ld returned 1 exit status

    I got the following error:

    c:/users/map/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find 1: No such file or directory collect2.exe: error: ld returned 1 exit status

    someone can help me ?

    opened by windosws 0
  • Is this project still alive?

    Is this project still alive?

    Hey @andlabs,

    I really like your work and was wondering if this project is still alive, considered feature complete or inactive or even dead.

    Greetings Imanuel Ulbricht

    opened by DerKnerd 2
  • Reopen a closed window

    Reopen a closed window

    Hello,

    I try to re-open a window that is closed without any success. Indeed, ui.Main is not my main program loop and I want to open window on demand (it's a subroutine of my main program). When registering window to ui.Main(myWindow) and then call Destroy() from myWindow, I'm not in position to call the Main again with the same argument. Getting into the code, it appears that myWindows is considered as already registered and couldn't get it open once again.

    How should I handle this specific case?

    opened by cazzoo 0
Releases(pre-libui)
  • pre-libui(Dec 16, 2015)

    This build is available for those who still want to use a working package ui while libui is being completed. Keep in mind:

    • it is buggy (redraw issues on Windows, for instance)
    • it is not guaranteed to be stable (Go pointer shenanigans may interfere; make sure at least Windows exist on the heap!)
    • its API is very different from the final package ui API
    • it is no longer supported

    This is a tag instead of the master branch because it's already too late to branch, at least with my current knowledge of git :/

    That being said, enjoy, I guess

    Source code(tar.gz)
    Source code(zip)
Owner
Pietro Gagliardi
Pietro Gagliardi
Cross-platform Go/Golang GUI library.

中文 | English GoVCL Cross-platform Golang GUI library, The core binding is liblcl, a common cross-platform GUI library created by Lazarus. GoVCL is a n

不在乎y 1.6k Aug 12, 2022
Cross platform GUI in Go based on Material Design

About Fyne is an easy to use UI toolkit and app API written in Go. It is designed to build applications that run on desktop and mobile devices with a

Fyne.io 17.8k Aug 4, 2022
Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron)

Thanks to go-astilectron build cross platform GUI apps with GO and HTML/JS/CSS. It is the official GO bindings of astilectron and is powered by Electr

Quentin Renard 4.5k Aug 3, 2022
Build cross platform GUI apps with GO and HTML/JS/CSS (powered by nwjs)

gowd Build cross platform GUI apps with GO and HTML/JS/CSS (powered by nwjs) How to use this library: Download and install nwjs Install this library g

Danny 370 Aug 4, 2022
Cross-platform GUI for go is never this easy and clean.

gimu Strongly suggest NOT to use this project anymore, the auto-generated cgo wrapper of Nuklear has a random crash issue which is hard to fix (becaus

Allen Dang 66 Jul 12, 2022
Cross platform rapid GUI framework for golang based on Dear ImGui.

giu Cross platform rapid GUI framework for golang based on Dear ImGui and the great golang binding imgui-go. Any contribution (features, widgets, tuto

Allen Dang 1.5k Aug 8, 2022
Cross-Platform GUI Framework for Go

⚠️ I'm currently working on this project as part of my master's thesis at the Berlin University of Applied Sciences and Technology. It is under active

Jannis Rieger 2 Jun 29, 2022
Kita is a declarative, reactive GUI toolkit for build cross platform apps with web technology with single codebase

Kita is a declarative, reactive GUI toolkit for build cross platform apps with web technology with single codebase. Inspired by Flutter, React. S

zhuah 106 Apr 18, 2022
UIKit - A declarative, reactive GUI toolkit for build cross platform apps with web technology with single codebase

UIKit - A declarative, reactive GUI toolkit for build cross platform apps with web technology with single codebase

zhuah 106 Apr 18, 2022
Common library for Go GUI apps on Windows

winc Common library for Go GUI apps on Windows. It is for Windows OS only. This makes library smaller than some other UI libraries for Go.

Tad Vizbaras 138 Jul 29, 2022
Windows GUI library for Go (Golang). Comes with a graphical UI designer.

Version 2 Please go to Version 2 of this library for the latest version. Windows GUI Library This is a pure Go library to create native Windows GUIs.

null 137 Aug 1, 2022
This project provides Go bindings for nuklear.h — a small ANSI C GUI library.

Nuklear Package nk provides Go bindings for nuklear.h — a small ANSI C gui library. See github.com/vurtun/nuklear. All the binding code has automatica

null 1.5k Aug 6, 2022
Golang bindings for XCGUI, Windows GUI library, DirectUI design idea.

XCGUI 项目文档 帮助文档 程序示例 介绍 English | 简体中文 DirectUI设计思想: 在窗口内没有子窗口,界面元素都是逻辑上的区域(无HWND句柄,安全,灵活), 所有UI元素都是自主开发(不受系统限制), 更加灵活的实现各种程序界面,满足不同用户的需求.

twgh 147 Aug 7, 2022
Go wrapper around the Iup GUI toolset

Iup Go Wrapper iup is a Go wrapper around the Iup GUI toolkit. The project was started on April 27, 2011. Fork https://github.com/grd/iup is a fork of

grd 24 Nov 28, 2020
Go Wrapper for the wxWidgets GUI

This is the source code for wxGo a Go wrapper of the wxWidgets library. The actuall wxWidgets source code is not included and will need to be downloa

Jeroen Dirks 56 Jul 24, 2022
A Windows GUI toolkit for the Go Programming Language

About Walk Walk is a "Windows Application Library Kit" for the Go Programming Language. Its primarily useful for Desktop GUI development, but there is

Alexander Neumann 6.1k Aug 4, 2022
Windows GUI framework for Go.

gform is an easy to use Windows GUI toolkit for Go It provides two approaches to create UI. 1. Pure code. gform.Init() mainWindow := gform.NewForm(ni

Allen Dang 270 Jul 31, 2022
Easy Go GUI wrapper for interactive manipulation of visual algorithms/backend code.

RenderView ================ Install: go get github.com/TheGrum/renderview Needs either Shiny (limited functionality), Gio, go-gtk, or gotk3. The latt

null 28 Aug 4, 2022
Super minimal, rock-solid foundation for concurrent GUI in Go.

faiface/gui Super minimal, rock-solid foundation for concurrent GUI in Go. Installation go get -u github.com/faiface/gui Currently uses GLFW under th

Michal Štrba 446 Aug 2, 2022