tray-icon lets you create tray icons for desktop applications.
Platforms supported:
- Windows
- macOS
- Linux (gtk Only)
Platform-specific notes:
- On Windows and Linux, an event loop must be running on the thread, on Windows, a win32 event loop and on Linux, a gtk event loop. It doesn't need to be the main thread but you have to create the tray icon on the same thread as the event loop.
- On macOS, an event loop must be running on the main thread so you also need to create the tray icon on the main thread.
Dependencies (Linux Only)
On Linux, gtk
and libappindicator
or libayatnat-appindicator
are used to create the tray icon, so make sure to install them on your system.
Arch Linux / Manjaro:
Debian / Ubuntu:
if you use tray_icon::muda
module, make sure to checkout https://github.com/tauri-apps/muda#dependencies
Examples
Create a tray icon without a menu.
use TrayIconBuilder;
let tray_icon = new
.with_tooltip
.with_icon
.build
.unwrap;
Create a tray icon with a menu.
use ;
let tray_menu = new;
let tray_icon = new
.with_menu
.with_tooltip
.with_icon
.build
.unwrap;
Processing tray events
You can use TrayEvent::receiver
to get a reference to the TrayEventReceiver
which you can use to listen to events when a click happens on the tray icon
use TrayEvent;
if let Ok = receiver.try_recv
You can also listen for the menu events using TrayEvent::receiver
to get events for the tray context menu.
use ;
if let Ok = receiver.try_recv
if let Ok = receiver.try_recv
License
Apache-2.0/MIT