aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2023-07-20 23:04:27 -0400
committerGitHub <noreply@github.com>2023-07-20 23:04:27 -0400
commit106a58df29656a0da93aad5434d8850e4e2856ea (patch)
tree7fb1524e6b73bb6f73a55c385edb5191fabeb773
parent8ce911208b7359de767541396ad4aff7a61d0423 (diff)
parent6f5e13f8fe9be6bcb1262ff25c2601534bdc3a6d (diff)
downloadrbw-106a58df29656a0da93aad5434d8850e4e2856ea.tar.gz
rbw-106a58df29656a0da93aad5434d8850e4e2856ea.zip
Merge pull request #126 from benja-egi/main
Fallback to the nop clipboard provider.
-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,