Blog

Linux web apps: Mint, Ice, Omarchy and Pake in 2026

Build an app · · 10 min read

A Linux web app is a website with its own launcher and window. On Linux Mint the simplest route is Web Apps (the Web App Manager), on Debian and Ubuntu the closest match is Peppermint Ice, which their package archives do not carry, and on Omarchy it is Install > Web App in the Omarchy menu. On any other distribution, a hand-written Chromium --app desktop file does the same job, and the Pake app on Arch-based systems or the Pake CLI elsewhere gives the site a window of its own with settings such as size and tray.

Which tool is simplest on your distribution

On Linux Mint, open Web Apps. It is the webapp-manager package, and its changelog lists version 1.4.6 on 8 January 2026.

On Omarchy, press Super + Alt + Space to open the Omarchy menu and choose Install > Web App. On Debian and Ubuntu based systems without Mint, Peppermint's Ice does the same thing for Chrome, Chromium, Firefox and Vivaldi.

Everywhere else, write the desktop file in the next sections, or use PWAs for Firefox if you prefer Firefox. The Pake app runs on Arch-based x86_64 systems such as Omarchy. Other distributions use the Pake CLI, as Turn a website into a desktop app lays out.

Linux Mint's Web App Manager

The menu name is Web Apps, and Web 应用 in the Simplified Chinese translation. The window shows the apps you have made, with icon buttons whose tooltips read Add, Remove, Edit and Launch. Adding an app asks for Name, Address, Icon, Description, Category, Browser and Custom parameters, plus a switch for Private/Incognito Window and, depending on the browser, Navigation bar for Firefox or Isolated profile for the others.

The result is a file named WebApp-<code>.desktop in ~/.local/share/applications. For Chromium and Chrome the command carries --class=WebApp-<code> and --name=WebApp-<code>, and with an isolated profile also --user-data-dir pointing at a folder named after the code. The file sets StartupWMClass=WebApp-<code> for every browser, which is the part that makes the panel group the window correctly.

The project README says Firefox web apps keep all links inside the app, while Chromium and Chrome web apps open external links in your main browser.

Peppermint Ice on Debian and Ubuntu

Ice is the Peppermint OS tool for creating and removing site-specific browsers on Debian and Ubuntu based distributions, and it works by creating and deleting .desktop files in ~/.local/share/applications. Its README lists Chrome, Chromium, Firefox and Vivaldi, says Chrome, Chromium and Vivaldi apps can be isolated or share the main profile, and says Firefox apps are always isolated. Debian stable and Ubuntu 24.04 have no ice package, and the script was last changed in February 2021.

Reading its script, the Chromium-family command is --app=<address> --class=ICE-SSB-<name>, plus --user-data-dir under ~/.local/share/ice/profiles when isolated, and the entry gets StartupWMClass=ICE-SSB-<name>. Chromium is hard-coded as /usr/bin/chromium-browser, and Ice greys out that choice when the file is missing, so on a system where the binary is only called chromium, use the desktop file below. Firefox entries use --class ICE-SSB-<name>, a profile under ~/.local/share/ice/firefox and --no-remote.

A Chromium --app desktop file

Chromium's --app launches the given value in application mode, which means a window without tabs or an address bar. In Chrome itself, open the site, choose More, Cast, save, and share, then Install page as app..., or on chrome://apps right-click an app and pick Create shortcut.

Where that menu is not there, save this as ~/.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

Use chromium-browser or google-chrome when that is your binary name. Adding --user-data-dir=/path/to/empty-folder to Exec keeps this site's logins away from your normal profile, which is what Mint's and Ice's isolated switches do. A PWA and a desktop app covers the browser's own install route.

Why the window groups under the wrong icon

The desktop entry specification describes StartupWMClass as the hint that the application will map at least one window with the given string as its WM class or WM name. The panel or dock uses that to decide which launcher a window belongs to. Leave it out, or let it differ from the class the window really has, and the window falls under the browser's icon or shows up as a second one.

That is why Mint and Ice pass --class and write the same string into StartupWMClass: the two have to match exactly. Omarchy goes the other way. Its installer does not set --class; it runs omarchy-webapp-window-class, whose script prints the class Chromium gives a web app opened at that URL, in the form chrome-<host>_<path>-Default, and writes that into StartupWMClass. Chromium's source shows why. For an --app window, GetWindowClass builds the Wayland app ID from chrome-, the URL's host and path, and the profile folder, and --class only feeds the X11 class. So on native Wayland the window reports a value such as chrome-example.com__-Default, and that value goes in StartupWMClass. Users report the same for Chrome. Under X11 or XWayland --class still works, which is why reports differ from one session to the next, and a --profile-directory other than Default changes the last part of the name.

The Pake app on Linux does it a third way. Each generated app is an executable named with a stable identifier such as com.pake.a123456, its launcher is com.pake.a123456.desktop in the same applications folder, and the app files sit under Pake/apps in your XDG data directory. The program's class follows GDK's default of uppercasing the first character, so the entry sets StartupWMClass=Com.pake.a123456.

