@@ -42,10 +42,18 @@ pub fn save_webapps(collection: &WebAppCollection) -> Result<()> {
4242}
4343
4444pub fn create_webapp ( webapp : & WebApp ) -> Result < ( ) > {
45+ let mut app = webapp. clone ( ) ;
46+ // ensure app_file is populated → needed for update/remove by file
47+ if app. app_file . is_empty ( ) {
48+ app. app_file = format ! (
49+ "biglinux-webapp-{}.desktop" ,
50+ desktop:: desktop_file_id( & app. app_url)
51+ ) ;
52+ }
4553 let mut col = load_webapps ( ) ;
46- col. add ( webapp . clone ( ) ) ;
54+ col. add ( app . clone ( ) ) ;
4755 save_webapps ( & col) ?;
48- desktop:: install_desktop_entry ( webapp ) ?;
56+ desktop:: install_desktop_entry ( & app ) ?;
4957 Ok ( ( ) )
5058}
5159
@@ -122,32 +130,46 @@ pub fn profile_shared(webapp: &WebApp) -> bool {
122130// -- browser detection --
123131
124132pub fn detect_browsers ( ) -> BrowserCollection {
125- let known_browsers = [
126- ( "firefox" , "/usr/bin/firefox" ) ,
133+ // (browser_id, [candidate_paths]) — first existing path wins
134+ let known_browsers: & [ ( & str , & [ & str ] ) ] = & [
135+ ( "firefox" , & [ "/usr/bin/firefox" ] ) ,
127136 (
128137 "firefox-developer-edition" ,
129- "/usr/bin/firefox-developer-edition" ,
138+ & [ "/usr/bin/firefox-developer-edition" ] ,
139+ ) ,
140+ ( "librewolf" , & [ "/usr/bin/librewolf" ] ) ,
141+ ( "google-chrome-stable" , & [ "/usr/bin/google-chrome-stable" ] ) ,
142+ ( "google-chrome-beta" , & [ "/usr/bin/google-chrome-beta" ] ) ,
143+ ( "google-chrome-unstable" , & [ "/usr/bin/google-chrome-unstable" ] ) ,
144+ ( "chromium" , & [ "/usr/bin/chromium" ] ) ,
145+ (
146+ "brave" ,
147+ & [
148+ "/usr/bin/brave" ,
149+ "/usr/bin/brave-browser" ,
150+ "/usr/bin/brave-browser-stable" ,
151+ ] ,
152+ ) ,
153+ (
154+ "brave-beta" ,
155+ & [ "/usr/bin/brave-browser-beta" , "/usr/bin/brave-beta" ] ,
156+ ) ,
157+ (
158+ "brave-nightly" ,
159+ & [ "/usr/bin/brave-browser-nightly" , "/usr/bin/brave-nightly" ] ,
130160 ) ,
131- ( "librewolf" , "/usr/bin/librewolf" ) ,
132- ( "google-chrome-stable" , "/usr/bin/google-chrome-stable" ) ,
133- ( "google-chrome-beta" , "/usr/bin/google-chrome-beta" ) ,
134- ( "google-chrome-unstable" , "/usr/bin/google-chrome-unstable" ) ,
135- ( "chromium" , "/usr/bin/chromium" ) ,
136- ( "brave-browser" , "/usr/bin/brave-browser-stable" ) ,
137- ( "brave-browser-beta" , "/usr/bin/brave-browser-beta" ) ,
138- ( "brave-browser-nightly" , "/usr/bin/brave-browser-nightly" ) ,
139- ( "microsoft-edge-stable" , "/usr/bin/microsoft-edge-stable" ) ,
140- ( "microsoft-edge-beta" , "/usr/bin/microsoft-edge-beta" ) ,
141- ( "vivaldi-stable" , "/usr/bin/vivaldi-stable" ) ,
142- ( "vivaldi-beta" , "/usr/bin/vivaldi-beta" ) ,
143- ( "vivaldi-snapshot" , "/usr/bin/vivaldi-snapshot" ) ,
144- ( "ungoogled-chromium" , "/usr/bin/ungoogled-chromium" ) ,
161+ ( "microsoft-edge-stable" , & [ "/usr/bin/microsoft-edge-stable" ] ) ,
162+ ( "microsoft-edge-beta" , & [ "/usr/bin/microsoft-edge-beta" ] ) ,
163+ ( "vivaldi-stable" , & [ "/usr/bin/vivaldi-stable" ] ) ,
164+ ( "vivaldi-beta" , & [ "/usr/bin/vivaldi-beta" ] ) ,
165+ ( "vivaldi-snapshot" , & [ "/usr/bin/vivaldi-snapshot" ] ) ,
166+ ( "ungoogled-chromium" , & [ "/usr/bin/ungoogled-chromium" ] ) ,
145167 ] ;
146168
147169 let mut browsers: Vec < Browser > = Vec :: new ( ) ;
148170
149- for ( id, path ) in & known_browsers {
150- if Path :: new ( path ) . exists ( ) {
171+ for ( id, paths ) in known_browsers {
172+ if paths . iter ( ) . any ( |p| Path :: new ( p ) . exists ( ) ) {
151173 browsers. push ( Browser {
152174 browser_id : id. to_string ( ) ,
153175 is_default : false ,
@@ -215,9 +237,7 @@ fn match_desktop_to_browser(desktop: &str) -> Option<String> {
215237 ( "google-chrome-beta" , "google-chrome-beta" ) ,
216238 ( "google-chrome-unstable" , "google-chrome-unstable" ) ,
217239 ( "chromium" , "chromium" ) ,
218- ( "brave-browser-stable" , "brave-browser" ) ,
219- ( "brave-browser-beta" , "brave-browser-beta" ) ,
220- ( "brave-browser-nightly" , "brave-browser-nightly" ) ,
240+ ( "brave" , "brave" ) ,
221241 ( "microsoft-edge-stable" , "microsoft-edge-stable" ) ,
222242 ( "microsoft-edge-beta" , "microsoft-edge-beta" ) ,
223243 ( "vivaldi-stable" , "vivaldi-stable" ) ,
0 commit comments