Expand description
§window-observer-rs
This crate provides an observer that receives events such as window movement and resizing. It is designed to receive window events on Windows and macOS for cross-platform applications.
§Example
use window_observer::{EventFilter, WindowObserver};
#[tokio::main]
async fn main() {
let pid = std::env::var("PID")
.map(|v| v.parse().unwrap())
.expect("Please give me the env `PID` of application that has window.");
let (event_tx, mut event_rx) = tokio::sync::mpsc::unbounded_channel();
let event_filter = EventFilter::all();
let _window_observer = WindowObserver::start(pid, event_tx, event_filter)
.await
.unwrap();
while let Some(event) = event_rx.recv().await {
match event {
Ok(event) => println!("new event: {event:#?}"),
Err(e) => eprintln!("Error occurred during handling event: {e:#?}"),
}
}
}§Platform supports
- macOS*
- Windows
-
Linux?
I have no plans to make this at this time due to my inexperienced knowledge about Linux. But I’d be happy to receive pull requests.
* Note that window operations on macOS use the Accessibility API, so accessibility permissions are required.
§Acknowledgements
- Windows event handler: wineventhook-rs
§License
This project is licensed under the MIT License.
Re-exports§
pub use window::Position;pub use window::Size;pub use window::Window;pub use window_getter;pub use ::tokio;
Modules§
Structs§
- Event
Filter - Represents a filter for window events.
- Window
Observer - Observes window events.
Enums§
- Error
- Represents errors that can occur in the library.
- Event
- Represents events that can be observed on a window.
- Maybe
Window Available - Represents a window that may or may not be available.
Type Aliases§
- Event
Result - A type alias for the result of an event.
Errmeans that the event could not be processed, andOkcontains the event. - EventRx
- A type alias for the window event reception channel.
- EventTx
- A type alias for the window event transmission channel.