From bb62ca350c8ee12bdf333a0a6c5939eb9d88cdc6 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Mon, 11 Aug 2025 13:22:04 +0400 Subject: [PATCH] refactor: better file path handling --- src-tauri/src/browser.rs | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src-tauri/src/browser.rs b/src-tauri/src/browser.rs index a0d839e..064612a 100644 --- a/src-tauri/src/browser.rs +++ b/src-tauri/src/browser.rs @@ -168,19 +168,25 @@ mod linux { install_dir: &Path, browser_type: &BrowserType, ) -> Result> { - // Expected structure by default: install_dir// + // Expected structure examples: + // - Firefox/Firefox Developer on Linux often extract to: install_dir/firefox/firefox + // - Some archives may extract directly under: install_dir/firefox or install_dir/firefox-bin + // - For some flavors we may have: install_dir// let browser_subdir = install_dir.join(browser_type.as_str()); - // Try firefox first (preferred), then firefox-bin + // Try common firefox executable locations (nested and flat) let possible_executables = match browser_type { - BrowserType::Firefox | BrowserType::FirefoxDeveloper => { - vec![ - browser_subdir.join("firefox"), - browser_subdir.join("firefox-bin"), - install_dir.join("firefox"), - install_dir.join("firefox-bin"), - ] - } + BrowserType::Firefox | BrowserType::FirefoxDeveloper => vec![ + // Nested "firefox/firefox" or "firefox/firefox-bin" + install_dir.join("firefox").join("firefox"), + install_dir.join("firefox").join("firefox-bin"), + // Flat under version directory + install_dir.join("firefox"), + install_dir.join("firefox-bin"), + // Under a subdirectory matching the browser type + browser_subdir.join("firefox"), + browser_subdir.join("firefox-bin"), + ], BrowserType::MullvadBrowser => { vec![ browser_subdir.join("firefox"), @@ -193,9 +199,14 @@ mod linux { } BrowserType::TorBrowser => { vec![ - browser_subdir.join("firefox"), + // Common Tor Browser launchers browser_subdir.join("tor-browser"), + // Firefox-based binaries + browser_subdir.join("firefox"), browser_subdir.join("firefox-bin"), + // Sometimes packaged similarly to Firefox + install_dir.join("firefox").join("firefox"), + install_dir.join("firefox").join("firefox-bin"), ] } BrowserType::Camoufox => {