feat: update tray icon

This commit is contained in:
reya 2024-03-26 13:08:03 +07:00
parent 6e489f1c49
commit c8e2018fd0
3 changed files with 56 additions and 25 deletions

View File

@ -536,6 +536,7 @@ export class Ark {
title: "Editor", title: "Editor",
url, url,
minWidth: 500, minWidth: 500,
minHeight: 400,
width: 600, width: 600,
height: 400, height: 400,
hiddenTitle: true, hiddenTitle: true,

View File

@ -19,6 +19,9 @@ pub struct Nostr {
fn main() { fn main() {
tauri::Builder::default() tauri::Builder::default()
.setup(|app| { .setup(|app| {
#[cfg(target_os = "macos")]
app.set_activation_policy(tauri::ActivationPolicy::Regular);
let _tray = tray::create_tray(app.handle()).unwrap(); let _tray = tray::create_tray(app.handle()).unwrap();
let handle = app.handle().clone(); let handle = app.handle().clone();
let home_dir = handle.path().home_dir().unwrap(); let home_dir = handle.path().home_dir().unwrap();
@ -66,6 +69,13 @@ fn main() {
Ok(()) 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_store::Builder::default().build())
.plugin(tauri_plugin_clipboard_manager::init()) .plugin(tauri_plugin_clipboard_manager::init())
.plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_dialog::init())
@ -121,22 +131,6 @@ fn main() {
commands::window::close_column, commands::window::close_column,
commands::window::reposition_column commands::window::reposition_column
]) ])
.build(tauri::generate_context!()) .run(tauri::generate_context!())
.expect("error while running tauri application") .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::<Vec<_>>()
.join(",");
let _ = w.eval(&format!("window.onFileOpen(`{urls}`)"));
}
}
},
);
} }

View File

@ -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<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> { pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
let version = app.package_info().version.to_string(); let version = app.package_info().version.to_string();
let tray = app.tray_by_id("main_tray").unwrap(); let tray = app.tray_by_id("main_tray").unwrap();
let menu = tauri::menu::MenuBuilder::new(app) let menu = tauri::menu::MenuBuilder::new(app)
.item( .item(&tauri::menu::MenuItem::with_id(app, "open", "Open Lume", true, None::<&str>).unwrap())
&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, Some("cmd+n")).unwrap())
)
.item(&tauri::menu::MenuItem::with_id(app, "editor", "New Post", true, None::<&str>).unwrap())
.separator() .separator()
.item( .item(
&tauri::menu::MenuItem::with_id( &tauri::menu::MenuItem::with_id(
@ -25,7 +25,7 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
.unwrap(), .unwrap(),
) )
.item( .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()) .item(&tauri::menu::MenuItem::with_id(app, "quit", "Quit", true, None::<&str>).unwrap())
.build() .build()
@ -33,9 +33,45 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
let _ = tray.set_menu(Some(menu)); let _ = tray.set_menu(Some(menu));
tray.on_menu_event(move |app, event| match event.id.0.as_str() { 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" => { "quit" => {
let handle = app.app_handle(); app.exit(0);
handle.exit(0);
} }
_ => {} _ => {}
}); });