Skip to content

Requirements and Permissions

Joshua Hirsig edited this page Jun 30, 2026 · 1 revision

Requirements and Permissions

stepshot is deliberately privileged — it sees every click and can screenshot any window — but it stays local-only and shows no Wayland permission prompts. Here is what it needs and why.

At a glance

Purpose Requirement
Session KDE Plasma on Wayland (KWin)
Screenshots the .desktop file from install.sh (KWin authorization)
Click capture membership in the input group, then a reboot
Element names (Qt/KDE) Qt built with accessibility / the Qt AT-SPI bridge
Element names (GTK) at-spi2-atk / libatk-bridge (usually present)
Element names (Chrome/Electron) launch with --force-renderer-accessibility

The input group (click capture)

Wayland has no global input API, so stepshot reads /dev/input (evdev) directly. That requires membership in the input group:

sudo usermod -aG input "$USER"

You must reboot — a re-login is not enough

On systemd systems, logging out and back in does not restart the per-user systemd --user manager, which launches your tray apps. It keeps the group set it had at first login, so a menu-launched stepshot still has no input group — the tray icon may appear, but every recording yields 0 steps.

Reboot after adding yourself to the group. (loginctl terminate-user "$USER" also works, but it kills your whole session.)

Do not use newgrp input / sg input as a shortcut. The group switch makes the process non-dumpable (e.g. Fedora's suid_dumpable=2), so KWin can't read its /proc/<pid>/exe to authorize the screenshot and rejects it with NoAuthorized. Reboot instead.

KWin screenshot authorization

KWin only allows org.kde.KWin.ScreenShot2 for executables that ship a .desktop file declaring:

X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2

install.sh creates this file and points Exec= at the installed binary. KWin matches the resolved executable path against Exec=, which is why the installer copies the binary rather than symlinking it. There is no runtime consent dialog — the same mechanism Spectacle uses.

Accessibility (element names)

Element names come from the AT-SPI accessibility tree, which stepshot enables only while recording and disables afterwards.

  • Qt/KDE apps need Qt's accessibility/AT-SPI bridge. On Gentoo this is the accessibility USE flag on qtbase; most distros ship it enabled.
  • GTK apps use at-spi2-atk / libatk-bridge, usually already installed.
  • Firefox activates accessibility automatically once an assistive tech is detected.
  • Chrome / Electron must be launched with --force-renderer-accessibility.

Without accessibility, descriptions gracefully fall back to the window level.

Privacy

While running, stepshot can see every click and silently screenshot any window — the capabilities of a keylogger or screen recorder. In exchange it is:

  • local-only — no network, ever,
  • writes only to the session folder,
  • toggles accessibility only while recording.

Only run builds you trust. To revoke screenshot access, remove the .desktop file (see Installation → Uninstall).

Clone this wiki locally