Note
This extension is built for Omarchy users. It relies on the omarchy-launch-webapp command that ships with Omarchy.
Small Manifest V3 extension that launches the current page in an app window by calling omarchy-launch-webapp "URL" through a native messaging host.
src/- strict TypeScript source for the extension and native toolingextension/- unpacked Chromium extensiondist/- generated standalone native hosts and installer
-
Build the extension:
mise run build
-
Install the native hosts for your browser:
./dist/install-native-host install chromium
Supported values:
chromium,chrome,brave,edge,vivaldi,all -
Open
chrome://extensionsorchromium://extensions. -
Enable Developer mode.
-
Click Load unpacked and choose
extension/. -
Pin the extension if you want one-click access.
The build creates three standalone executables:
dist/relaunch-current-page-hostdist/browser-urls-hostdist/install-native-host
The installer copies the hosts to ${XDG_DATA_HOME:-~/.local/share}/chromium-relaunch-as-app/native-hosts and writes browser manifests beneath ${XDG_CONFIG_HOME:-~/.config}. The installed hosts include Bun and their production dependencies, so they do not require Bun, Node.js, tsx, or node_modules at runtime.
Install or refresh an existing installation:
./dist/install-native-host install chromium
./dist/install-native-host update chromiumRemove it:
./dist/install-native-host uninstall chromiumUse all instead of a browser name to target Chromium, Google Chrome, Brave, Microsoft Edge, and Vivaldi.
- The popup and page context menu only enable launching for
httpandhttpspages. - Launching from the page context menu closes the current tab after the app window opens.
- In app-style windows, the page context menu flips to reopening the page in a normal browser tab instead.
- The extension uses a fixed public key in
extension/manifest.json, so the unpacked extension ID stays stable for the native host. - Open tab state is written atomically to
${XDG_STATE_HOME:-~/.local/state}/browser-urls.jsonfor workspace capture tooling. - Native host diagnostics are written to stderr. Stdout is reserved for Chromium's length-prefixed JSON protocol.
- Generated JavaScript under
extension/dist/and executables underdist/are ignored. Runmise run checkto lint, test, type-check, and rebuild them.