diff options
author | Benjamin Jacobs <benjamin.jacobs@egi.eu> | 2023-07-20 19:29:59 +0200 |
---|---|---|
committer | Benjamin Jacobs <benjamin.jacobs@egi.eu> | 2023-07-20 19:30:37 +0200 |
commit | 6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d (patch) | |
tree | c62c05e6cc6c0f1650a5679a358bab8b3744dd57 | |
parent | 07ebea4b2029b291b84a1e56b6b228abd535e521 (diff) | |
download | rbw-6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d.tar.gz rbw-6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d.zip |
Fallback to the nop clipboard provider.
-rw-r--r-- | src/bin/rbw-agent/actions.rs | 1 | ||||
-rw-r--r-- | src/bin/rbw-agent/agent.rs | 19 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/bin/rbw-agent/actions.rs b/src/bin/rbw-agent/actions.rs index 4c7f6fb..58432b1 100644 --- a/src/bin/rbw-agent/actions.rs +++ b/src/bin/rbw-agent/actions.rs @@ -1,5 +1,4 @@ use anyhow::Context as _; -use copypasta::ClipboardProvider as _; pub async fn register( sock: &mut crate::sock::Sock, diff --git a/src/bin/rbw-agent/agent.rs b/src/bin/rbw-agent/agent.rs index 5769c0e..54585a1 100644 --- a/src/bin/rbw-agent/agent.rs +++ b/src/bin/rbw-agent/agent.rs @@ -12,7 +12,7 @@ pub struct State { pub sync_timeout: crate::timeout::Timeout, pub sync_timeout_duration: std::time::Duration, pub notifications_handler: crate::notifications::Handler, - pub clipboard: copypasta::ClipboardContext, + pub clipboard: Box<dyn copypasta::ClipboardProvider>, } impl State { @@ -60,9 +60,20 @@ impl Agent { sync_timeout.set(sync_timeout_duration); } let notifications_handler = crate::notifications::Handler::new(); - let clipboard = copypasta::ClipboardContext::new().map_err(|e| { - anyhow::anyhow!("couldn't create clipboard context: {e}") - })?; + let clipboard: Box<dyn copypasta::ClipboardProvider> = + copypasta::ClipboardContext::new() + .map(|v| { + Box::new(v) + as Box<dyn copypasta::ClipboardProvider + Send> + }) + .unwrap_or_else(|e| { + log::warn!("couldn't create clipboard context: {e}"); + Box::new( + // infailible + copypasta::nop_clipboard::NopClipboardContext::new() + .unwrap(), + ) + }); Ok(Self { timer_r, sync_timer_r, |