How can I make a single-page web app into a standalone desktop application, on Firefox, similar to Chrome's "Add to desktop..." option? Platform is Linux.
-
2Would love to know if there's an answer to this. I've just switched back to Firefox Quantum and this is the only feature I'm really missing.– Charles RoperNov 21, 2017 at 21:51
-
You mean like Electron, but Firefox and for users not devs?– YetAnotherRandomUserFeb 13, 2018 at 2:34
-
1Does this still work? askubuntu.com/a/811657– UnfundednutFeb 16, 2018 at 17:56
-
The relevant bug report is bugzilla.mozilla.org/show_bug.cgi?id=1283670– micAug 4, 2019 at 19:42
2 Answers
I often do it the manual way, you might appreciate it since you are running linux. No other tools are required besides firefox :)
- Run
firefox -p
. That fires up the firefox profile editor. Create a new profile for the web app you want to use, and name it accordingly. Leave the profile folder location as the default, or choose anything you want. - Launch the newly created profile. Make sure to uncheck "Use the selected profile without asking at startup", as it would otherwise be set as the default firefox profile, which you don't want.
- Set any firefox preferences in the newly created profile as you want (Cookie / History / Search Engine / Privacy considerations). Make sure to set the web app you want to use as the start page, and make firefox load that start page on startup.
- You can close the firefox window with the newly created profile now.
- To launch the newly created standalone web app, use the following command line arguments to firefox:
-P <profile name>
launches the given profile name at startup instead of the default one. You'll want to enter your newly created profile's name here.--no-remote
makes firefox ignore remote commands. That means, you can run this firefox instance next to another (your default) firefox instance, and new commands (like clicking a link in an external application) will not get send to the new firefox instance, but to the default one instead.
For example, to create a standalone desktop app for e.g. WhatsApp Web, do the following:
- Create a new profile
WhatsApp-Web
- Launch profile, customize preferences. Set startpage to
web.whatsapp.com
- Run
firefox --no-remote -P WhatsApp-Web
to launch the new profile.
That way, you can run this second firefox instance next to your default one, without interfering the behaviour of the default instance. Cookies and other data is not shared between both, giving you some extra privacy. For convenient launching, you can even add a starter file for this new firefox instance if your operating system / desktop environment supports this. In linux, you might want to create a .desktop
file as follows:
- Copy /usr/share/applications/firefox.desktop to /usr/share/applications/firefox-yourwebappname.desktop
- Customize the Name, Exec and Icon-fields in that new .desktop-file (e.g. set a custom icon for the web app, set some appropriate name, and put the custom firefox command line in the Exec line). Of course, you can customize other parameters as well
- Add the .desktop file to your task bar or your desktop (It should automatically be detected by your task menu).
-
7Can I somehow hide the tabs and address bar, and change the icon in taskbar?– jabojaApr 7, 2018 at 14:54
For completely standalone offline use, you have to save the site contents locally.
Make a folder, open terminal (in that directory) & run:
wget -e robots=off -r -np --page-requisites --convert-links --wait=".5"--save-cookies="cookies.txt" "https://www.example.com"
You'll need JavaScript libraries. Install nodejs
& npm
to start out.
sudo apt-get install nodejs npm
The website's CDN will provide the libraries (usually). If any .js libs aren't functioning, or missing, use npm install -g
to install when possible. Otherwise, download from the developers. I had to with jQuery.
Now, run npm install -g live-server
When wget
is finished, simply run live-server --port=5000
from the folder containing index.html
. Watch the terminal window for GET requests. Any missing intermediary files will show a 404.
Just retrieve the file using wget
with -B
, to set the base URL & path.
wget -B 'https://jsoneditoronline.org' '/favicon.ico'
If you have to retrieve quite a few intermediate files, create a list.txt, one path per line. (I just copy the console to a notepad & edit out the GET & 404 etc.) Download them with:
wget -x -B 'https://jsoneditoronline.org' --input-file=list.txt
When downloading with input-file make sure to use -x. You can just overwrite the directory structure, instead of moving them individually.
If you need PHP/SQL functionality, skip "live-server" & install them from the repository. You don't have to set up Apache, PHP has a server included.
sudo apt-get install php community-mysql php-mysqlnd
From the same directory, run: php -S localhost:5000
Then open your browser & visit: http://localhost:5000
UPDATE:
The comment from gronostaj inspired me. YAD is the way to isolate it to it's own app window. After live-server
opens the page, close the browser window & run:
yad --window-icon="favicon.png" --title="JSON Example" --geometry="1190x500" --center --uri-handler="$YAD_XID" --browser --html --uri="http://127.0.0.1:5000"
Don't show on the taskbar: --skip-taskbar
If you want a tray icon: --notification --image="favicon.png"
Good luck, my friend.
Vaya con Dios!
-
This is not what OP asked for - it's still a website in a browser, just with the index file hosted locally. OP wants it to look and feel like a separate app independent from their browser. May 31 at 6:54
-
Well, about the best you could do is use a page loader, like this. tinyurl.com/44apmsr8 Jun 2 at 5:56