Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/getlantern/systray
a cross platfrom Go library to place an icon and menu in the notification area
https://github.com/getlantern/systray
Last synced: about 1 month ago
JSON representation
a cross platfrom Go library to place an icon and menu in the notification area
- Host: GitHub
- URL: https://github.com/getlantern/systray
- Owner: getlantern
- License: apache-2.0
- Created: 2014-11-12T03:41:57.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-11-10T08:37:11.000Z (7 months ago)
- Last Synced: 2024-04-15T03:25:52.831Z (about 2 months ago)
- Language: Go
- Homepage:
- Size: 52.5 MB
- Stars: 3,113
- Watchers: 67
- Forks: 426
- Open Issues: 100
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Lists
- awesome-stars - getlantern/systray
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go-cn - systray
- awesome-stars - getlantern/systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-stars - systray
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- go-awesome - systray - 跨平台支持菜单栏管理 (开源类库 / 桌面开发)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. Stars:`3.1K`. (GUI / Search and Analytic Databases)
- awesome - getlantern/systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-go - systray - | - | - | (GUI / Advanced Console UIs)
- awesome-repositories - getlantern/systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- fucking-awesome-go - :octocat: systray - Cross platform Go library to place an icon and menu in the notification area :star: 80 :fork_and_knife: 12 (GUI / Advanced Console UIs)
- awesome-go-projects - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Standard CLI)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area (GUI / Advanced Console UIs)
- awesome-go-with-framework - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go-cn - systray
- go-awesome-cn-star - systray
- awesome-stars - systray
- awesome-stars - getlantern/systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-stars - getlantern/systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go - systray - 跨平台去图书馆在通知区域放置一个图标和菜单。 (<span id="gui">GUI</span> / <span id="高级控制台用户界面-advanced-console-uis">高级控制台用户界面 Advanced Console UIs</span>)
- awesome-go. - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go-cn - systray - 一个跨平台的 Go 语言库,用于在桌面提醒区域放置按钮及菜单 (GUI / 高级控制台界面)
- awesome-go-with-stars - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- repo-1316-awesome-go-cn - systray
- repo-1211-awesome-go-cn - systray
- awesome-go-cn - systray
- awesome-Char - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-reader - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- Go-awesome - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area (GUI / Advanced Console UIs)
- awesome-go-cn - systray
- stars - getlantern/systray
- awesome-go-zh - systray
- awesome-go-handwritten - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go - systray - 一個跨平台的 Go 語言庫,用於在桌面提醒區域放置按鈕及菜單 (GUI / 高級控制台界面)
- my-stars - getlantern/systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-go - systray - a cross platfrom Go library to place an icon and menu in the notification area - ★ 551 (GUI)
- go-awesome - systray - Cross-platform support for menu bar management (Open source library / Desktop Development)
- awesome-go2 - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome - systray - a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. - :arrow_down:28 - :star:107 (GUI / Advanced Console UIs)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area (GUI / Advanced Console UIs)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Advanced Console UIs)
- awesome-go-stars - systray(stars: 3105) - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go-cn - systray
- awesome-stars - getlantern/systray - `★3156` a cross platfrom Go library to place an icon and menu in the notification area (Go)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
- awesome-go - systray - Cross platform Go library to place an icon and menu in the notification area. (GUI / Search and Analytic Databases)
README
# systray
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
* Most functions may be called from any goroutine## API
```go
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](https://pkg.go.dev/badge/github.com/getlantern/systray.svg)](https://pkg.go.dev/github.com/getlantern/systray) as well as [CHANGELOG](https://github.com/getlantern/systray/tree/master/CHANGELOG.md).
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:
```sh
git clone https://github.com/getlantern/systray
cd systray/example
env GO111MODULE=on go build
./example
```On Windows, you should build like this:
```
env GO111MODULE=on go build -ldflags "-H=windowsgui"
```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` and `libayatana-appindicator3` development headers to be installed. For Debian or Ubuntu, you may install these using:
```sh
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:
```sh
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:
```xml
NSHighResolutionCapable
True
LSUIElement
1
```Consult the [Official Apple Documentation here](https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1).
On macOS, it's possible to set the underlying
[`NSStatusItemBehavior`](https://developer.apple.com/documentation/appkit/nsstatusitembehavior?language=objc)
with `systray.SetRemovalAllowed(true)`. When enabled, the user can cmd-drag the
icon off the menu bar.## Credits
- https://github.com/xilp/systray
- https://github.com/cratonica/trayhost