a cross platfrom Go library to place an icon and menu in the notification area

systray is a cross-platform Go library to place an icon and menu in the notification area.

Features

  • Supported on Windows, macOS, and Linux
  • Menu items can be checked and/or disabled
  • Methods may be called from any Goroutine

API

func main() {
	systray.Run(onReady, onExit)
}

func onReady() {
	systray.SetIcon(icon.Data)
	systray.SetTitle("Awesome App")
	systray.SetTooltip("Pretty awesome超级棒")
	mQuit := systray.AddMenuItem("Quit", "Quit the whole app")

	// Sets the icon of a menu item. Only available on Mac and Windows.
	mQuit.SetIcon(icon.Data)
}

func onExit() {
	// clean up here
}

See full API as well as CHANGELOG.

Try the example app!

Have go v1.12+ or higher installed? Here's an example to get started on macOS:

git clone https://github.com/getlantern/systray
cd example
env GO111MODULE=on go build
./example

On Windows, you should build like this:

env GO111MODULE=on go build -ldflags "-H=windowsgui"

The following text will then appear on the console:

go: finding github.com/skratchdot/open-golang latest
go: finding github.com/getlantern/systray latest
go: finding github.com/getlantern/golog latest

Now look for Awesome App in your menu bar!

Awesome App screenshot

The Webview example

The code under webview_example is to demostrate how it can co-exist with other UI elements. Note that the example doesn't work on macOS versions older than 10.15 Catalina.

Platform notes

Linux

  • Building apps requires gcc as well as the gtk3 and libappindicator3 development headers to be installed. For Debian or Ubuntu, you may install these using:
sudo apt-get install gcc libgtk-3-dev libappindicator3-dev

On Linux Mint, libxapp-dev is also required .

To build webview_example, you also need to install libwebkit2gtk-4.0-dev and remove webview_example/rsrc.syso which is required on Windows.

Windows

  • To avoid opening a console at application startup, use these compile flags:
go build -ldflags -H=windowsgui

macOS

On macOS, you will need to create an application bundle to wrap the binary; simply folders with the following minimal structure and assets:

SystrayApp.app/
  Contents/
    Info.plist
    MacOS/
      go-executable
    Resources/
      SystrayApp.icns

When running as an app bundle, you may want to add one or both of the following to your Info.plist:

<!-- avoid having a blurry icon and text -->
	<key>NSHighResolutionCapable</key>
	<string>True</string>

	<!-- avoid showing the app on the Dock -->
	<key>LSUIElement</key>
	<string>1</string>

Consult the Official Apple Documentation here.

Credits

