A lightweight Tauri v2 desktop app that wraps any website into a native window. Just point it at a URL via a JSON config file and you have an instant desktop app — no code changes required.
- Any URL — Load any website in a native desktop window
- Dynamic title — Window title automatically syncs with the loaded page title (Windows)
- Custom title — Optionally set a fixed window title via config
- Custom icon — Set your own window icon (ICO or PNG)
- Dark mode control — Request dark/light theme from sites, or force-dark all sites (Windows)
- Remember window position — Window size, position, and maximized state are saved and restored across sessions
- Start minimized — Optionally launch the app minimized to the taskbar
- Rename-to-configure — Rename the executable and it auto-detects its config file (
MyApp.exe→MyApp.json) - Cross-platform — Builds for Windows x64, Linux x64, and macOS ARM64
- Download the binary for your platform from the latest release
- Create a JSON config file next to the binary, matching its name (e.g.
app.jsonforapp.exe):{ "url": "https://example.com" } - Run the binary
That's it. The app opens a native window and loads the configured URL.
The config file is a simple JSON file placed next to the executable. The filename must match the executable name (without extension):
| Executable | Config file |
|---|---|
app.exe |
app.json |
MyWebApp.exe |
MyWebApp.json |
Spotify.exe |
Spotify.json |
| Field | Required | Default | Description |
|---|---|---|---|
url |
Yes | — | The website URL to load |
title |
No | "" |
Fixed window title. If empty, the title syncs with the page title (Windows only) |
icon |
No | "" |
Path to a custom window icon (.ico or .png). Absolute path, or relative to the executable |
prefer_dark_mode |
No | "default" |
Color scheme preference: "default" (let OS decide), "dark" (request dark theme), "light" (request light theme). Only affects sites that support prefers-color-scheme CSS. Windows only |
force_dark_mode |
No | "off" |
Force-dark rendering: "on" or "off". When "on", forces all sites into dark mode even if they don't natively support it — same as Chrome's force-dark flag. Windows only |
start_minimized |
No | "off" |
Start minimized to taskbar: "on" or "off" |
{
"url": "https://music.youtube.com"
}{
"url": "https://music.youtube.com",
"title": "YouTube Music",
"icon": "music.png",
"prefer_dark_mode": "dark",
"force_dark_mode": "off",
"start_minimized": "off"
}prefer_dark_mode tells the website your color scheme preference via the CSS prefers-color-scheme media query. Sites that support dark mode (like GitHub, YouTube, etc.) will switch their theme accordingly. Set to "dark" or "light" to override the OS setting, or "default" to let the OS decide.
force_dark_mode is the nuclear option — it enables Chromium's built-in force-dark rendering engine (equivalent to chrome://flags/#enable-force-dark-web-contents). This will force-render all sites in dark mode, even ones that don't have any dark theme support. Results vary per site — some look great, others may look odd. Set to "on" to enable.
The two options can be combined: prefer_dark_mode handles CSS-aware sites gracefully, while force_dark_mode catches everything else.
The app automatically remembers your window position, size, and maximized state between sessions. This works out of the box — no configuration needed.
- The state is saved to
<exe_name>.window.jsonbeside the executable (e.g.app.window.json) - Updated every time you move, resize, or maximize/restore the window
- On next launch, the window opens exactly where you left it
- To reset to defaults, simply delete the
.window.jsonfile
| Platform | Runtime Requirement |
|---|---|
| Windows | WebView2 (pre-installed on Windows 10/11) |
| Linux | WebKit2GTK 4.1 (libwebkit2gtk-4.1) |
| macOS | None (uses WKWebView) |
- Dynamic title sync, prefer_dark_mode, and force_dark_mode use the WebView2 API and are only available on Windows. On macOS and Linux, the window title stays at the default unless a static
titleis set in the config.
- Rust (stable)
- Node.js (v22+)
- Platform-specific dependencies:
- Windows: Visual Studio Build Tools (C++ workload), WebView2
- Linux:
libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsoup-3.0-dev libjavascriptcoregtk-4.1-dev - macOS: Xcode Command Line Tools
npm install
cd src-tauri
cargo build --releaseThe binary will be at src-tauri/target/release/app (or app.exe on Windows).
├── app.json # Runtime config (rename to match your exe)
├── src/
│ └── index.html # Brief loading splash
└── src-tauri/
├── Cargo.toml # Rust dependencies
├── tauri.conf.json # Tauri build config
└── src/
├── main.rs # Entry point
├── lib.rs # App setup, navigation, title sync, dark mode, window state
└── config.rs # Config struct + loader
MIT © AtmanActive
Vibecoded by AtmanActive using Claude Code (Opus 4.6), 2026.