DioxusLabs/dioxus · error
tray icon builder failed
Error message
tray icon builder failed
What it means
`init_tray_icon` builds the system tray icon with `tray_icon::TrayIconBuilder` and `expect`s the builder to succeed. This panic fires when the OS tray API rejects the icon/menu setup (e.g. unsupported platform state or invalid icon data); failures are considered unrecoverable for tray support.
Solutions
- Check the tray icon configuration (icon data, size, platform support); the underlying tray icon builder rejected the provided values.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at packages/desktop/src/trayicon.rs:45 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of DioxusLabs/dioxus@24f6a829df (2026-08-23).
Data as JSON: /api/errors/c41adba795153cc3.
Report an issue: GitHub.
Appendix: source
Thrown at packages/desktop/src/trayicon.rs:45
#[allow(unused)]
pub fn init_tray_icon(menu: DioxusTrayMenu, icon: Option<DioxusTrayIcon>) -> DioxusTray {
#[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]
{
let icon = icon.map(Ok).unwrap_or_else(crate::default_icon);
let tray = tray_icon::TrayIconBuilder::new()
.with_menu(Box::new(menu))
.with_menu_on_left_click(false);
let tray = match icon {
Ok(icon) => tray.with_icon(icon),
Err(err) => {
tracing::trace!("No tray icon: {:?}", err);
tray
}
};
provide_context(tray.build().expect("tray icon builder failed"))
}
}
/// Returns a default tray icon menu
pub fn default_tray_icon() -> DioxusTrayMenu {
#[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]
{
use tray_icon::menu::{Menu, PredefinedMenuItem};
let tray_menu = Menu::new();
tray_menu
.append_items(&[&PredefinedMenuItem::quit(None)])
.unwrap();
tray_menu
}
}
/// Provides a hook to the tray icon
#[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]View on GitHub (pinned to 24f6a829df)