Skip to main content

clipboard_monitor/
clipboard_monitor.rs

1use std::time::Duration;
2
3use lcsa_core::{Capability, ContextApi, PermissionRequest, Scope, SignalType};
4
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6    let mut api = ContextApi::new()?;
7
8    api.subscribe(SignalType::Clipboard, |signal| {
9        println!(
10            "clipboard changed: type={:?}, bytes={}, source={}, sensitive={}, command={}",
11            signal.content_type,
12            signal.size_bytes,
13            signal.source_app,
14            signal.likely_sensitive,
15            signal.likely_command
16        );
17    })?;
18
19    api.request_permission(
20        PermissionRequest::new(
21            Capability::ReadClipboardContent,
22            Scope::Session,
23            "Show how explicit content access works in the example",
24        )
25        .with_ttl(Duration::from_secs(300)),
26    )?;
27
28    if let Ok(content) = api.read_clipboard_content() {
29        println!("initial clipboard preview: {}", content.redacted_preview());
30    }
31
32    println!("Monitoring clipboard changes. Press Ctrl+C to exit.");
33    api.run_with_signals()?;
34    Ok(())
35}