clipboard_monitor/
clipboard_monitor.rs1use 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}