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.
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.
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!
The code under
webview_exampleis 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.
gtk3and
libappindicator3development 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-devis also required .
To build
webview_example, you also need to install
libwebkit2gtk-4.0-devand remove
webview_example/rsrc.sysowhich is required on Windows.
go build -ldflags -H=windowsgui
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:
NSHighResolutionCapable True<!-- avoid showing the app on the Dock --> <key>LSUIElement</key> <string>1</string>
Consult the Official Apple Documentation here.