Skip to content

Commit

Permalink
Very minimal system tray
Browse files Browse the repository at this point in the history
  • Loading branch information
tulpenkiste committed Dec 17, 2024
1 parent f377a28 commit e3ec955
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 16 deletions.
2 changes: 1 addition & 1 deletion packages/desktop/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ tauri-build = { version = "2.0.2", features = [] }
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
log = "0.4"
tauri = { version = "2.1.0", features = [] }
tauri = { version = "2.1.0", features = [ "tray-icon" ] }
tauri-plugin-log = "2.0.0-rc"
85 changes: 72 additions & 13 deletions packages/desktop/src-tauri/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,75 @@
use tauri::{
menu::{Menu, MenuItem},
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
Manager,
};

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.setup(|app| {
if cfg!(debug_assertions) {
app.handle().plugin(
tauri_plugin_log::Builder::default()
.level(log::LevelFilter::Info)
.build(),
)?;
}
Ok(())
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
tauri::Builder::default()
.setup(|app| {
let show_i =
MenuItem::with_id(app, "show", "Show Upryzing Window", true, None::<&str>)?;
let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?;
let menu = Menu::with_items(app, &[&show_i, &quit_i])?;

if cfg!(debug_assertions) {
app.handle().plugin(
tauri_plugin_log::Builder::default()
.level(log::LevelFilter::Info)
.build(),
)?;
}

TrayIconBuilder::new()
.icon(app.default_window_icon().unwrap().clone())
.menu(&menu)
.menu_on_left_click(false)
.on_tray_icon_event(|tray, event| match event {
TrayIconEvent::Click {
button: MouseButton::Left,
button_state: MouseButtonState::Up,
..
} => {
println!("left click pressed and released");

let app = tray.app_handle();
if let Some(window) = app.get_webview_window("main") {
let _ = window.show();
let _ = window.set_focus();
}
}
_ => {
println!("unhandled event {event:?}");
}
})
.on_menu_event(|app, event| match event.id.as_ref() {
"show" => {
println!("show menu item clicked");

if let Some(window) = app.get_webview_window("main") {
let _ = window.show();
let _ = window.set_focus();
}
}
"quit" => {
println!("quit menu item was clicked");
app.exit(0);
}
_ => {
println!("menu item {:?} not handled", event.id);
}
})
.build(app)?;

Ok(())
})
.on_window_event(|app, event| {
if let tauri::WindowEvent::CloseRequested { api, .. } = event {
api.prevent_close();
app.hide().unwrap();
}
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
5 changes: 3 additions & 2 deletions packages/desktop/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@
"width": 800,
"height": 600,
"resizable": true,
"fullscreen": false
"fullscreen": false,
"decorations": true
}
],
"security": {
"security": {
"csp": null
}
},
Expand Down

0 comments on commit e3ec955

Please sign in to comment.