crabgrab 0.4.0

A cross-platform screen/window capture crate
Documentation
use std::time::Duration;

#[cfg(target_os = "macos")]
use crabgrab::platform::macos::MacosCapturableWindowExt as _;

#[cfg(target_os = "windows")]
use crabgrab::platform::windows::WindowsCapturableWindowExt as _;

use crabgrab::prelude::*;

fn main() { 
    let runtime = tokio::runtime::Builder::new_multi_thread()
        .build().unwrap();
    let future = runtime.spawn(async {
        let filter = CapturableContentFilter::NORMAL_WINDOWS;
        let content = CapturableContent::new(filter).await.unwrap();
        for window in content.windows() {
            #[cfg(target_os = "macos")]
            println!("window: {}, app: {}, window layer: {:?}, window level: {:?}", window.title(), window.application().identifier(), window.get_window_layer().ok(), window.get_window_level().ok());
            #[cfg(target_os = "windows")]
            println!("window: {}, window handle: {:?}", window.title(), window.get_window_handle());
        }
    });
    runtime.block_on(future).unwrap();
    runtime.shutdown_timeout(Duration::from_millis(10000));
}