MCPcopy
hub / github.com/getlantern/systray

github.com/getlantern/systray @v1.2.2 sqlite

repository ↗ · DeepWiki ↗ · release v1.2.2 ↗
93 symbols 230 edges 14 files 50 documented · 54%
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

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 libayatana-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:


    <key>NSHighResolutionCapable</key>
    <string>True</string>


    <key>LSUIElement</key>
    <string>1</string>

Consult the Official Apple Documentation here.

Credits

  • https://github.com/xilp/systray
  • https://github.com/cratonica/trayhost

Core symbols most depended-on inside this repo

AddMenuItem
called by 13
systray.go
update
called by 10
systray.go
addOrUpdateMenuItem
called by 7
systray_windows.go
SetTitle
called by 5
systray.go
newMenuItem
called by 4
systray.go
Quit
called by 4
systray.go
setIcon
called by 4
systray_windows.go
Hide
called by 3
systray.go

Shape

Function 46
Method 41
Struct 6

Languages

Go100%

Modules by API surface

systray_windows.go40 symbols
systray.go24 symbols
systray_nonwindows.go13 symbols
systray_linux.go3 symbols
systray_darwin.go3 symbols
webview_example/webview_windows.go2 symbols
webview_example/webview_nonwindows.go2 symbols
webview_example/main.go2 symbols
systray_windows_test.go2 symbols
example/main.go2 symbols

Dependencies from manifests, versioned

github.com/getlantern/gologv0.0.0-2019083007492 · 1×
github.com/lxn/walkv0.0.0-2021011208553 · 1×
github.com/lxn/winv0.0.0-2021021816391 · 1×
github.com/skratchdot/open-golangv0.0.0-2020011605553 · 1×
golang.org/x/sysv0.1.0 · 1×
gopkg.in/Knetic/govaluate.v3v3.0.0 · 1×

For agents

$ claude mcp add systray \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact