diff --git a/desktop/src-tauri/src/flags.rs b/desktop/src-tauri/src/flags.rs new file mode 100644 index 0000000..2adf97c --- /dev/null +++ b/desktop/src-tauri/src/flags.rs @@ -0,0 +1,44 @@ +#[cfg(target_os = "linux")] +pub fn apply_linux_cli_flags() { + let disable_webkit_compositing_mode = std::env::args().any(|a| a == "--webkit-disable-compositing-mode"); + if disable_webkit_compositing_mode { + unsafe { std::env::set_var("WEBKIT_DISABLE_COMPOSITING_MODE", "1"); } + } + + let webkit_disable_dmabuf_renderer = std::env::args().any(|a| a == "--webkit-disable-dmabuf-renderer"); + if webkit_disable_dmabuf_renderer { + unsafe { std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); } + } + + let nv_disable_explicit_sync = std::env::args().any(|a| a == "--nv-disable-explicit-sync"); + if nv_disable_explicit_sync { + unsafe { std::env::set_var("__NV_DISABLE_EXPLICIT_SYNC", "1"); } + } +} + +#[cfg(target_os = "linux")] +pub fn print_help() { + println!( +r#"Kawai Focus — Pomodoro таймер + +Использование: + kawai-focus [FLAGS] + +Флаги (Linux): + + --webkit-disable-compositing-mode + Отключает WebKit compositing mode. + Помогает при графических артефактах на некоторых GPU. + + --webkit-disable-dmabuf-renderer + Отключает DMA-BUF renderer WebKit. + Полезно при проблемах с Wayland и с отсутствием GBM. + + --nv-disable-explicit-sync + Отключает explicit sync драйвера NVIDIA. + Иногда исправляет: зависания интерфейса, проблемы с отсутствием GBM. + + --help + Показать эту справку и выйти. +"#); +} diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs index 651e9f8..7ee0a2a 100644 --- a/desktop/src-tauri/src/lib.rs +++ b/desktop/src-tauri/src/lib.rs @@ -1,14 +1,15 @@ -#[cfg(target_os = "linux")] -fn apply_linux_webkit_cli_flags() { - let disable = std::env::args().any(|a| a == "--disable-webkit-compositing"); - if disable { - unsafe { std::env::set_var("WEBKIT_DISABLE_COMPOSITING_MODE", "1"); } - } -} +mod flags; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { - apply_linux_webkit_cli_flags(); + #[cfg(target_os = "linux")] + if std::env::args().any(|a| a == "--help" || a == "-h") { + flags::print_help(); + std::process::exit(0); + } + + #[cfg(target_os = "linux")] + flags::apply_linux_cli_flags(); tauri::Builder::default() .plugin(tauri_plugin_sql::Builder::default().build())