这是indexloc提供的服务,不要输入任何密码
Skip to content

tasuren/window-observer-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Crates.io Version docs.rs

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

License

This project is licensed under the MIT License.

About

Window observer library for Rust.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Languages