Comments
  • not working on windows

    not working on windows

    ERROR systray: systray_windows.go:795 Unable to set icon: The operation completed successfully. [error=Unable to set icon: %v error_location=github.com/getlantern/systray.SetIcon (systray_windows.go:795) error_op= error_text=Unable to set icon: The operation completed successfully. error_type=errors.Error]
    ERROR systray: systray_windows.go:795   at github.com/getlantern/systray.SetIcon (systray_windows.go:795)
    ERROR systray: systray_windows.go:795   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:63)
    ERROR systray: systray_windows.go:795   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:795   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:795 Caused by: The operation completed successfully.
    ERROR systray: systray_windows.go:853 Unable to set tooltip: Unspecified error [error=Unable to set tooltip: %v error_location=github.com/getlantern/systray.SetTooltip (systray_windows.go:853) error_op= error_text=Unable to set tooltip: Unspecified error error_type=errors.Error]
    ERROR systray: systray_windows.go:853   at github.com/getlantern/systray.SetTooltip (systray_windows.go:853)
    ERROR systray: systray_windows.go:853   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:64)
    ERROR systray: systray_windows.go:853   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:853   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:853 Caused by: Unspecified error
    ERROR systray: systray_windows.go:861 Unable to addOrUpdateMenuItem: Invalid menu handle. [error=Unable to addOrUpdateMenuItem: %v error_location=github.com/getlantern/systray.addOrUpdateMenuItem (systray_windows.go:861) error_op= error_text=Unable to addOrUpdateMenuItem: Invalid menu handle. error_type=errors.Error]
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.addOrUpdateMenuItem (systray_windows.go:861)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.(*MenuItem).update (systray.go:192)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.AddMenuItem (systray.go:114)
    ERROR systray: systray_windows.go:861   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:66)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:861   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:861 Caused by: Invalid menu handle.
    ERROR systray: systray_windows.go:831 Unable to load icon from temp file: The operation completed successfully. [error=Unable to load icon from temp file: %v error_location=github.com/getlantern/systray.(*MenuItem).SetIcon (systray_windows.go:831) error_op= error_text=Unable to load icon from temp file: The operation completed successfully. error_type=errors.Error]
    ERROR systray: systray_windows.go:831   at github.com/getlantern/systray.(*MenuItem).SetIcon (systray_windows.go:831)
    ERROR systray: systray_windows.go:831   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:67)
    ERROR systray: systray_windows.go:831   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:831   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:831 Caused by: The operation completed successfully.
    ERROR systray: systray_windows.go:861 Unable to addOrUpdateMenuItem: Invalid menu handle. [error=Unable to addOrUpdateMenuItem: %v error_location=github.com/getlantern/systray.addOrUpdateMenuItem (systray_windows.go:861) error_op= error_text=Unable to addOrUpdateMenuItem: Invalid menu handle. error_type=errors.Error]
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.addOrUpdateMenuItem (systray_windows.go:861)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.(*MenuItem).update (systray.go:192)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.AddMenuItem (systray.go:114)
    ERROR systray: systray_windows.go:861   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:69)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:861   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:861 Caused by: Invalid menu handle.
    ERROR systray: systray_windows.go:831 Unable to load icon from temp file: The operation completed successfully. [error=Unable to load icon from temp file: %v error_location=github.com/getlantern/systray.(*MenuItem).SetIcon (systray_windows.go:831) error_op= error_text=Unable to load icon from temp file: The operation completed successfully. error_type=errors.Error]
    ERROR systray: systray_windows.go:831   at github.com/getlantern/systray.(*MenuItem).SetIcon (systray_windows.go:831)
    ERROR systray: systray_windows.go:831   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:70)
    ERROR systray: systray_windows.go:831   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:831   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:831 Caused by: The operation completed successfully.
    ERROR systray: systray_windows.go:861 Unable to addOrUpdateMenuItem: Invalid menu handle. [error=Unable to addOrUpdateMenuItem: %v error_location=github.com/getlantern/systray.addOrUpdateMenuItem (systray_windows.go:861) error_op= error_text=Unable to addOrUpdateMenuItem: Invalid menu handle. error_type=errors.Error]
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.addOrUpdateMenuItem (systray_windows.go:861)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.(*MenuItem).update (systray.go:192)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.AddMenuItem (systray.go:114)
    ERROR systray: systray_windows.go:861   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:72)
    ERROR systray: systray_windows.go:861   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:861   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:861 Caused by: Invalid menu handle.
    ERROR systray: systray_windows.go:831 Unable to load icon from temp file: The operation completed successfully. [error=Unable to load icon from temp file: %v error_location=github.com/getlantern/systray.(*MenuItem).SetIcon (systray_windows.go:831) error_op= error_text=Unable to load icon from temp file: The operation completed successfully. error_type=errors.Error]
    ERROR systray: systray_windows.go:831   at github.com/getlantern/systray.(*MenuItem).SetIcon (systray_windows.go:831)
    ERROR systray: systray_windows.go:831   at github.com/mangalaman93/giggle/tray.(*GTray).OnReady (tray.go:73)
    ERROR systray: systray_windows.go:831   at github.com/getlantern/systray.Register.func2 (systray.go:89)
    ERROR systray: systray_windows.go:831   at runtime.goexit (asm_amd64.s:1373)
    ERROR systray: systray_windows.go:831 Caused by: The operation completed successfully.
    
  • Windows SetTooltip invalid memory address

    Windows SetTooltip invalid memory address

    PS C:\Users\Simon\go\src\github.com\psidex\EACS> go run .\cmd\test\main.go
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal 0xc0000005 code=0x0 addr=0x0 pc=0x6608e6]
    
    goroutine 6 [running]:
    github.com/getlantern/systray.(*winTray).setTooltip(0x921fa0, 0x6f6138, 0x1d, 0xc000086058, 0xc0000311b8)
            C:/Users/Simon/go/pkg/mod/github.com/getlantern/[email protected]/systray_windows.go:226 +0x66
    github.com/getlantern/systray.SetTooltip(0x6f6138, 0x1d)
            C:/Users/Simon/go/pkg/mod/github.com/getlantern/[email protected]/systray_windows.go:852 +0x4c
    main.OnReady()
            C:/Users/Simon/go/src/github.com/psidex/EACS/cmd/test/main.go:8 +0x3d
    github.com/getlantern/systray.Register.func2(0xc000014180, 0x706528)
            C:/Users/Simon/go/pkg/mod/github.com/getlantern/[email protected]/systray.go:91 +0x45
    created by github.com/getlantern/systray.Register
            C:/Users/Simon/go/pkg/mod/github.com/getlantern/[email protected]/systray.go:89 +0xe3
    exit status 2
    

    here is the contents of main.go:

    package main
    
    import (
    	"github.com/getlantern/systray"
    )
    
    func OnReady() {
    	systray.SetTooltip("This is the tooltip text")
    }
    
    func OnExit() {
    	// No cleanup needed.
    }
    
    func main() {
    	systray.Run(OnReady, OnExit)
    }
    
    
  • Systray requires admin-rights on Windows when installed in program files

    Systray requires admin-rights on Windows when installed in program files

    With the current version of systray, I cannot run my installed application on Windows without administrative permissions. Reason: Systray attempts to store the icon file inside the application directory.

    panic: Unable to save icon to disk: open C:\Program Files[MyApp]\systray.78ab1d2dac477997ecd76010880359c7.ico: Access is denied.

    goroutine 34 [running]: github.com/getlantern/systray.fail(...) C:/Users/venoran/nextcloud/go/src/github.com/getlantern/systray/systray_windows.go:218

    Looking through commits for systray, it appears that previously the temp directory was used to store icon files. This worked because it does not require elevated permissions in Windows.

    If it is necessary to read icon files from disk, I could place icon files in the application directory myself during installation and systray could read those. Alternatively, using an option for using temp (or any specified) directory would also work for me as I could use user-accessible dirs.

    Is this is a known issue? Am I doing something wrong?

    Any feedback would be appreciated. Thank you for working on this. It is a great help to me.

  • OSX Mojave warnings...

    OSX Mojave warnings...

    Upgraded my laptop to Mojave and I am getting the following warnings:

    vendor/github.com/getlantern/systray

    systray_darwin.m:67:15: warning: 'setImage:' is deprecated: first deprecated in macOS 10.14 - Use the receiver's button.image instead [-Wdeprecated-declarations] /System/Library/Frameworks/AppKit.framework/Headers/NSStatusItem.h:85:39: note: property 'image' is declared deprecated here /System/Library/Frameworks/AppKit.framework/Headers/NSStatusItem.h:85:39: note: 'setImage:' has been explicitly marked deprecated here systray_darwin.m:71:15: warning: 'setTitle:' is deprecated: first deprecated in macOS 10.14 - Use the receiver's button.title instead [-Wdeprecated-declarations] /System/Library/Frameworks/AppKit.framework/Headers/NSStatusItem.h:83:38: note: property 'title' is declared deprecated here /System/Library/Frameworks/AppKit.framework/Headers/NSStatusItem.h:83:38: note: 'setTitle:' has been explicitly marked deprecated here systray_darwin.m:75:15: warning: 'setToolTip:' is deprecated: first deprecated in macOS 10.14 - Use the receiver's button.toolTip instead [-Wdeprecated-declarations] /System/Library/Frameworks/AppKit.framework/Headers/NSStatusItem.h:89:38: note: property 'toolTip' is declared deprecated here /System/Library/Frameworks/AppKit.framework/Headers/NSStatusItem.h:89:38: note: 'setToolTip:' has been explicitly marked deprecated here systray_darwin.m:105:24: warning: 'NSOnState' is deprecated: first deprecated in macOS 10.14 [-Wdeprecated-declarations] /System/Library/Frameworks/AppKit.framework/Headers/NSCell.h:80:34: note: 'NSOnState' has been explicitly marked deprecated here systray_darwin.m:107:24: warning: 'NSOffState' is deprecated: first deprecated in macOS 10.14 [-Wdeprecated-declarations] /System/Library/Frameworks/AppKit.framework/Headers/NSCell.h:79:34: note: 'NSOffState' has been explicitly marked deprecated here

  • undefined functions

    undefined functions

    ../../go/pkg/mod/github.com/getlantern/[email protected]/systray.go:81:2: undefined: nativeLoop ../../go/pkg/mod/github.com/getlantern/[email protected]/systray.go:87:3: undefined: quit ../../go/pkg/mod/github.com/getlantern/[email protected]/systray.go:105:2: undefined: addSeparator ../../go/pkg/mod/github.com/getlantern/[email protected]/systray.go:139:2: undefined: hideMenuItem ../../go/pkg/mod/github.com/getlantern/[email protected]/systray.go:144:2: undefined: showMenuItem ../../go/pkg/mod/github.com/getlantern/[email protected]/systray.go:169:2: undefined: addOrUpdateMenuItem make: *** [linux] Error 2

  • Not working from inside a goroutine

    Not working from inside a goroutine

    In my app, I'm trying to run 3 goroutines:

    • http listner
    • ui using lorca
    • systray Both http listner and lorca ui are working fine, but the systray is not executed, my code is:
    var ui lorca.UI
    var err error
    
    func main() {
    	go func() {
    	systray.Run(onReady, onExit)
    	}()
    	// Start Host goroutine
    	go func() {
    
    		http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
    		http.HandleFunc("/", index)
    		http.ListenAndServe(":8090", nil)
    	}()
    
    	// Start UI
    	ui, err = lorca.New("http://localhost:8090/", "", 1200, 800)
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer ui.Close()
    	ui.Bind("setLanguage", func(data string) {
    		// perform the server side task here
    		fmt.Println(data)
    	})
    
    	<-ui.Done()
    }
    

    If I tried to execute systray.Run(onReady, onExit) without goroutine, then the systray is working fine, but blocking the other 2 goroutines frombing executed!

    I'm running my code at MacBook Air macOS Big Sur Version 11.2.2

  • Add cross-compilation support for Windows

    Add cross-compilation support for Windows

    This branch adds cross-compilation support for Windows by building the Windows functionality into a DLL and loading that dynamically from the Go code.

  • Can we get MacOS M1 support?

    Can we get MacOS M1 support?

    I'd like to create binaries for M1 users, but this library does not seem to compile against darwin+arm64 (MacOS M1). I'll be forever grateful if this feature can be added.

    Thank you!


    Reproduction steps:

    $ git clone [email protected]:getlantern/systray.git
    $ cd systray
    $ GOOS=darwin GOARCH=arm64 go build .
    

    Output:

    # github.com/getlantern/systray
    ./systray.go:78:2: undefined: nativeLoop
    ./systray.go:106:2: undefined: registerSystray
    ./systray.go:111:14: undefined: quit
    ./systray.go:136:2: undefined: addSeparator
    ./systray.go:190:2: undefined: hideMenuItem
    ./systray.go:195:2: undefined: showMenuItem
    ./systray.go:220:2: undefined: addOrUpdateMenuItem
    
  • Spacing between icons changes (Monterey, M1 Mac with Notch)

    Spacing between icons changes (Monterey, M1 Mac with Notch)

    The distance between the icons in the menubar changes as soon as a program is started with this lib. This seems to occur only on monterey and new M1 models with notch. Intel models with the same OS version do not have this problem. Here screenshots without and with systray. Before starting systray app: without_systray After starting systray app: with_systray

    Any Idea?

  • How do we make a dock icon do something interesting when clicked?

    How do we make a dock icon do something interesting when clicked?

    There is a large app icon sitting in the dock on Mac. We could remove it, but we'd prefer it to do something interesting, e.g. open a popup or a window. Any way to do that?

  • Fix build on debian 11 and Ubuntu20.04

    Fix build on debian 11 and Ubuntu20.04

    On Ubuntu20.04, exec go build in example dir failed:

    go build 
    # pkg-config --cflags  -- ayatana-appindicator3-0.1 gtk+-3.0 appindicator3-0.1
    Package appindicator3-0.1 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `appindicator3-0.1.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'appindicator3-0.1' found
    pkg-config: exit status 1
    

    The PR fixed this issue. And I tested on Ubuntu18.04 which was worked.

  • Failed to compile in Windows ARM64 environment

    Failed to compile in Windows ARM64 environment

    The errors are showing as follows:

    # golang.org/x/sys/windows
    ..\..\go\pkg\mod\golang.org\x\[email protected]\windows\zsyscall_windows.go:2833:38: undefined: WSAData
    ..\..\go\pkg\mod\golang.org\x\[email protected]\windows\zsyscall_windows.go:3106:51: undefined: Servent
    ..\..\go\pkg\mod\golang.org\x\[email protected]\windows\zsyscall_windows.go:3120:50: undefined: Servent
    ..\..\go\pkg\mod\golang.org\x\[email protected]\windows\zsyscall_windows.go:3122:8: undefined: Servent
    

    It looks like some types are not found.

  • Menu turn black after a few days

    Menu turn black after a few days

    Not sure if this is a known issue. The menu will consistently turn black after leaving it alone for a day or two. When I mouse over the black area it can show what's the normal menu item. I can still click on the menu items but it goes to black soon after.

    Edit: The problem only appears on Windows 10/11

    Screenshot 2022-11-12 073338

  • Native support for Apple Silicon (arm64)

    Native support for Apple Silicon (arm64)

    Could you please add native support for Apple Silicon (arm64) for macOS?

    More: https://developer.apple.com/documentation/apple-silicon/porting-your-macos-apps-to-apple-silicon

  • Monochrome icon in macOS menu bar

    Monochrome icon in macOS menu bar

    Could you please make the menu bar icon monochrome as this is the default behavior for most other macOS applications?

    Useful links: https://developer.apple.com/design/human-interface-guidelines/components/system-experiences/the-menu-bar/#menu-bar-extras, https://bjango.com/articles/designingmenubarextras/#colour-and-template-images

  • Wrap setIcon NSImage ops within autoreleasepool pattern

    Wrap setIcon NSImage ops within autoreleasepool pattern

    This allows us to prevent memory leaks when calling setIcon many times due to state change

    Is related to #135

    see https://stackoverflow.com/a/25880106

Linux port of tailscale system tray menu.
Linux port of tailscale system tray menu.

tailscale-systray Linux port of tailscale system tray menu. Usage $ tailscale-systray Requirements tailscale Installation Building app require gcc, l

Jan 6, 2023
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

webview A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Ni

Dec 28, 2022
Go cross-platform library for displaying dialogs and input boxes

dlgs dlgs is a cross-platform library for displaying dialogs and input boxes. Installation go get -u github.com/gen2brain/dlgs Documentation Document

Dec 24, 2022
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

webview A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Ni

Jan 1, 2023
An experimental Go cross platform UI library.

GXUI - A Go cross platform UI library. Notice: Unfortunately due to a shortage of hours in a day, GXUI is no longer maintained. If you're looking for

Jan 6, 2023
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

Dec 30, 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

Jan 9, 2023
Build cross platform GUI apps with GO and HTML/JS/CSS (powered by nwjs)
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

Dec 11, 2022
Cross-platform GUI for go is never this easy and clean.
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

Jul 12, 2022
Cross platform GUI in Go based on Material Design
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

Jan 3, 2023
Build cross-platform modern desktop apps in Go + HTML5
Build cross-platform modern desktop apps in Go + HTML5

Lorca A very small library to build modern HTML5 desktop apps in Go. It uses Chrome browser as a UI layer. Unlike Electron it doesn't bundle Chrome in

Jan 6, 2023
RobotGo, Go Native cross-platform GUI automation @vcaesar

Robotgo Golang Desktop Automation. Control the mouse, keyboard, bitmap, read the screen, Window Handle and global event listener. RobotGo supports Mac

Jan 7, 2023
A cross-platform app-development module for Go.
A cross-platform app-development module for Go.

The cross-platform Go module for building apps (pronounced klo-va-seed). Usecases As a lightweight alternative to Electron Write your frontend and nat

Dec 1, 2022
pure go, cross-platform, MIT-licensed ui toolkit for developers
pure go, cross-platform, MIT-licensed ui toolkit for developers

duit - developer ui toolkit WARNING: this library is work in progress. backwards incompatible changes will be made. details duit is a pure go (*), cro

Dec 24, 2022
Cross platform rapid GUI framework for golang based on Dear ImGui.
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

Dec 28, 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

Oct 31, 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

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

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

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

Apr 18, 2022
A utility library to make use of the X Go Binding easier. (Implements EWMH and ICCCM specs, key binding support, etc.)

xgbutil is a utility library designed to work with the X Go Binding. This project's main goal is to make various X related tasks easier. For example,

Dec 10, 2022