From c8e2018fd02307f1d95bcc86c6313ec7377a0b12 Mon Sep 17 00:00:00 2001 From: reya Date: Tue, 26 Mar 2024 13:08:03 +0700 Subject: [PATCH] feat: update tray icon --- packages/ark/src/ark.ts | 1 + src-tauri/src/main.rs | 28 +++++++++------------- src-tauri/src/tray.rs | 52 ++++++++++++++++++++++++++++++++++------- 3 files changed, 56 insertions(+), 25 deletions(-) diff --git a/packages/ark/src/ark.ts b/packages/ark/src/ark.ts index 51700ff0..2af5e51c 100644 --- a/packages/ark/src/ark.ts +++ b/packages/ark/src/ark.ts @@ -536,6 +536,7 @@ export class Ark { title: "Editor", url, minWidth: 500, + minHeight: 400, width: 600, height: 400, hiddenTitle: true, diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 85260529..490c21e3 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -19,6 +19,9 @@ pub struct Nostr { fn main() { tauri::Builder::default() .setup(|app| { + #[cfg(target_os = "macos")] + app.set_activation_policy(tauri::ActivationPolicy::Regular); + let _tray = tray::create_tray(app.handle()).unwrap(); let handle = app.handle().clone(); let home_dir = handle.path().home_dir().unwrap(); @@ -66,6 +69,13 @@ fn main() { Ok(()) }) + .on_window_event(|window, event| match event { + tauri::WindowEvent::CloseRequested { api, .. } => { + window.hide().unwrap(); + api.prevent_close(); + } + _ => {} + }) .plugin(tauri_plugin_store::Builder::default().build()) .plugin(tauri_plugin_clipboard_manager::init()) .plugin(tauri_plugin_dialog::init()) @@ -121,22 +131,6 @@ fn main() { commands::window::close_column, commands::window::reposition_column ]) - .build(tauri::generate_context!()) + .run(tauri::generate_context!()) .expect("error while running tauri application") - .run( - #[allow(unused_variables)] - |app, event| { - #[cfg(any(target_os = "macos"))] - if let tauri::RunEvent::Opened { urls } = event { - if let Some(w) = app.get_webview_window("main") { - let urls = urls - .iter() - .map(|u| u.as_str()) - .collect::>() - .join(","); - let _ = w.eval(&format!("window.onFileOpen(`{urls}`)")); - } - } - }, - ); } diff --git a/src-tauri/src/tray.rs b/src-tauri/src/tray.rs index 4a4e28d5..8e866bc7 100644 --- a/src-tauri/src/tray.rs +++ b/src-tauri/src/tray.rs @@ -1,13 +1,13 @@ -use tauri::{Manager, Runtime}; +use std::path::PathBuf; +use tauri::{Manager, Runtime, TitleBarStyle, WebviewUrl, WebviewWindowBuilder}; +use tauri_plugin_shell::ShellExt; pub fn create_tray(app: &tauri::AppHandle) -> tauri::Result<()> { let version = app.package_info().version.to_string(); let tray = app.tray_by_id("main_tray").unwrap(); let menu = tauri::menu::MenuBuilder::new(app) - .item( - &tauri::menu::MenuItem::with_id(app, "open_lume", "Open Lume", true, None::<&str>).unwrap(), - ) - .item(&tauri::menu::MenuItem::with_id(app, "editor", "New Post", true, None::<&str>).unwrap()) + .item(&tauri::menu::MenuItem::with_id(app, "open", "Open Lume", true, None::<&str>).unwrap()) + .item(&tauri::menu::MenuItem::with_id(app, "editor", "New Post", true, Some("cmd+n")).unwrap()) .separator() .item( &tauri::menu::MenuItem::with_id( @@ -25,7 +25,7 @@ pub fn create_tray(app: &tauri::AppHandle) -> tauri::Result<()> { .unwrap(), ) .item( - &tauri::menu::MenuItem::with_id(app, "settings", "Settings...", true, None::<&str>).unwrap(), + &tauri::menu::MenuItem::with_id(app, "settings", "Settings...", true, Some("cmd+,")).unwrap(), ) .item(&tauri::menu::MenuItem::with_id(app, "quit", "Quit", true, None::<&str>).unwrap()) .build() @@ -33,9 +33,45 @@ pub fn create_tray(app: &tauri::AppHandle) -> tauri::Result<()> { let _ = tray.set_menu(Some(menu)); tray.on_menu_event(move |app, event| match event.id.0.as_str() { + "open" => { + if let Some(window) = app.get_window("main") { + if window.is_visible().unwrap_or_default() { + let _ = window.set_focus(); + } else { + let _ = window.show(); + let _ = window.set_focus(); + }; + } + } + "editor" => { + let _ = WebviewWindowBuilder::new(app, "editor", WebviewUrl::App(PathBuf::from("editor"))) + .title("Editor") + .min_inner_size(500., 400.) + .inner_size(600., 400.) + .hidden_title(true) + .title_bar_style(TitleBarStyle::Overlay) + .build() + .unwrap(); + } + "about" => { + app.shell().open("https://lume.nu", None).unwrap(); + } + "update" => { + println!("todo!") + } + "settings" => { + let _ = + WebviewWindowBuilder::new(app, "settings", WebviewUrl::App(PathBuf::from("settings"))) + .title("Editor") + .min_inner_size(600., 500.) + .inner_size(800., 500.) + .hidden_title(true) + .title_bar_style(TitleBarStyle::Overlay) + .build() + .unwrap(); + } "quit" => { - let handle = app.app_handle(); - handle.exit(0); + app.exit(0); } _ => {} });