make app run in background

This commit is contained in:
Nikita Galaiko 2023-02-10 15:39:48 +01:00
parent add94e6559
commit bcc93167c0
No known key found for this signature in database
GPG Key ID: EBAB54E845BA519D
6 changed files with 78 additions and 3 deletions

36
src-tauri/Cargo.lock generated
View File

@ -1589,6 +1589,30 @@ dependencies = [
"thiserror",
]
[[package]]
name = "libappindicator"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8"
dependencies = [
"glib",
"gtk",
"gtk-sys",
"libappindicator-sys",
"log",
]
[[package]]
name = "libappindicator-sys"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa"
dependencies = [
"gtk-sys",
"libloading",
"once_cell",
]
[[package]]
name = "libc"
version = "0.2.139"
@ -1609,6 +1633,16 @@ dependencies = [
"pkg-config",
]
[[package]]
name = "libloading"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
dependencies = [
"cfg-if",
"winapi",
]
[[package]]
name = "libssh2-sys"
version = "0.2.23"
@ -3226,6 +3260,7 @@ dependencies = [
"core-foundation",
"core-graphics",
"crossbeam-channel",
"dirs-next",
"dispatch",
"gdk",
"gdk-pixbuf",
@ -3239,6 +3274,7 @@ dependencies = [
"instant",
"jni",
"lazy_static",
"libappindicator",
"libc",
"log",
"ndk",

View File

@ -15,7 +15,7 @@ tauri-build = { version = "1.2", features = [] }
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.2", features = ["dialog-open", "fs-create-dir", "fs-exists", "fs-read-file", "fs-write-file", "path-all", "window-start-dragging"] }
tauri = { version = "1.2", features = ["dialog-open", "fs-create-dir", "fs-exists", "fs-read-file", "fs-write-file", "path-all", "system-tray", "window-start-dragging"] }
tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "dev" }
tauri-plugin-log = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "dev", features = ["colored"] }
log = "0.4.17"

BIN
src-tauri/icons/tray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -251,7 +251,42 @@ fn main() {
))
},
|sentry_plugin| {
let quit = tauri::CustomMenuItem::new("quit".to_string(), "Quit");
let hide = tauri::CustomMenuItem::new("hide".to_string(), "Hide GitButler");
let tray_menu = tauri::SystemTrayMenu::new().add_item(hide).add_item(quit);
let tray = tauri::SystemTray::new().with_menu(tray_menu);
tauri::Builder::default()
.system_tray(tray)
.on_window_event(|event| match event.event() {
// Hide window instead of closing.
tauri::WindowEvent::CloseRequested { api, .. } => {
api.prevent_close();
event.window().hide().unwrap();
}
_ => {}
})
.on_system_tray_event(|app, event| match event {
tauri::SystemTrayEvent::MenuItemClick { id, .. } => {
let item_handle = app.tray_handle().get_item(&id);
match id.as_str() {
"quit" => {
app.exit(0);
}
"hide" => {
let main_window = app.get_window("main").unwrap();
if main_window.is_visible().unwrap() {
main_window.hide().unwrap();
item_handle.set_title("Show GitButler").unwrap();
} else {
main_window.show().unwrap();
item_handle.set_title("Hide GitButler").unwrap();
}
}
_ => {}
}
}
_ => {}
})
.setup(move |app| {
let resolver = app.path_resolver();
let storage = Storage::new(&resolver);

View File

@ -48,7 +48,7 @@ pub fn watch<R: Runtime>(
project: &Project,
) -> Result<(), WatchError> {
self::delta::watch(window.clone(), watchers, project.clone())?;
self::git::watch(window, project.clone())?;
self::git::watch(window.clone(), project.clone())?;
Ok(())
}

View File

@ -64,6 +64,10 @@
"theme": "Dark",
"titleBarStyle": "Overlay"
}
]
],
"systemTray": {
"iconPath": "icons/tray.png",
"iconAsTemplate": true
}
}
}