Skip to content

Commit 16510b1

Browse files
author
passchaos
committed
feat: add non-linux clipboard handle
1 parent b5e2aed commit 16510b1

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

src/main.rs

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
use std::{io::BufReader, path::Path, time::Duration};
22

33
use anyhow::{bail, Context, Result};
4-
use arboard::{Clipboard, GetExtLinux};
4+
use arboard::Clipboard;
5+
6+
#[cfg(target_os = "linux")]
7+
use arboard::GetExtLinux;
8+
59
use chinese_detection::{classify, ClassificationResult};
610
use clap::Parser;
711
use db::Answer;
812
use explain::YdcvResp;
913
use once_cell::sync::Lazy;
14+
15+
#[cfg(target_os = "linux")]
1016
use parking_lot::RwLock;
1117
use reqwest::Client;
1218
// use tempdir::TempDir;
@@ -19,6 +25,7 @@ mod explain;
1925

2026
const REQUEST_BASE: &'static str = "http://fanyi.youdao.com/openapi.do?keyfrom=ydcv-rust&key=379421805&type=data&doctype=json&version=1.1&q=";
2127

28+
#[cfg(target_os = "linux")]
2229
static CACHED_CONTENT: RwLock<(Option<String>, Option<String>)> = RwLock::new((None, None));
2330

2431
#[derive(Parser, Debug)]
@@ -28,13 +35,15 @@ struct Args {
2835
daemon_mode: bool,
2936
}
3037

38+
#[cfg(target_os = "linux")]
3139
fn get_selected_text(clip: &mut Clipboard) -> Option<String> {
3240
let g = clip.get();
3341
let g = g.clipboard(arboard::LinuxClipboardKind::Primary);
3442

3543
g.text().ok()
3644
}
3745

46+
#[cfg(target_os = "linux")]
3847
fn get_copied_text(clip: &mut Clipboard) -> Option<String> {
3948
let g = clip.get();
4049
let g = g.clipboard(arboard::LinuxClipboardKind::Clipboard);
@@ -43,26 +52,29 @@ fn get_copied_text(clip: &mut Clipboard) -> Option<String> {
4352
}
4453

4554
fn get_clipboard_content(clip: &mut Clipboard) -> Option<String> {
46-
let copied_text = get_copied_text(clip);
47-
let selected_text = get_selected_text(clip);
55+
#[cfg(target_os = "linux")]
56+
{
57+
let copied_text = get_copied_text(clip);
58+
let selected_text = get_selected_text(clip);
4859

49-
if let Some(copied_text) = copied_text {
50-
if CACHED_CONTENT.read().0.as_ref() != Some(&copied_text) {
51-
CACHED_CONTENT.write().0 = Some(copied_text.clone());
60+
if let Some(copied_text) = copied_text {
61+
if CACHED_CONTENT.read().0.as_ref() != Some(&copied_text) {
62+
CACHED_CONTENT.write().0 = Some(copied_text.clone());
5263

53-
return Some(copied_text);
64+
return Some(copied_text);
65+
}
5466
}
55-
}
5667

57-
if let Some(selected_text) = selected_text {
58-
if CACHED_CONTENT.read().1.as_ref() != Some(&selected_text) {
59-
CACHED_CONTENT.write().1 = Some(selected_text.clone());
68+
if let Some(selected_text) = selected_text {
69+
if CACHED_CONTENT.read().1.as_ref() != Some(&selected_text) {
70+
CACHED_CONTENT.write().1 = Some(selected_text.clone());
6071

61-
return Some(selected_text);
72+
return Some(selected_text);
73+
}
6274
}
6375
}
6476

65-
None
77+
clip.get_text().ok()
6678
}
6779

6880
fn main() -> Result<()> {

0 commit comments

Comments
 (0)