Writes the current context window to logs/current_context_window (uses a symlink to a session ID). This PR was unfortunately generated by a different LLM and did a ton of superficial reformating, it's actually a fairly small and benign change, but I don't want to roll back everything. Hope that's ok.
75 lines
2.4 KiB
Rust
75 lines
2.4 KiB
Rust
//! Example demonstrating macOS Accessibility API tools
|
|
//!
|
|
//! This example shows how to use the macax tools to control macOS applications.
|
|
//!
|
|
//! Run with: cargo run --example macax_demo
|
|
|
|
use anyhow::Result;
|
|
use g3_computer_control::MacAxController;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
println!("🍎 macOS Accessibility API Demo\n");
|
|
println!("This demo shows how to control macOS applications using the Accessibility API.\n");
|
|
|
|
// Create controller
|
|
let controller = MacAxController::new()?;
|
|
println!("✅ MacAxController initialized\n");
|
|
|
|
// List running applications
|
|
println!("📱 Listing running applications:");
|
|
match controller.list_applications() {
|
|
Ok(apps) => {
|
|
for app in apps.iter().take(10) {
|
|
println!(" - {}", app.name);
|
|
}
|
|
if apps.len() > 10 {
|
|
println!(" ... and {} more", apps.len() - 10);
|
|
}
|
|
}
|
|
Err(e) => println!(" ❌ Error: {}", e),
|
|
}
|
|
println!();
|
|
|
|
// Get frontmost app
|
|
println!("🎯 Getting frontmost application:");
|
|
match controller.get_frontmost_app() {
|
|
Ok(app) => println!(" Current: {}", app.name),
|
|
Err(e) => println!(" ❌ Error: {}", e),
|
|
}
|
|
println!();
|
|
|
|
// Example: Activate Finder and get its UI tree
|
|
println!("📂 Activating Finder and inspecting UI:");
|
|
match controller.activate_app("Finder") {
|
|
Ok(_) => {
|
|
println!(" ✅ Finder activated");
|
|
|
|
// Wait a moment for activation
|
|
tokio::time::sleep(tokio::time::Duration::from_millis(500)).await;
|
|
|
|
// Get UI tree
|
|
match controller.get_ui_tree("Finder", 2) {
|
|
Ok(tree) => {
|
|
println!("\n UI Tree:");
|
|
for line in tree.lines().take(10) {
|
|
println!(" {}", line);
|
|
}
|
|
}
|
|
Err(e) => println!(" ❌ Error getting UI tree: {}", e),
|
|
}
|
|
}
|
|
Err(e) => println!(" ❌ Error: {}", e),
|
|
}
|
|
println!();
|
|
|
|
println!("✨ Demo complete!\n");
|
|
println!("💡 Tips:");
|
|
println!(" - Use --macax flag with g3 to enable these tools");
|
|
println!(" - Grant accessibility permissions in System Preferences");
|
|
println!(" - Add accessibility identifiers to your apps for easier automation");
|
|
println!(" - See docs/macax-tools.md for full documentation\n");
|
|
|
|
Ok(())
|
|
}
|