112 lines
3.5 KiB
Rust
112 lines
3.5 KiB
Rust
#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
|
|
mod screenshot;
|
|
|
|
#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
|
|
mod commands;
|
|
|
|
#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
|
|
mod shortcut;
|
|
|
|
#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
|
|
mod utils;
|
|
|
|
mod state;
|
|
mod window;
|
|
|
|
use state::new_shared_watcher_state;
|
|
use window::setup_window;
|
|
|
|
#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
|
|
pub fn desktop() {
|
|
use tauri::{
|
|
menu::{Menu, MenuItem},
|
|
tray::TrayIconBuilder,
|
|
};
|
|
|
|
let watcher_state = new_shared_watcher_state();
|
|
|
|
tauri::Builder::default()
|
|
.plugin(tauri_plugin_os::init())
|
|
.plugin(tauri_plugin_log::Builder::new().build())
|
|
.plugin(tauri_plugin_fs::init())
|
|
.plugin(tauri_plugin_store::Builder::new().build())
|
|
.plugin(tauri_plugin_http::init())
|
|
.manage(watcher_state)
|
|
.invoke_handler(tauri::generate_handler![
|
|
commands::handle_selected_folder,
|
|
commands::take_screenshot,
|
|
shortcut::change_shortcut,
|
|
shortcut::unregister_shortcut,
|
|
shortcut::get_current_shortcut,
|
|
shortcut::change_screenshot_shortcut,
|
|
shortcut::unregister_screenshot_shortcut,
|
|
shortcut::get_current_screenshot_shortcut,
|
|
])
|
|
.setup(|app| {
|
|
setup_window(app)?;
|
|
|
|
let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?;
|
|
let take_screenshot =
|
|
MenuItem::with_id(app, "screenshot", "Screenshot", true, None::<&str>)?;
|
|
|
|
let menu = Menu::with_items(app, &[&quit_i, &take_screenshot])?;
|
|
|
|
TrayIconBuilder::new()
|
|
.menu(&menu)
|
|
.on_menu_event(|app, event| match event.id.as_ref() {
|
|
"quit" => {
|
|
app.exit(0);
|
|
}
|
|
"screenshot" => {
|
|
let _ = screenshot::take_area_screenshot(app);
|
|
}
|
|
_ => {
|
|
log::info!("{}", event.id().0)
|
|
}
|
|
})
|
|
.build(app)?;
|
|
|
|
shortcut::enable_shortcut(app);
|
|
|
|
Ok(())
|
|
})
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running tauri application");
|
|
}
|
|
|
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
|
#[cfg(target_os = "ios")]
|
|
pub fn mobile() {
|
|
tauri::Builder::default()
|
|
.plugin(tauri_plugin_os::init())
|
|
.plugin(tauri_plugin_fs::init())
|
|
.plugin(tauri_plugin_store::Builder::new().build())
|
|
.plugin(tauri_plugin_http::init())
|
|
.plugin(tauri_plugin_ios_shared_token::init())
|
|
.setup(|app| {
|
|
setup_window(app)?;
|
|
|
|
Ok(())
|
|
})
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running ios tauri application");
|
|
}
|
|
|
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
|
#[cfg(target_os = "android")]
|
|
pub fn mobile() {
|
|
tauri::Builder::default()
|
|
.plugin(tauri_plugin_os::init())
|
|
.plugin(tauri_plugin_fs::init())
|
|
.plugin(tauri_plugin_store::Builder::new().build())
|
|
.plugin(tauri_plugin_http::init())
|
|
.plugin(tauri_plugin_sharetarget::init())
|
|
.setup(|app| {
|
|
setup_window(app)?;
|
|
|
|
Ok(())
|
|
})
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running android tauri application");
|
|
}
|