App Settings
Desktopr apps are configured with environment variables read by scripts/prod-conf.sh (production) and scripts/dev-conf.sh (development), or with the matching inputs of the build workflow.
Application
| Variable | Workflow input | Default | Description |
|---|---|---|---|
APP_URL | app_url | (empty) | Absolute URL of your web app. Empty loads the bundled local page. |
APP_VERSION | app_version | 0.2.1 | App version, X.Y.Z. |
APP_IDENTIFIER | app_identifier | app.desktopr.app | Bundle identifier in reverse-domain form, e.g. com.example.app. |
MAIN_WINDOW_TITLE | app_name | Desktopr | Product name and main window title. |
DEEPLINK_SCHEME | deeplink_scheme | (empty) | Custom protocol scheme, e.g. example for example://…. |
APP_FRONTEND | frontend | standalone | standalone bundles the local page (or loads APP_URL); bundled embeds your own built web app; companion bundles the Companion app. |
APP_FRONTEND_DIST | frontend_dist | (empty) | With bundled: directory of the built web app, relative to the repository root. Must contain index.html. |
Only the origin of APP_URL and its subdomains are granted access to the native bridge. Do not point APP_URL at a domain whose subdomains third parties control.
A build that shows a bundled frontend keeps 'unsafe-inline' in script-src and tells Tauri not to rewrite that directive. Nonces and hashes there would also apply to the scripts that inject the bridge, and the app would start without window.Desktopr.
Main window
| Variable | Default | Description |
|---|---|---|
MAIN_WINDOW_WIDTH | 1200 | Initial width in pixels. |
MAIN_WINDOW_HEIGHT | 800 | Initial height in pixels. |
MAIN_WINDOW_BG_COLOR | #ffffff | Background colour shown before the page paints. |
MAIN_WINDOW_RESIZABLE | true | Whether the window can be resized. |
MAIN_WINDOW_OPEN_FULLSCREEN | false | Open the window in fullscreen. |
MAIN_WINDOW_URL | value of APP_URL | Override the URL of the main window only. |
Example:
APP_URL=https://app.example.com \
APP_VERSION=1.0.0 \
APP_IDENTIFIER=com.example.app \
MAIN_WINDOW_TITLE="Example" \
MAIN_WINDOW_WIDTH=1440 \
DEEPLINK_SCHEME=example \
npm run buildIcons
Icons live in src-tauri/icons/. Generate a full set from one square source image with the Tauri CLI:
cd src-tauri && cargo tauri icon ../path/to/icon.svgIn the build workflow, pass the repository path of the source image as the icon input and the icons are generated for you.
Updates
The updater is off by default and is not even compiled in. To enable it you need your own HTTPS update manifest and signing key:
- GitHub Actions: set the
update_endpointandupdater_public_keyinputs and theTAURI_SIGNING_PRIVATE_KEYsecret. - Locally: set
UPDATE_ENDPOINTandED25519_PUBKEYfornpm run prodconf, then build withcargo tauri build --features updaterandTAURI_SIGNING_PRIVATE_KEYin the environment.
Both values are required together, and they are yours: Desktopr never points your app at an update server it controls. See Tauri's updater guide for the manifest format.
Companion mode
COMPANION_MODE=true accepts bridge calls from any HTTPS origin and from localhost. It exists for the Companion app and for development tooling — never ship a production app built this way.