Skip to main content

Installer Reference

Waylo ships as a self-extracting .run archive built with makeself. It bundles a pinned Node runtime, the prebuilt frontend, and prebuilt native dependencies, so the target machine needs no Node, npm, compiler, or network.

Running the installer

Run it as your normal desktop user (not sudo — the systemd user service must live in your graphical session; the installer uses sudo only for system packages):

./waylo-<version>-linux-<arch>.run # interactive
./waylo-<version>-linux-<arch>.run -- -y # non-interactive, defaults
./waylo-<version>-linux-<arch>.run -- --uninstall # remove

Arguments after -- are passed to the installer.

Options

OptionDescription
--prefix DIRInstall location (default ~/.local/share/waylo).
--port NPort for the service (default 8080).
--no-httpsServe plain HTTP instead of HTTPS (TLS is the default).
--use-system-nodeUse the system Node instead of the bundled one (needs npm + a build toolchain; runs npm install).
--no-depsDon't install system packages.
--no-serviceDon't install/start the systemd user service.
--no-extensionDon't install the locked-screen extension.
-y, --yesAssume "yes" to all prompts.
--uninstallRemove the service and the install prefix.
-h, --helpShow help.

What it does

  1. Checks for a GNOME session (warns if absent).
  2. With --no-deps off, detects the package manager (apt/dnf/pacman/zypper) and offers to install GStreamer plugins and an OpenSSH server, and ensures sshd is running.
  3. Copies Waylo into the prefix using the bundled Node and prebuilt dependencies.
  4. Installs the systemd user service (via install-service.js, run under the bundled Node so the service's Node matches the native-module ABI) and offers to enable linger.
  5. Best-effort installs the allow-locked-remote-desktop extension.
  6. Prints how to connect.
note

The service unit lives at a fixed per-user path (~/.config/systemd/user/waylo.service), so --uninstall removes the Waylo service regardless of --prefix.

System Node instead of the bundle

--use-system-node skips the bundled runtime and installs against the target's own Node (≥ 16). This requires npm and a C/C++ toolchain on the target so the native modules can build, and pulls dependencies from the network — the opposite of the self-contained default. Use it only when you specifically want to share the system Node.