tauri_winutils_crate/
lib.rs1pub mod window_manager;
2pub mod workspace;
3pub mod layout;
4pub mod config;
5pub mod commands;
6pub mod system_window;
7
8pub use window_manager::{WindowManager, ManagedWindow, WindowPosition, WindowSize, WindowState};
9pub use workspace::Workspace;
10pub use layout::LayoutType;
11pub use config::{Config, KeyBindings};
12pub use commands::*;
13pub use system_window::{SystemWindow, SystemWindowManager, PlatformWindowManager};
14
15use tauri::{Manager, AppHandle, State};
16
17pub fn init_window_manager<R: tauri::Runtime>() -> tauri::plugin::TauriPlugin<R> {
19 tauri::plugin::Builder::new("window-manager")
20 .invoke_handler(tauri::generate_handler![
21 get_windows,
22 create_workspace,
23 switch_workspace,
24 get_workspaces,
25 arrange_windows,
26 close_window,
27 minimize_window,
28 maximize_window,
29 focus_window,
30 get_config,
31 update_config,
32 add_window_to_manager,
33 remove_window_from_manager,
34 get_system_windows,
35 move_system_window,
36 resize_system_window,
37 set_system_window_bounds,
38 minimize_system_window,
39 maximize_system_window,
40 restore_system_window,
41 close_system_window,
42 focus_system_window,
43 hide_system_window,
44 show_system_window,
45 arrange_system_windows
46 ])
47 .setup(|app_handle, _| { app_handle.manage(WindowManager::new());
49 Ok(())
50 })
51 .build()
52}
53
54pub fn get_window_manager(app_handle: &AppHandle) -> Option<State<WindowManager>> {
56 app_handle.try_state::<WindowManager>()
57}
58
59#[macro_export]
61macro_rules! setup_window_manager {
62 ($app:expr) => {
63 $app.plugin(tauri_window_manager_crate::init_window_manager())
64 };
65}