use std::process::Command; fn main() { let path = "/tmp/rust_screencapture_test.png"; println!("Testing screencapture command from Rust..."); let mut cmd = Command::new("screencapture"); cmd.arg("-x"); // No sound cmd.arg(path); println!("Command: {:?}", cmd); match cmd.output() { Ok(output) => { println!("Exit status: {}", output.status); println!("Stdout: {}", String::from_utf8_lossy(&output.stdout)); println!("Stderr: {}", String::from_utf8_lossy(&output.stderr)); if output.status.success() { println!("\nāœ… Screenshot saved to: {}", path); // Check file exists and size if let Ok(metadata) = std::fs::metadata(path) { println!("File size: {} bytes ({:.1} MB)", metadata.len(), metadata.len() as f64 / 1_000_000.0); } // Open it let _ = Command::new("open").arg(path).spawn(); println!("\nOpened screenshot - please verify it looks correct!"); } else { println!("\nāŒ Screenshot failed!"); } } Err(e) => { println!("āŒ Failed to execute screencapture: {}", e); } } }