Simple Rust CLI that logs the active window (app name + title) and cursor position to CSV when they change. Cross-platform: Linux, macOS, Windows.
cargo build # Build
cargo test # Run tests
cargo run -- --help # Show CLI helpRequires development libraries on Linux:
sudo apt-get install -y libx11-dev libxi-dev libxtst-dev libevdev-dev libdbus-1-dev pkg-config \
libinput-dev libxkbcommon-dev libudev-dev \
libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb-shm0-dev- Mouse tracking (Wayland): User must be in the
inputgroup:sudo usermod -aG input $USER(log out/in after) - Active window (GNOME Wayland): Requires the x-win GNOME Shell extension. The app auto-installs it on first run; user must then log out/in and enable it with
gnome-extensions enable x-win@miniben90.org
src/main.rs- CLI entry point, argument parsing, main loopsrc/get_state.rs- Reads active window viax-winand cursor viardevsrc/write_csv.rs- Appends state to CSV file
rust.yml- Builds and tests on Linux, macOS, Windows on push/PR tomasterrelease.yml- Creates GitHub release with binaries when tags matchingv[0-9]+.*are pushed