如何将单页 Web 应用程序制作成 Firefox 上的独立桌面应用程序,类似于 Chrome 的“添加到桌面...”选项?平台是 Linux。
答案1
我经常手动操作,你可能会喜欢这种方式,因为你运行的是 Linux。除了 Firefox 之外不需要其他工具 :)
- 运行
firefox -p
。这将启动 Firefox 配置文件编辑器。为要使用的 Web 应用程序创建一个新的配置文件,并相应地命名。将配置文件文件夹位置保留为默认位置,或选择您想要的任何位置。 - 启动新创建的配置文件。确保取消选中“使用所选配置文件而不在启动时询问”,否则它将被设置为默认的 Firefox 配置文件,而您并不需要它。
- 在新建的配置文件中根据需要设置任何 Firefox 首选项(Cookie / 历史记录 / 搜索引擎 / 隐私注意事项)。确保将要使用的 Web 应用程序设置为起始页,并让 Firefox 在启动时加载该起始页。
- 您现在可以关闭带有新创建的配置文件的 Firefox 窗口。
- 要启动新创建的独立 Web 应用程序,请使用以下 Firefox 命令行参数:
-P <profile name>
在启动时启动给定的配置文件名称,而不是默认名称。您需要在此处输入新创建的配置文件的名称。--no-remote
使 Firefox 忽略远程命令。这意味着,您可以在另一个(您的默认)Firefox 实例旁边运行此 Firefox 实例,并且新命令(如单击外部应用程序中的链接)将不会发送到新的 Firefox 实例,而是发送到默认实例。
例如,要为 WhatsApp Web 创建独立桌面应用程序,请执行以下操作:
- 创建新的个人资料
WhatsApp-Web
- 启动配置文件,自定义首选项。将起始页设置为
web.whatsapp.com
- 运行
firefox --no-remote -P WhatsApp-Web
以启动新的配置文件。
这样,您可以在默认实例旁边运行第二个 Firefox 实例,而不会干扰默认实例的行为。Cookie 和其他数据不会在两者之间共享,从而为您提供额外的隐私。为了方便启动,如果您的操作系统/桌面环境支持此功能,您甚至可以为这个新的 Firefox 实例添加启动文件。在 Linux 中,您可能需要创建一个.desktop
文件,如下所示:
- 将 /usr/share/applications/firefox.desktop 复制到 /usr/share/applications/firefox-yourwebappname.desktop
- 自定义新 .desktop 文件中的名称、执行和图标字段(例如,为 Web 应用程序设置自定义图标、设置一些合适的名称,并将自定义 Firefox 命令行放在执行行中)。当然,您也可以自定义其他参数
- 将 .desktop 文件添加到您的任务栏或桌面(您的任务菜单应该会自动检测到它)。
答案2
为了完全独立离线使用,您必须将网站内容保存在本地。
创建一个文件夹,打开终端(在该目录中)并运行:
wget -e robots=off -r -np --page-requisites --convert-links --wait=".2" "https://www.example.com"
您需要 JavaScript 库。安装nodejs
&npm
即可开始。
sudo apt-get install nodejs npm
网站的 CDN 通常提供库。如果任何 .js 库无法运行或缺失,请npm install -g
尽可能使用安装。否则,请从开发人员处下载。我不得不使用 jQuery。
更新2:
五台服务器(Live Server 的维护分支)用 TypeScript 重写。最新的依赖项。PHP 和服务器端渲染内容。(如Express.js)使用以下命令安装:npm -g i five-server
如果您已经有“Live Server”,要切换,请运行:
npm -g rm live-server && npm -g i five-server
(如果您不需要五服务器的功能,使用实时服务器仍然可以。)
wget
完成后,只需five-server --port=5000
从包含的文件夹运行即可index.html
。观察终端窗口中的得到请求。任何缺失的中间文件都将显示404。
wget
只需使用检索文件-B
即可设置基本 URL 和路径。
wget -B 'https://jsoneditoronline.org' '/favicon.ico'
如果您必须检索相当多的中间文件:
创建一个文件404.txt
并将类似的控制台输出复制到其中。然后,从同一目录运行以下命令:
cat 404.txt | sed 's/[^ ]* //' | sed 's/\s.*$//' | awk '{if (++dup[$0] == 1) print $0;}' > list.txt
现在您的list.txt
已准备好wget
。使用 下载时--input-file
请确保使用-x
。您可以覆盖目录结构,而不必单独移动它们。
wget -x -B 'https://jsoneditoronline.org' --input-file=list.txt
如果您需要 PHP/SQL 功能,请跳过“live-server”并从存储库安装它们。您不必设置 Apache,PHP 已包含服务器。
sudo apt-get install php community-mysql php-mysqlnd
从同一目录运行:php -S localhost:5000
然后打开浏览器并访问:http://localhost:5000
更新:
来自的评论格罗诺斯塔伊启发了我。亚德是将其隔离到其自己的应用程序窗口的方法。运行live-server --no-browser
或仅将其包含在 YAD 中:
live-server --no-browser --port=5000 && yad --window-icon="favicon.png" --title="JSON Example" --geometry="1190x500" --center --uri-handler="$YAD_XID" --browser --html --uri="http://127.0.0.1:5000"
不要显示在任务栏上:--skip-taskbar
如果您想要托盘图标:--notification --image="favicon.png"