evtr is a terminal UI for inspecting Linux evdev input devices. Select a
device from /dev/input/event*, then watch axes, relative motion, buttons,
hats, joysticks, and touch state update live.
- Linux with evdev support
- Rust 1.85 or newer to build from source
- A terminal supported by
crossterm - Permission to read the selected
/dev/input/event*node
If you see permission errors, grant your user read access to the relevant input devices. The exact group or udev rule is distro-specific.
Build the release binary from a checkout:
cargo build --release
./target/release/evtrInstall it into your Cargo bin directory from the local checkout:
cargo install --path .
evtrOr run it directly without installing:
cargo run --releaseevtr reads config from:
--config <path>when provided$XDG_CONFIG_HOME/evtr/config.tomlwhen that file exists~/.config/evtr/config.tomlwhen the XDG file does not exist and the fallback file does
When XDG_CONFIG_HOME is set to an absolute path, --generate-config and
--print-config-path use $XDG_CONFIG_HOME/evtr/config.toml even if the
directory does not exist yet.
To generate a starter config file:
cargo run --release -- --generate-configTo write the starter config to a specific path:
cargo run --release -- --config /path/to/evtr.toml --generate-configOther config-related flags:
--print-config-path: print the path used for config generation--print-default-config: print the full default TOML template
Config is strict: unknown fields, invalid values, and duplicate/conflicting key bindings fail fast.
--print-default-config prints the complete supported config surface. The
high-level sections are:
selector: device sort order and selector page sizemonitor: page scroll size, startup focus, joystick inversion, and relative axis rangetheme.palette: five hex colors used by the TUIlayout.selectorandlayout.monitor: panel sizing knobskeys.selectorandkeys.monitor: explicit key binding lists
?to open help
evtr will report actionable errors when:
/dev/inputcannot be read- Event nodes exist but cannot be opened
- The selected device stream ends or returns an I/O error
- Terminal initialization or redraw fails