# getlantern/systray

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/getlantern-systray).**

3,707 stars · 518 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/getlantern/systray
- awesome-repositories: https://awesome-repositories.com/repository/getlantern-systray.md

## Description

systray is a Go library used to create and manage icons and menus within the operating system notification area. It functions as a cross-platform GUI library that provides a persistent application entry point and a notification area menu manager.

The library enables the creation of hierarchical menus and custom tray icons across different desktop operating systems. It supports the use of nested submenus and allows for the styling of individual menu entries with custom images.

The toolset covers a range of interaction capabilities, including the management of menu item states through checked or disabled toggles and the execution of application logic via callback event handling. It also provides controls for icon behavior, such as visibility settings and removability.

## Tags

### User Interface & Experience

- [System Tray Menu Builders](https://awesome-repositories.com/f/user-interface-experience/custom-ui-development-tools/system-tray-menu-builders.md) — Render a customizable icon and menu in the notification area to provide quick access to application controls. ([source](https://github.com/getlantern/systray#readme))
- [System Tray Integrations](https://awesome-repositories.com/f/user-interface-experience/system-tray-integrations.md) — Provides the core utility for displaying application icons and interactive menus in the system notification area. ([source](https://github.com/getlantern/systray/blob/master/CHANGELOG.md))
- [Menu Event Handlers](https://awesome-repositories.com/f/user-interface-experience/context-menu-customizations/conditional-menu-items/menu-interaction-utilities/menu-event-handlers.md) — Implements callback functions that execute specific application logic when menu items are selected. ([source](https://github.com/getlantern/systray/blob/master/systray_windows_test.go))
- [Cross-Platform GUI Toolkits](https://awesome-repositories.com/f/user-interface-experience/cross-platform-gui-toolkits.md) — Functions as a cross-platform toolkit for building consistent UI elements in the system tray.
- [Callback Event Handlers](https://awesome-repositories.com/f/user-interface-experience/icons/menu-item/interactive-menu-items/callback-event-handlers.md) — Execute a specific action or callback whenever a user chooses an item from the system tray menu. ([source](https://github.com/getlantern/systray/blob/master/systray_darwin.m))
- [Tray Popup Menus](https://awesome-repositories.com/f/user-interface-experience/interface-appearance-customizations/system-tray-customizations/tray-popup-menus.md) — Enables the composition of customizable popup menus that appear upon interacting with the tray icon. ([source](https://github.com/getlantern/systray/blob/master/go.mod))
- [System Tray Icons](https://awesome-repositories.com/f/user-interface-experience/ui-components/visual-identifiers/system-tray-icons.md) — Creates custom icons in the system tray to provide a persistent application entry point. ([source](https://github.com/getlantern/systray/blob/master/CHANGELOG.md))
- [Desktop Notification Area Components](https://awesome-repositories.com/f/user-interface-experience/desktop-notification-area-components.md) — Provides a reusable component for adding a persistent application entry point and quick-access controls.
- [UI State Synchronizers](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers/ui-state-synchronizers.md) — Ensures the native menu structure and icon properties reflect the current application state in the Go runtime.
- [Hierarchical Menu Organization](https://awesome-repositories.com/f/user-interface-experience/hierarchical-menu-organization.md) — Provides hierarchical organization of menu items into nested submenus for better scannability.
- [Menu Item](https://awesome-repositories.com/f/user-interface-experience/icons/menu-item.md) — Allows the composition of menu items with custom titles, tooltips, and separators. ([source](https://github.com/getlantern/systray/blob/master/systray.go))
- [Interactive Menu Items](https://awesome-repositories.com/f/user-interface-experience/icons/menu-item/interactive-menu-items.md) — Supports interactive menu items with checkable and disabled states to reflect application settings. ([source](https://github.com/getlantern/systray#readme))
- [Nested Menus](https://awesome-repositories.com/f/user-interface-experience/nested-menus.md) — Supports the creation of hierarchical sub-menus to organize related application functionality. ([source](https://github.com/getlantern/systray/blob/master/systray.go))
- [Tray-Based Process Controls](https://awesome-repositories.com/f/user-interface-experience/tray-based-process-controls.md) — Enables building tools that run in the background with user-accessible settings via a tray menu.

### Development Tools & Productivity

- [System Tray Managers](https://awesome-repositories.com/f/development-tools-productivity/system-tray-managers.md) — Provides a manager for rendering hierarchical menus and icons in the system tray with event handling. ([source](https://github.com/getlantern/systray/blob/master/systray_nonwindows.go))
- [Application Tray Integration](https://awesome-repositories.com/f/development-tools-productivity/system-tray-managers/application-tray-integration.md) — Manages the dynamic update of tray icon images, titles, and visibility during runtime. ([source](https://github.com/getlantern/systray/blob/master/systray.h))

### Programming Languages & Runtimes

- [Cgo Native Interop](https://awesome-repositories.com/f/programming-languages-runtimes/cgo-native-interop.md) — Uses Cgo to interface with native operating system APIs for controlling notification area elements.
- [System Tray Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/go-libraries/system-tray-libraries.md) — A Go library specifically for creating and managing icons and menus in the notification area.

### Software Engineering & Architecture

- [Platform-Specific API Implementations](https://awesome-repositories.com/f/software-engineering-architecture/polymorphism-patterns/platform-specific-api-implementations.md) — Provides a unified interface that maps to different concrete native implementations for Windows, macOS, and Linux.
- [Event-Driven Callbacks](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-callbacks.md) — Implements event-driven callbacks to trigger Go functions when users select system tray menu items.

### Business & Productivity Software

- [Cross-Platform Applications](https://awesome-repositories.com/f/business-productivity-software/cross-platform-applications.md) — Provides a consistent way to maintain a persistent application presence across multiple desktop operating systems.

### Part of an Awesome List

- [Desktop and GUI Development](https://awesome-repositories.com/f/awesome-lists/devtools/desktop-and-gui-development.md) — Cross-platform system tray management.
- [GUI Development](https://awesome-repositories.com/f/awesome-lists/devtools/gui-development.md) — Cross-platform library for system tray menus.
- [GUI Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/gui-frameworks.md) — Places icons and menus in the system notification area.
- [System Interaction](https://awesome-repositories.com/f/awesome-lists/devtools/system-interaction.md) — Cross-platform library for system tray icons.