Omarchy web apps on Hyprland

The Omarchy manual says to use Install > Web App in the Omarchy menu. It asks for the app name, the URL, and an icon URL if the favicon cannot be fetched. Installed web apps appear in the app launcher on Super + Space, and Remove > Web App deletes one.

Underneath, omarchy-launch-webapp uses the default browser when it is Chrome, Brave, Edge, Opera, Vivaldi or Helium, otherwise Chromium, and runs it with --app=<url>. If that browser is not installed, it tells you to install Chromium. The manual says to log in to your accounts with a regular browser first, because the thin wrapper frame does not work well with 1Password. Web app shortcuts are edited in ~/.config/hypr/bindings.conf, and Shift + Alt + L inside a web app copies its URL.

Hyprland alone has no such menu. Without Omarchy, write the Chromium desktop file above, or use the Pake app if the system is Arch-based.

Firefox, with PWAs for Firefox

The project says Firefox supports many Progressive Web App APIs but cannot install a site as a standalone system app, so it ships a modified Firefox build plus a console tool and a browser extension. You install the extension from Mozilla's add-ons site and follow its in-browser instructions, which set up the native program, and then manage the apps from Firefox itself.

On Arch, the native component is firefoxpwa in the extra repository. The project hosts DEB and RPM packages. Its author notes that modifying the browser interface at runtime is officially unsupported by Mozilla and can break with Firefox updates.

Pake on Arch, and the CLI on other distributions

The Pake app on Linux runs on Arch-based x86_64 systems, Omarchy included, and needs no Node.js, Rust or compiler. With the package in ~/Downloads, the install page gives:

sudo pacman -U ~/Downloads/pake-desktop-x86_64.pkg.tar.zst

pacman installs WebKitGTK and the other libraries with it. Open Pake from the app launcher; the license is kept in the system keyring, so the keyring has to be unlocked when it starts.

On Create, paste an address into Paste a web address or search the apps below to start. A bare host such as example.com gets https://, and Create from this website appears above the gallery of 30 apps. The Window group has Size, which starts at 1200 by 780 with each side between 200 and 10000, and the Behavior group has Hide to tray on close, off by default, which also turns on the tray icon. Create App installs the launcher, and My Apps lists what you made (Create an app).

WebKitGTK draws the page, so sign-in or video can differ from Chromium; What WebKitGTK is describes the engine.

Other distributions use the Pake CLI. It needs Node.js 20.9 or later, Rust 1.85 or later and the WebKitGTK development packages, which on Ubuntu include libwebkit2gtk-4.1-dev; the full list is in the getting started guide.

pake https://example.com --name Example

Debian and Ubuntu default to a .deb and an AppImage, RPM distributions to an .rpm and an AppImage, and the first build takes several minutes. On Arch, --targets zst makes a pacman package and needs binutils and libarchive. See CLI options and ChatGPT and Claude on Linux for a worked example.

When it fails and how to check

If the panel shows the browser's icon, or a second one, make --class and StartupWMClass the same text, save the file and launch again. On Wayland, set StartupWMClass to chrome-<host>__-Default instead. To read the real value, run xprop WM_CLASS and click the window on X11 or XWayland, where the second string is the class, or run hyprctl clients on Hyprland and find the class line. Ice greys out Chromium when /usr/bin/chromium-browser is missing, so use the desktop file above. On Omarchy, log in through a regular browser first if you use 1Password.

Pake's CLI FAQ says Google sign-in may be blocked in an embedded web view even with --new-window, and that a Cloudflare challenge often loops in WebKitGTK. For those sites use a browser-based web app instead. If an AppImage opens on Wayland but ignores clicks, the same FAQ describes the PAKE_LINUX_WEBKIT_SAFE_MODE variable. sudo pacman -R pake-desktop removes Pake only and leaves the license in the keyring, so delete apps from My Apps first if you want them gone.

FAQ

What is the Linux web app manager on Mint?

It is Web Apps, the webapp-manager package from Linux Mint. Click the add button, fill Name, Address and Browser, and confirm; the launcher is saved as WebApp-*.desktop in ~/.local/share/applications.

Can I install Omarchy web apps on any Hyprland setup?

No, Install > Web App is part of Omarchy. On another Hyprland system, write a Chromium desktop file, or use the Pake app on Arch-based Linux.

Why do several Chromium web apps share one icon?

StartupWMClass does not match the class the window really has, so the panel groups them with the browser. Set --class and use the same value. On native Wayland, Chromium builds the app ID of an --app window from the URL and not from --class, so use chrome-<host>__-Default.

Does Firefox on Linux install a site as an app by itself?

No. PWAs for Firefox says Firefox does not install sites as system apps, so its firefoxpwa program and extension run them in a separate Firefox runtime.

Does the Pake app run on Ubuntu?

No, the app is for Arch-based x86_64 systems such as Omarchy. Ubuntu and Fedora use the Pake CLI.