1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //! Multiwindow with tray icon example
- //!
- //! This example shows how to implement a simple multiwindow application and tray icon using dioxus.
- //! This works by spawning a new window when the user clicks a button. We have to build a new virtualdom which has its
- //! own context, root elements, etc.
- //!
- //! This is useful for apps that incorporate settings panels or persistent windows like Raycast.
- use dioxus::desktop::{
- trayicon::{default_tray_icon, init_tray_icon},
- window, WindowCloseBehaviour,
- };
- use dioxus::prelude::*;
- fn main() {
- dioxus::launch(app);
- }
- fn app() -> Element {
- use_hook(|| {
- // Set the close behavior for the main window
- // This will hide the window instead of closing it when the user clicks the close button
- window().set_close_behavior(WindowCloseBehaviour::WindowHides);
- // Initialize the tray icon with a default icon and no menu
- // This will provide the tray into context for the application
- init_tray_icon(default_tray_icon(), None)
- });
- rsx! {
- button {
- onclick: move |_| {
- window().new_window(VirtualDom::new(popup), Default::default());
- },
- "New Window"
- }
- }
- }
- fn popup() -> Element {
- rsx! {
- div { "This is a popup window!" }
- }
- }
|