# Fedora / SDDM installation From the checkout, run the installer as your normal user: ```sh ./scripts/install.sh ``` It builds all three release binaries with the locked dependencies, then uses `sudo` (or `pkexec`) for installation. Install the Rust toolchain, native build dependencies, `desktop-file-utils`, and D-Bus first. Cargo reports missing native libraries during the build. The shell requires Rust 1.93 or newer. Useful options: ```sh ./scripts/install.sh --dry-run ./scripts/install.sh --offline --release-id my-demo ./scripts/install.sh --skip-build --release-id existing-build ``` The script works from any directory and preserves your user configuration. Use `--help` for all options. To test and install manually: ```sh cargo test -p ferese -p feresectl -p ferese-animation -p ferese-core -p ferese-layout -p ferese-shell --locked cargo build --release --locked -p ferese -p ferese-shell -p feresectl sudo bash scripts/install-session.sh YOUR_RELEASE_ID ``` The installer adds **Ferese** to SDDM without changing Plasma or the default session. It installs immutable, versioned directories in `/usr/local/lib/ferese/releases/` and launchers in `/usr/local/bin/`. `current` selects the installed build; `previous` records the prior selection on upgrades. Installation refuses to replace unmanaged launchers/session files. Keep your existing `~/.config/ferese/config.toml`. For a new configuration, copy `/usr/local/lib/ferese/current/config.example.toml` there. The existing compositor defaults handle connected monitors automatically; add output profiles only after checking `feresectl get-outputs` on the actual DRM session. Use `ferese-session --nested` for an installed-build preview. Log out of Plasma and select Ferese in SDDM for real hardware use. `ferese-session` can also run from a spare logged-in TTY. It must run as your normal user, never as root. Foot and `dbus-run-session` must be installed. Session logs are written under `${XDG_STATE_HOME:-~/.local/state}/ferese/`. The launcher sets Wayland desktop variables, starts D-Bus if none is available, and grants shell capabilities only to the compositor-launched shell process. It does not enable public screencopy, privileged input methods, or shortcut inhibition by default. ## Logout and recovery Save your work, then press **Super+Shift+E** or run `feresectl exit` to log out. Ferese stops its event loop and terminates its shell child during shutdown. This is immediate logout, without a save-confirmation dialog. If the compositor becomes unresponsive, switch to another TTY using Ctrl+Alt+F1–F12 and terminate that specific Ferese process. Select Plasma on the next login. Do not restart SDDM while a desktop contains unsaved work. For a binary rollback, inspect `/usr/local/lib/ferese/previous` and select that release with the `current` symlink while Ferese is stopped. Existing releases are retained. To hide the login option, move `/usr/share/wayland-sessions/ferese.desktop` out of that directory. ## First hardware session Verify terminal/editor/browser, clipboard, fullscreen, fractional scaling, monitor disconnect/reconnect, VT switching away/back, and logout. Suspend/resume and session locking are not certified by the nested smoke test. Keep Plasma available until real development sessions and these checks pass.