fenestra_shell/
os_clipboard.rs1use fenestra_core::Clipboard;
5
6#[derive(Default)]
8pub struct OsClipboard {
9 inner: Option<arboard::Clipboard>,
10}
11
12impl OsClipboard {
13 fn ensure(&mut self) -> Option<&mut arboard::Clipboard> {
14 if self.inner.is_none() {
15 self.inner = arboard::Clipboard::new().ok();
16 }
17 self.inner.as_mut()
18 }
19}
20
21impl Clipboard for OsClipboard {
22 fn get(&mut self) -> Option<String> {
23 self.ensure().and_then(|c| c.get_text().ok())
24 }
25
26 fn set(&mut self, text: String) {
27 if let Some(c) = self.ensure() {
28 let _ = c.set_text(text);
29 }
30 }
31}