The monitor is a Rust application that runs on your computer and is responsible for monitoring your activities. It is specifically responsible for monitoring (but not recording) your window, mouse and keyboard activity. Architecture supports multiple platforms.
Implemented platforms:
- macOS
- Windows
- Linux
Here's an example of how to use the monitor as a library by registering event callbacks:
let monitor = Monitor::new();
// Register event callbacks
monitor.register_keyboard_callback(Box::new(on_keyboard_events));
monitor.register_mouse_callback(Box::new(on_mouse_events));
monitor.register_window_callback(Box::new(on_window_event));
initialize_monitor(Arc::new(monitor)).expect("Failed to initialize monitor");
loop {
detect_changes().expect("Failed to detect changes");
std::thread::sleep(std::time::Duration::from_secs(1));
}
On first run on macOS, you'll need to grant accessibility permissions to the application. This is required to monitor window focus and input events.
cargo build
cargo run
- Rust toolchain (install via rustup)
- For macOS:
- Xcode Command Line Tools
See architecture.md for more information.
- The monitor only tracks event metadata, not content
- Window titles, application names, and browser urls are captured for context
- All data processing happens locally
To add support for a new OS platform:
- Create new platform-specific module in
src/platform/
- Implement native bindings in
bindings/
- Implement required traits and functions
- Update conditional compilation flags
Brought over from the original repo: https://github.com/CodeClimbersIO/app-codeclimbers