Linux 网页应用怎么做:Mint、Ice、Omarchy 和 Pake(2026)
Linux 网页应用就是给一个网站配上自己的启动器和独立窗口。Linux Mint 上最省事的是自带的 Web 应用(Web App Manager),Omarchy 上是 Omarchy 菜单里的 Install > Web App。Debian 和 Ubuntu 上最接近的是 Peppermint 的 Ice,不过这两家的软件源里没有它。别的发行版可以手写一个 Chromium --app 的 desktop 文件,Arch 系统上也可以用 Pake 应用,其余发行版用 Pake 命令行,这样还能顺手设置窗口大小、托盘这些选项。
你的发行版用哪个最省事
Linux Mint 上直接打开 Web 应用,它对应 webapp-manager 这个包,更新日志里最新的是 2026 年 1 月 8 日的 1.4.6。
Omarchy 上按 Super + Alt + Space 打开 Omarchy 菜单,选 Install > Web App。不是 Mint 的 Debian 和 Ubuntu 系统可以用 Peppermint 的 Ice,它支持 Chrome、Chromium、Firefox 和 Vivaldi。
其他情况就照后面几节手写 desktop 文件,喜欢 Firefox 的话用 PWAs for Firefox。Pake 应用只在 Arch 系的 x86_64 上运行,Omarchy 也在其中,别的发行版用 Pake 命令行,做法见把网站做成桌面应用。
Linux Mint 的 Web 应用管理器
菜单里的名字是 Web 应用(英文界面叫 Web Apps)。窗口里列着已经建好的应用,旁边的图标按钮悬停提示分别是 Add、Remove、Edit 和 Launch。添加时要填 Name、Address、Icon、Description、Category、Browser 和 Custom parameters。另外还有 Private/Incognito Window 开关,Firefox 多一个 Navigation bar,其他浏览器多一个 Isolated profile。
生成的文件是 ~/.local/share/applications 下的 WebApp-<code>.desktop。Chromium 和 Chrome 的命令里带 --class=WebApp-<code> 和 --name=WebApp-<code>,开了独立配置还会加 --user-data-dir,指向以这个代号命名的文件夹。不管用哪个浏览器,文件里都写了 StartupWMClass=WebApp-<code>,面板就靠它把窗口归到正确的图标下。
项目 README 提到,Firefox 的网页应用会把所有链接留在应用里,而 Chromium 和 Chrome 的网页应用会把外部链接交给主浏览器打开。
Debian 和 Ubuntu 上的 Peppermint Ice
Ice 是 Peppermint OS 里用来创建和删除站点专用浏览器的工具,面向 Debian 和 Ubuntu 系发行版,做法就是在 ~/.local/share/applications 里创建和删除 .desktop 文件。README 列出的浏览器有 Chrome、Chromium、Firefox 和 Vivaldi,其中 Chrome、Chromium 和 Vivaldi 可以独立配置也可以共用主配置,Firefox 总是独立的。Debian stable 和 Ubuntu 24.04 的软件源里没有 ice 这个包,这个脚本最后一次改动是 2021 年 2 月。
读它的脚本能看到,Chromium 系的命令是 --app=<地址> --class=ICE-SSB-<名字>,独立时再加 --user-data-dir,目录在 ~/.local/share/ice/profiles 下。条目里写的是 StartupWMClass=ICE-SSB-<名字>。它把 Chromium 写死成了 /usr/bin/chromium-browser,这个文件不存在时 Chromium 选项是灰的,所以系统里的可执行文件只叫 chromium 时,改用下面的 desktop 文件。Firefox 的条目用 --class ICE-SSB-<名字>,配置放在 ~/.local/share/ice/firefox 下,并且带 --no-remote。
手写 Chromium --app 的 desktop 文件
Chromium 的 --app 会让给定的地址以应用模式启动,也就是没有标签页和地址栏的窗口。Chrome 自己也能做,打开网站后在三点菜单的 More 下找 Cast, save, and share,再选 Install page as app...(英文界面的原文)。之后可以在 chrome://apps 里右键应用,选 Create shortcut。
没有这个菜单的话,把下面的内容存成 ~/.local/share/applications/example-web.desktop:
[Desktop Entry]
Type=Application
Version=1.0
Name=Example
Exec=chromium --app="https://example.com" --class=ExampleWeb --name=ExampleWeb
Icon=/home/you/.local/share/icons/example.png
Terminal=false
StartupWMClass=ExampleWeb
二进制叫 chromium-browser 或 google-chrome 就换成对应的名字。想让这个站点的登录和平时的浏览器分开,在 Exec 里加 --user-data-dir=/path/to/empty-folder,Mint 和 Ice 的独立配置开关做的就是这件事。浏览器自己的安装方式可以看 PWA 还是桌面应用。
窗口为什么会归到别的图标下
桌面条目规范里对 StartupWMClass 的描述是,应用会映射至少一个以这个字符串作为 WM class 或 WM name 的窗口。面板和 Dock 靠它判断窗口属于哪个启动器,所以不写,或者和窗口真实的 class 对不上,窗口就会落到浏览器的图标下,或者多出第二个图标。
Mint 和 Ice 都是先用 --class 指定窗口的 class,再把同一个字符串写进 StartupWMClass,两边必须一字不差。Omarchy 走的是反方向,它的安装脚本不设置 --class,而是调用 omarchy-webapp-window-class。这个脚本按网址算出 Chromium 会给网页应用的 class,格式是 chrome-<主机>_<路径>-Default,再写进 StartupWMClass。Chromium 的源码说清了原因。--app 窗口的 GetWindowClass 用 chrome-、网址的主机和路径,再加配置文件夹的名字拼出 Wayland 的 app ID。--class 只进 X11 的 class,所以原生 Wayland 上窗口报的是 chrome-example.com__-Default 这样的值,写进 StartupWMClass 的也是它,Chrome 也有用户反馈是这个结果。X11 和 XWayland 上 --class 仍然有效,所以不同会话里的说法对不上,--profile-directory 不是 Default 时,名字最后一段也会跟着变。
Linux 上的 Pake 应用又是第三种做法。每个生成的应用是一个以稳定标识命名的可执行文件,比如 com.pake.a123456。启动器是同一个 applications 目录里的 com.pake.a123456.desktop,应用文件放在 XDG 数据目录的 Pake/apps 下。程序的 class 按 GDK 的默认规则把首字母大写,所以条目里写的是 StartupWMClass=Com.pake.a123456。
Omarchy 的网页应用(Hyprland)
Omarchy 手册的说法是在 Omarchy 菜单里选 Install > Web App,它会问应用名、网址,取不到网站图标时再问一个图标网址。装好的网页应用出现在 Super + Space 打开的应用启动器里,Remove > Web App 用来删除。
底层是 omarchy-launch-webapp,默认浏览器是 Chrome、Brave、Edge、Opera、Vivaldi 或 Helium 时就用它,其他情况用 Chromium,再用 --app=<网址> 启动。这个浏览器没装时,它会提示去装 Chromium。手册建议先在普通浏览器里把账号登录好,原因是这层薄薄的外壳和 1Password 配合得不太好。网页应用的快捷键在 ~/.config/hypr/bindings.conf 里改,应用内按 Shift + Alt + L 会复制当前网址。
只有 Hyprland 而没有 Omarchy 的话,就没有这个菜单,可以写上面的 Chromium desktop 文件,系统是 Arch 系的话也可以用 Pake 应用。
Firefox 与 PWAs for Firefox
这个项目的说法是,Firefox 支持很多 PWA 的接口,但不能把网站安装成独立的系统应用,所以它提供了一个修改过的 Firefox、一个命令行工具和一个浏览器扩展。先从 Mozilla 的扩展站装上扩展,照着浏览器里的提示把本机程序配好,之后就能直接在 Firefox 里管理这些应用。
Arch 上的本机组件是 extra 仓库里的 firefoxpwa,项目另外提供 DEB 和 RPM 包。作者也写明,在运行时改动浏览器界面不受 Mozilla 官方支持,Firefox 更新后可能失效。
Arch 上用 Pake 应用,其他发行版用命令行
Linux 版 Pake 应用运行在 Arch 系的 x86_64 上,Omarchy 也包括在内,不需要 Node.js、Rust 或编译器。安装包放在 ~/Downloads 时,按安装页执行:
sudo pacman -U ~/Downloads/pake-desktop-x86_64.pkg.tar.zst
pacman 会把 WebKitGTK 和其他依赖一起装好。从应用启动器打开 Pake 即可,许可证放在系统钥匙串里,所以启动时钥匙串需要是解锁状态。
在创建页的粘贴网址或搜索下面应用开始创建里粘贴地址,像 example.com 这样的裸主机名会自动补上 https://,精选的 30 个应用上方会出现从这个网址创建。窗口分组里有默认尺寸,默认 1200 乘 780,每边可以设 200 到 10000,运行偏好分组里有默认关闭的关闭时隐藏到托盘,打开它会同时打开托盘图标。创建应用会安装启动器,我的应用里能看到做过的所有应用(创建应用)。
页面由 WebKitGTK 绘制,登录或视频的表现可能和 Chromium 不一样,这个引擎是什么可以看 WebKitGTK 是什么。
其他发行版用 Pake 命令行,它需要 Node.js 20.9 或更高、Rust 1.85 或更高,以及 WebKitGTK 的开发包。Ubuntu 上包括 libwebkit2gtk-4.1-dev,完整清单在快速开始里。
pake https://example.com --name Example
Debian 和 Ubuntu 默认出 .deb 和 AppImage,RPM 系发行版默认出 .rpm 和 AppImage,第一次构建要几分钟。Arch 上用 --targets zst 可以直接出 pacman 包,需要 binutils 和 libarchive。参数见命令行参数,实际例子可以看 Linux 上的 ChatGPT 和 Claude。
出问题怎么查
面板里显示浏览器的图标,或者多出第二个图标,就把 --class 和 StartupWMClass 改成同一段文字,保存后重新启动。Wayland 上则把 StartupWMClass 改成 chrome-<主机>__-Default。想看窗口真实的值,X11 或 XWayland 上运行 xprop WM_CLASS 再点一下窗口,打印的两个字符串里第二个是 class,Hyprland 上运行 hyprctl clients,找 class 那一行。/usr/bin/chromium-browser 不存在时 Ice 里的 Chromium 选项是灰的,改用上面的 desktop 文件就行。Omarchy 上用 1Password 的话,先在普通浏览器里登录。
Pake 命令行的 FAQ 提到,Google 登录在内嵌网页视图里可能被拦,即使加了 --new-window 也一样,Cloudflare 的验证在 WebKitGTK 里也常常陷入循环,这类网站改用浏览器做的网页应用。Wayland 上 AppImage 能打开却点不动的话,同一份 FAQ 里有 PAKE_LINUX_WEBKIT_SAFE_MODE 这个变量。sudo pacman -R pake-desktop 只卸载 Pake,许可证还留在钥匙串里,想把做过的应用也清掉,要先在我的应用里删除。
常见问题
Linux Mint 上的网页应用管理器是什么
就是 Web 应用,对应 Linux Mint 的 webapp-manager 包。点添加按钮,填好 Name、Address 和 Browser,确认后启动器会存成 ~/.local/share/applications 里的 WebApp-*.desktop。
别的 Hyprland 环境能装 Omarchy 的网页应用吗
不能,Install > Web App 是 Omarchy 自带的。其他 Hyprland 系统可以写 Chromium 的 desktop 文件,Arch 系的话也可以用 Pake 应用。
为什么好几个 Chromium 网页应用共用一个图标
StartupWMClass 和窗口真实的 class 对不上,面板就会把它们归到浏览器下。设置 --class 并写同一个值就行。原生 Wayland 上,--app 窗口的 app ID 由 Chromium 按网址生成,不看 --class,这时就写 chrome-<主机>__-Default。
Linux 上的 Firefox 自己能把网站装成应用吗
不能。PWAs for Firefox 说明 Firefox 不会把网站安装成系统应用,所以要靠它的 firefoxpwa 程序和扩展,在单独的 Firefox 运行环境里运行。
Pake 应用能在 Ubuntu 上用吗
不能,应用只面向 Arch 系的 x86_64,比如 Omarchy。Ubuntu 和 Fedora 用 Pake 命令行。
