Firefox App Manager

I sorely wish that Firefox had a built in “web app” manager akin to GNOME Web/Epiphany.
However, I have found that Epiphany is still a bit too slow for my liking on the L5, and touch gestures are a bit clunky on some websites.

For a while, I tried using Chromium as my “web app” browser, since this has decent support for the feature.
But, I didn’t like having another browser installed for just this purpose, and it had it’s issues too (external links open in Chromium and not my default browser, frequent updates, browser chrome taking up screen space, and my own personal dislike of Chromium since it’s a little too close to Google).

I have seen projects like PWAsForFirefox but immediately hit an issue when the app I wanted to install offered no manifest.json file I could link to.
It looks like it supports only “real” PWAs and not just any random URL.

This led me to create a tool for managing FF “web apps” and FF profiles.

This is a simple Python script that will let you create and control FF web apps on your Linux devices.
It will create Firefox profiles, icons, and .desktop shortcuts to open the app in the app launcher.

I am already using it on my desktop, my media center PC, and now also my L5.

To install and run on your L5:

git clone
cd ffapp
python3 ./

(Running with python3 is needed on the L5 with Byzantium since python is still pointing to Python 2.x. This has only been tested with >= Python 3.9.)

This is my first time ever writing any Python. I thought it would be a good use of the language and a good chance to get my feet wet with Python while also scratching a personal itch.
If anyone has any suggestions to improve the code or the functionality of this script, please let me know or open an issue on Gitlab.

Finally, for those running Arch, I have created an AUR package: AUR (en) - ffapp

I hope someone out there will find this useful, so I am sharing here. If you give it a try, please do share some feedback so I can fix any bugs or make any improvements.
I am the only user thus far so I am sure there are bugs I have missed :).