← Otto User GuideGetting Started
Installing Otto, launching it on your hardware, and the handful of things worth checking on first run.
Installing
Pre-built packages are published on the GitHub Releases page.
Debian / Ubuntu
sudo dpkg -i otto_*.deb
sudo apt-get install -f # pull in any missing dependencies
Fedora / RHEL
sudo dnf install otto-*.rpm
Arch Linux
curl -O https://raw.githubusercontent.com/nongio/otto/main/PKGBUILD
makepkg -si
If you already downloaded the release tarball, drop the PKGBUILD next to it
and makepkg will use it without re-downloading.
Building from source
git clone https://github.com/nongio/otto
cd otto
cargo build --release
You need libwayland, libxkbcommon, libudev, libinput, libgbm and
libseat. Add xwayland if you want
to run X11 applications. Minimum supported Rust version is 1.87.0 for the
compositor itself; building the whole workspace (otto-rdp pulls in GStreamer)
needs 1.96.0.
What gets installed
| Binary | Role |
|---|---|
otto | The compositor itself |
otto-bar | Top bar — clock, tray, application menus |
otto-islands | Dynamic island — notifications, activities, dialogs |
otto-lock | Screen locker |
otto-greeter | Login screen client for greetd |
otto-rdp | Remote desktop bridge |
xdg-desktop-portal-otto | Screen sharing portal backend |
Packages also install /etc/otto/config.toml (a copy of
otto_config.example.toml), a wayland-sessions entry so Otto appears in your
display manager, the portal service files, and — on Arch and Fedora — the PAM
service for otto-lock.
Launching
After installing, “Otto” appears in the session list of GDM, SDDM, LightDM and friends. Pick it and log in.
To start it by hand:
otto # auto-detects the backend
Otto chooses --winit when it finds an existing Wayland or X11 session
(it runs as a window, which is what you want for development), and --tty-udev
when started from a bare TTY.
Backends
| Flag | Use |
|---|---|
--tty-udev | Bare metal: DRM/KMS + libinput. The real session. Needs logind/seatd, or root. |
--winit | Runs as a window inside another Wayland or X11 session. Best for trying Otto out. |
--x11 | Runs as an X11 client. Basic and not actively maintained. |
--headless | No display output; used by the test harness. |
Other flags
| Flag | Effect |
|---|---|
--login | Run as a greeter host — see Login Greeter |
--probe | Print the connectors, resolutions and refresh rates Otto can see, then exit |
--systemd-notify | Send READY=1 and activate graphical-session.target (for Type=notify user units) |
--version, --help | As expected |
--login and --systemd-notify are orthogonal to the backend flag and can be
combined with it.
Use --probe first if you are writing display profiles — it tells you the exact
connector names (eDP-1, HDMI-A-1, …) and modes to put in your config.
First-run checklist
Otto ships lean: the top bar and the dynamic island are separate programs, and
nothing is started for you unless you ask. A useful starting configuration in
~/.config/otto/config.toml:
[[exec_once]]
cmd = "otto-bar"
[[exec_once]]
cmd = "otto-islands"
See Autostart for XDG autostart and systemd integration.
Then, in rough order of how much you will miss them:
- Keyboard shortcuts — the shipped
/etc/otto/config.tomldefines them. If you write your own config from scratch, Otto starts with no bindings at all. See Keyboard Shortcuts. - Screen sharing — needs
xdg-desktop-portalinstalled and aportals.confpointing at Otto. See Screen Sharing. - Screen locking — needs
/etc/pam.d/otto-lock. Debian and Ubuntu users must install it manually. See Lock Screen. - Lid and power button — Otto handles these itself, which requires
HandleLidSwitch=ignoreandHandlePowerKey=ignoreinlogind.conf. See Power Management. - Clipboard persistence — Wayland loses clipboard contents when the source app exits. See Clipboard.
Quitting
Logo+Q and Ctrl+Alt+Backspace always quit Otto. These two are wired into the
compositor ahead of the config file and cannot be rebound or removed, so there
is always a way out of a session whose config is broken.
Where to go next
Take the Desktop Tour to learn what everything on screen is, then Configuration to start making it yours.