Skip to content

Commit 2e52b7d

Browse files
authored
Add support for firefox snap package (#291)
- Closes #247 - Use snap directory in user's home as the profile directory - Remove profile directories for firefox flatpak and snap, when deleting webapp
1 parent dc9db13 commit 2e52b7d

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

usr/lib/webapp-manager/common.py

100755100644
Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ def wrapper(*args):
5555
PROFILES_DIR = os.path.join(ICE_DIR, "profiles")
5656
FIREFOX_PROFILES_DIR = os.path.join(ICE_DIR, "firefox")
5757
FIREFOX_FLATPAK_PROFILES_DIR = os.path.expanduser("~/.var/app/org.mozilla.firefox/data/ice/firefox")
58+
FIREFOX_SNAP_PROFILES_DIR = os.path.expanduser("~/snap/firefox/common/.mozilla/firefox")
5859
LIBREWOLF_FLATPAK_PROFILES_DIR = os.path.expanduser("~/.var/app/io.gitlab.librewolf-community/data/ice/librewolf")
5960
WATERFOX_FLATPAK_PROFILES_DIR = os.path.expanduser("~/.var/app/net.waterfox.waterfox/data")
6061
EPIPHANY_PROFILES_DIR = os.path.join(ICE_DIR, "epiphany")
6162
FALKON_PROFILES_DIR = os.path.join(ICE_DIR, "falkon")
6263
ICONS_DIR = os.path.join(ICE_DIR, "icons")
63-
BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK, BROWSER_TYPE_LIBREWOLF_FLATPAK, BROWSER_TYPE_WATERFOX_FLATPAK, BROWSER_TYPE_CHROMIUM, BROWSER_TYPE_EPIPHANY, BROWSER_TYPE_FALKON = range(7)
64+
BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK, BROWSER_TYPE_FIREFOX_SNAP, BROWSER_TYPE_LIBREWOLF_FLATPAK, BROWSER_TYPE_WATERFOX_FLATPAK, BROWSER_TYPE_CHROMIUM, BROWSER_TYPE_EPIPHANY, BROWSER_TYPE_FALKON = range(8)
6465

6566
class Browser:
6667

@@ -178,6 +179,7 @@ def get_supported_browsers():
178179
Browser(BROWSER_TYPE_FIREFOX, "Firefox Extended Support Release", "firefox-esr", "/usr/bin/firefox-esr"),
179180
Browser(BROWSER_TYPE_FIREFOX_FLATPAK, "Firefox (Flatpak)", "/var/lib/flatpak/exports/bin/org.mozilla.firefox", "/var/lib/flatpak/exports/bin/org.mozilla.firefox"),
180181
Browser(BROWSER_TYPE_FIREFOX_FLATPAK, "Firefox (Flatpak)", ".local/share/flatpak/exports/bin/org.mozilla.firefox", ".local/share/flatpak/exports/bin/org.mozilla.firefox"),
182+
Browser(BROWSER_TYPE_FIREFOX_SNAP, "Firefox (Snap)", "/snap/bin/firefox", "/snap/bin/firefox"),
181183
Browser(BROWSER_TYPE_CHROMIUM, "Brave", "brave", "/usr/bin/brave"),
182184
Browser(BROWSER_TYPE_CHROMIUM, "Brave Browser", "brave-browser", "/usr/bin/brave-browser"),
183185
Browser(BROWSER_TYPE_CHROMIUM, "Brave (Bin)", "brave-bin", "/usr/bin/brave-bin"),
@@ -227,6 +229,8 @@ def get_supported_browsers():
227229

228230
def delete_webbapp(self, webapp):
229231
shutil.rmtree(os.path.join(FIREFOX_PROFILES_DIR, webapp.codename), ignore_errors=True)
232+
shutil.rmtree(os.path.join(FIREFOX_FLATPAK_PROFILES_DIR, webapp.codename), ignore_errors=True)
233+
shutil.rmtree(os.path.join(FIREFOX_SNAP_PROFILES_DIR, webapp.codename), ignore_errors=True)
230234
shutil.rmtree(os.path.join(PROFILES_DIR, webapp.codename), ignore_errors=True)
231235
# first remove symlinks then others
232236
if os.path.exists(webapp.path):
@@ -283,9 +287,14 @@ def create_webapp(self, name, url, icon, category, browser, custom_parameters, i
283287
pass
284288

285289
def get_exec_string(self, browser, codename, custom_parameters, icon, isolate_profile, navbar, privatewindow, url):
286-
if browser.browser_type in [BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK]:
290+
if browser.browser_type in [BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK, BROWSER_TYPE_FIREFOX_SNAP]:
287291
# Firefox based
288-
firefox_profiles_dir = FIREFOX_PROFILES_DIR if browser.browser_type == BROWSER_TYPE_FIREFOX else FIREFOX_FLATPAK_PROFILES_DIR
292+
if browser.browser_type == BROWSER_TYPE_FIREFOX:
293+
firefox_profiles_dir = FIREFOX_PROFILES_DIR
294+
elif browser.browser_type == BROWSER_TYPE_FIREFOX_FLATPAK:
295+
firefox_profiles_dir = FIREFOX_FLATPAK_PROFILES_DIR
296+
else:
297+
firefox_profiles_dir = FIREFOX_SNAP_PROFILES_DIR
289298
firefox_profile_path = os.path.join(firefox_profiles_dir, codename)
290299
exec_string = ("sh -c 'XAPP_FORCE_GTKWINDOW_ICON=\"" + icon + "\" " + browser.exec_path +
291300
" --class WebApp-" + codename +

usr/lib/webapp-manager/webapp-manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from gi.repository import Gtk, Gdk, Gio, XApp, GdkPixbuf
2222

2323
# 3. Local application/library specific imports.
24-
from common import _async, idle, WebAppManager, download_favicon, ICONS_DIR, BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK
24+
from common import _async, idle, WebAppManager, download_favicon, ICONS_DIR, BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK, BROWSER_TYPE_FIREFOX_SNAP
2525

2626
setproctitle.setproctitle("webapp-manager")
2727

@@ -452,7 +452,7 @@ def on_browser_changed(self, widget):
452452

453453
def show_hide_browser_widgets(self):
454454
browser = self.browser_combo.get_model()[self.browser_combo.get_active()][BROWSER_OBJ]
455-
if browser.browser_type == BROWSER_TYPE_FIREFOX or browser.browser_type == BROWSER_TYPE_FIREFOX_FLATPAK:
455+
if browser.browser_type in [BROWSER_TYPE_FIREFOX, BROWSER_TYPE_FIREFOX_FLATPAK, BROWSER_TYPE_FIREFOX_SNAP]:
456456
self.isolated_label.hide()
457457
self.isolated_switch.hide()
458458
self.navbar_label.show()

0 commit comments

Comments
 (0)