@@ -83,6 +83,9 @@ def __init__(self, path, codename):
8383 self .category = None
8484 self .url = ""
8585 self .custom_parameters = ""
86+ self .isolate_profile = False
87+ self .navbar = False
88+ self .privatewindow = False
8689
8790 is_webapp = False
8891 with open (path ) as desktop_file :
@@ -122,6 +125,18 @@ def __init__(self, path, codename):
122125 self .custom_parameters = line .replace ("X-WebApp-CustomParameters=" , "" )
123126 continue
124127
128+ if "X-WebApp-Isolated" in line :
129+ self .isolate_profile = line .replace ("X-WebApp-Isolated=" , "" ) == "true"
130+ continue
131+
132+ if "X-WebApp-Navbar" in line :
133+ self .navbar = line .replace ("X-WebApp-Navbar=" , "" ) == "true"
134+ continue
135+
136+ if "X-WebApp-PrivateWindow" in line :
137+ self .privatewindow = line .replace ("X-WebApp-PrivateWindow=" , "" ) == "true"
138+ continue
139+
125140 if is_webapp and self .name is not None and self .icon is not None :
126141 self .is_valid = True
127142
@@ -227,6 +242,8 @@ def create_webapp(self, name, url, icon, category, browser, custom_parameters, i
227242 desktop_file .write ("X-WebApp-Browser=%s\n " % browser .name )
228243 desktop_file .write ("X-WebApp-URL=%s\n " % url )
229244 desktop_file .write ("X-WebApp-CustomParameters=%s\n " % custom_parameters )
245+ desktop_file .write ("X-WebApp-Navbar=%s\n " % navbar )
246+ desktop_file .write ("X-WebApp-PrivateWindow=%s\n " % privatewindow )
230247 if isolate_profile :
231248 desktop_file .write ("X-WebApp-Isolated=true\n " )
232249 else :
@@ -262,7 +279,7 @@ def get_exec_string(self, browser, codename, custom_parameters, icon, isolate_pr
262279 exec_string += " {}" .format (custom_parameters )
263280 exec_string += "\" " + url + "\" " + "'\n "
264281 # Create a Firefox profile
265- shutil .copytree ('/usr/share/webapp-manager/firefox/profile' , firefox_profile_path )
282+ shutil .copytree ('/usr/share/webapp-manager/firefox/profile' , firefox_profile_path , dirs_exist_ok = True )
266283 if navbar :
267284 shutil .copy ('/usr/share/webapp-manager/firefox/userChrome-with-navbar.css' ,
268285 os .path .join (firefox_profile_path , "chrome" , "userChrome.css" ))
@@ -278,7 +295,7 @@ def get_exec_string(self, browser, codename, custom_parameters, icon, isolate_pr
278295 exec_string += "--private-window "
279296 exec_string += "\" " + url + "\" " + "'\n "
280297 # Create a Firefox profile
281- shutil .copytree ('/usr/share/webapp-manager/firefox/profile' , firefox_profile_path )
298+ shutil .copytree ('/usr/share/webapp-manager/firefox/profile' , firefox_profile_path , dirs_exist_ok = True )
282299 if navbar :
283300 shutil .copy ('/usr/share/webapp-manager/firefox/userChrome-with-navbar.css' ,
284301 os .path .join (firefox_profile_path , "chrome" , "userChrome.css" ))
@@ -324,7 +341,8 @@ def get_exec_string(self, browser, codename, custom_parameters, icon, isolate_pr
324341 exec_string += "\n "
325342 return exec_string
326343
327- def edit_webapp (self , path , name , browser , url , icon , category , custom_parameters ):
344+ def edit_webapp (self , path , name , browser , url , icon , category , custom_parameters , codename , isolate_profile , navbar , privatewindow ):
345+
328346 config = configparser .RawConfigParser ()
329347 config .optionxform = str
330348 config .read (path )
@@ -336,15 +354,17 @@ def edit_webapp(self, path, name, browser, url, icon, category, custom_parameter
336354 try :
337355 # This will raise an exception on legacy apps which
338356 # have no X-WebApp-URL and X-WebApp-Browser
339- old_url = config .get ("Desktop Entry" , "X-WebApp-URL" )
340- exec_line = config .get ("Desktop Entry" , "Exec" )
341- exec_line = exec_line .replace (old_url , url )
342- old_custom_parameters = config .get ("Desktop Entry" , "X-WebApp-CustomParameters" )
343- exec_line = exec_line .replace (old_custom_parameters , custom_parameters )
357+
358+ exec_line = self .get_exec_string (browser , codename , custom_parameters , icon , isolate_profile , navbar , privatewindow , url )
359+
344360 config .set ("Desktop Entry" , "Exec" , exec_line )
345361 config .set ("Desktop Entry" , "X-WebApp-Browser" , browser .name )
346362 config .set ("Desktop Entry" , "X-WebApp-URL" , url )
347363 config .set ("Desktop Entry" , "X-WebApp-CustomParameters" , custom_parameters )
364+ config .set ("Desktop Entry" , "X-WebApp-Isolated" , "true" if isolate_profile else "false" )
365+ config .set ("Desktop Entry" , "X-WebApp-Navbar" , "true" if navbar else "false" )
366+ config .set ("Desktop Entry" , "X-WebApp-PrivateWindow" , "true" if privatewindow else "false" )
367+
348368 except :
349369 print ("This WebApp was created with an old version of WebApp Manager. Its URL cannot be edited." )
350370
0 commit comments