Expand description
tray-icon-win lets you create tray icons for desktop applications on Windows.
This is a personal fork of tray-icon. For general use, please consider using the original.
§Notes:
- An event loop must be running on the thread, on Windows, a win32 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.
§Examples
§Create a tray icon without a menu.
use tray_icon_win::{TrayIconBuilder, Icon};
let tray_icon = TrayIconBuilder::new()
.with_tooltip("system-tray - tray icon library!")
.with_icon(icon)
.build()
.unwrap();§Create a tray icon with a menu.
use tray_icon_win::{TrayIconBuilder, menu::Menu,Icon};
let tray_menu = Menu::new();
let tray_icon = TrayIconBuilder::new()
.with_menu(Box::new(tray_menu))
.with_tooltip("system-tray - tray icon library!")
.with_icon(icon)
.build()
.unwrap();§Processing tray events
You can use TrayIconEvent::receiver to get a reference to the TrayIconEventReceiver
which you can use to listen to events when a click happens on the tray icon
use tray_icon_win::TrayIconEvent;
if let Ok(event) = TrayIconEvent::receiver().try_recv() {
println!("{:?}", event);
}You can also listen for the menu events using MenuEvent::receiver to get events for the tray context menu.
use tray_icon_win::{TrayIconEvent, menu::MenuEvent};
if let Ok(event) = TrayIconEvent::receiver().try_recv() {
println!("tray event: {:?}", event);
}
if let Ok(event) = MenuEvent::receiver().try_recv() {
println!("menu event: {:?}", event);
}§Note for winit or tao users:
You should use TrayIconEvent::set_event_handler and forward
the tray icon events to the event loop by using EventLoopProxy
so that the event loop is awakened on each tray icon event.
enum UserEvent {
TrayIconEvent(tray_icon_win::TrayIconEvent),
MenuEvent(tray_icon_win::menu::MenuEvent)
}
let event_loop = EventLoop::<UserEvent>::with_user_event().build().unwrap();
let proxy = event_loop.create_proxy();
tray_icon_win::TrayIconEvent::set_event_handler(Some(move |event| {
proxy.send_event(UserEvent::TrayIconEvent(event));
}));
let proxy = event_loop.create_proxy();
tray_icon_win::menu::MenuEvent::set_event_handler(Some(move |event| {
proxy.send_event(UserEvent::MenuEvent(event));
}));Re-exports§
pub use muda_win::dpi;
Modules§
Structs§
- Icon
- An icon used for the window titlebar, taskbar, etc.
- Rect
- Describes a rectangle including position (x - y axis) and size.
- Tray
Icon - This type is reference-counted and the icon is removed when the last instance is dropped.
- Tray
Icon Attributes - Attributes to use when creating a tray icon.
- Tray
Icon Builder TrayIconbuilder struct and associated methods.- Tray
Icon Id - An unique id that is associated with a tray icon.
Enums§
- BadIcon
- An error produced when using
Icon::from_rgbawith invalid arguments. - Error
- Errors returned by tray-icon.
- Mouse
Button - Describes which mouse button triggered the event..
- Mouse
Button State - Describes the mouse button state.
- Tray
Icon Event - Describes a tray icon event.
Type Aliases§
- Result
- Convenient type alias of Result type for tray-icon.
- Tray
Icon Event Receiver - A reciever that could be used to listen to tray events.