aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin
diff options
context:
space:
mode:
authorBenjamin Jacobs <benjamin.jacobs@egi.eu>2023-07-20 19:29:59 +0200
committerBenjamin Jacobs <benjamin.jacobs@egi.eu>2023-07-20 19:30:37 +0200
commit6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d (patch)
treec62c05e6cc6c0f1650a5679a358bab8b3744dd57 /src/bin
parent07ebea4b2029b291b84a1e56b6b228abd535e521 (diff)
downloadrbw-6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d.tar.gz
rbw-6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d.zip
Fallback to the nop clipboard provider.
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/rbw-agent/actions.rs1
-rw-r--r--src/bin/rbw-agent/agent.rs19
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,