use g3_computer_control::create_controller; #[tokio::main] async fn main() { println!("Testing window-specific screenshot capture..."); let controller = create_controller().expect("Failed to create controller"); // Test 1: Capture iTerm2 window println!("\n1. Capturing iTerm2 window..."); match controller .take_screenshot("/tmp/iterm_window.png", None, Some("iTerm2")) .await { Ok(_) => { println!(" ✅ iTerm2 window captured to /tmp/iterm_window.png"); let _ = std::process::Command::new("open") .arg("/tmp/iterm_window.png") .spawn(); } Err(e) => println!(" ❌ Failed: {}", e), } // Wait a moment for the image to open tokio::time::sleep(tokio::time::Duration::from_secs(2)).await; // Test 2: Full screen capture for comparison println!("\n2. Capturing full screen for comparison..."); match controller .take_screenshot("/tmp/fullscreen.png", None, None) .await { Ok(_) => { println!(" ✅ Full screen captured to /tmp/fullscreen.png"); let _ = std::process::Command::new("open") .arg("/tmp/fullscreen.png") .spawn(); } Err(e) => println!(" ❌ Failed: {}", e), } println!("\n=== Comparison ==="); println!("iTerm window: /tmp/iterm_window.png (should show ONLY iTerm window)"); println!("Full screen: /tmp/fullscreen.png (should show entire desktop)"); // Show file sizes if let Ok(meta1) = std::fs::metadata("/tmp/iterm_window.png") { if let Ok(meta2) = std::fs::metadata("/tmp/fullscreen.png") { println!("\nFile sizes:"); println!(" iTerm window: {:.1} MB", meta1.len() as f64 / 1_000_000.0); println!(" Full screen: {:.1} MB", meta2.len() as f64 / 1_000_000.0); println!("\nWindow capture should be smaller than full screen."); } } }