systray alternatives and similar packages
Based on the "GUI" category.
Alternatively, view systray alternatives based on common mentions on social networks and blogs.
-
webview
Tiny cross-platform webview library for C/C++. Uses WebKit (GTK/Cocoa) and Edge WebView2 (Windows). -
qt
Qt binding for Go (Golang) with support for Windows / macOS / Linux / FreeBSD / Android / iOS / Sailfish OS / Raspberry Pi / AsteroidOS / Ubuntu Touch / JavaScript / WebAssembly -
go-astilectron
DISCONTINUED. Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron) -
Guark
Build awesome Golang desktop apps and beautiful interfaces with Vue.js, React.js, Framework 7, and more... -
gosx-notifier
gosx-notifier is a Go framework for sending desktop notifications to OSX 10.8 or higher -
one-file-pdf
A minimalist Go PDF writer in 1982 lines. Draws text, images and shapes. Helps understand the PDF format. Used in production for reports. -
energy
Energy is a framework developed by Go language based on CEF (Chromium Embedded Framework) for developing cross-platform desktop applications for Windows, Mac OS X, and Linux -
mac-activity-tracker
A library to notify about any (pluggable) activity on your machine, and let you take action as needed -
gio
Gio is a library for writing cross-platform immediate mode GUI-s in Go. Gio supports all the major platforms: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD and WebAssembly.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of systray or a related project?
Popular Comparisons
README
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.
Note: this package requires cgo, so make sure you set CGO_ENABLED=1
before building.
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](example/screenshot.png)
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
andlibayatana-appindicator3
development headers to be installed. For Debian or Ubuntu, you may install these using:
sudo apt-get install gcc libgtk-3-dev libayatana-appindicator3-dev
On Linux Mint, libxapp-dev
is also required.
If you need to support the older libappindicator3
library instead, you can pass the build flag legacy_appindicator
when building. For example:
go build -tags=legacy_appindicator
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.