Linux and Wayland
Under X11, ssr works like on Windows and macOS, with nothing to set up. Under Wayland it
takes a dedicated path, because Wayland does not let an ordinary application watch the clicks and keys of other
windows or capture them freely.
| X11 | Wayland | |
|---|---|---|
| Clicks and keys | device_query | evdev, reading /dev/input (needs the udev rule) |
| Screenshots | xcap, active window | xdg-desktop-portal + PipeWire, window or screen chosen by you |
The Wayland path is picked when XDG_SESSION_TYPE is wayland or WAYLAND_DISPLAY
is set. The portal is used on every Wayland desktop: xcap's own Wayland support only works on wlroots
compositors, not on GNOME or KDE.
1. Allow reading input devices
The evdev backend reads /dev/input. To give access without adding your
user to the input group, install the udev rule shipped in the repository:
git clone https://github.com/Le-Syl21/support-step-recorder.git
cd support-step-recorder
sudo ./packaging/install-linux.sh
Without git, fetch the two files into the same folder and run the script from there:
curl -fLO https://raw.githubusercontent.com/Le-Syl21/support-step-recorder/main/packaging/install-linux.sh
curl -fLO https://raw.githubusercontent.com/Le-Syl21/support-step-recorder/main/packaging/60-ssr-input.rules
sudo bash install-linux.sh
The script:
- installs
/etc/udev/rules.d/60-ssr-input.rules, which contains a single rule:KERNEL=="event*", SUBSYSTEM=="input", TAG+="uaccess". It gives the user of the active session read access to input devices; - removes an older
99-ssr-input.rulesif present; - reloads the
udevrules and applies them to input devices right away.
If capture does not work straight away, log out and back in.
The 60- prefix matters: the uaccess tag has to be set before systemd's
73-seat-late.rules, which applies the access rights only to devices already tagged. A rule numbered 99
comes too late and has no effect.
Without the rule (or membership of the input group), Start fails: the status bar
reports that no readable /dev/input device was found.
To uninstall:
sudo rm /etc/udev/rules.d/60-ssr-input.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=input
2. Accept the screen sharing request
When you click Start, your desktop (GNOME, KDE, wlroots…) shows its screen sharing dialog. Pick one window or one screen: every screenshot of the session comes from it, mouse pointer included.
ssr keeps the token returned by the portal in ~/.local/state/ssr/screencast.token (or
$XDG_STATE_HOME/ssr/screencast.token), so later recordings do not ask again. If the portal is not
available, ssr falls back to xcap.
What changes under Wayland
- The screenshot is the latest image of the shared window or screen. Window captures are trimmed of the black borders some compositors add around them.
- The click position is not known: no red ring on the screenshots, and no coordinates in
steps.json. - The title and application of the window are not exposed; the step list shows Window: unknown (not exposed under Wayland).
- Left, right and middle mouse buttons are recorded.
Building on Linux
The Wayland capture path needs the PipeWire headers and clang (for bindgen). On Debian or Ubuntu:
sudo apt install libpipewire-0.3-dev libspa-0.2-dev clang
See install with Cargo for the full list used by the release workflow.