1#[cfg(target_os = "linux")]
2use clipboard_rs::ClipboardContextX11Options;
3use clipboard_rs::{common::RustImage, Clipboard, ClipboardContext};
4
5#[cfg(target_os = "macos")]
6const TMP_PATH: &str = "/tmp/";
7#[cfg(target_os = "windows")]
8const TMP_PATH: &str = "C:\\Windows\\Temp\\";
9#[cfg(all(
10 unix,
11 not(any(
12 target_os = "macos",
13 target_os = "ios",
14 target_os = "android",
15 target_os = "emscripten"
16 ))
17))]
18const TMP_PATH: &str = "/tmp/";
19#[cfg(any(target_os = "ios", target_os = "android"))]
21const TMP_PATH: &str = "/tmp/";
22
23#[cfg(target_os = "linux")]
24fn setup_clipboard() -> ClipboardContext {
25 ClipboardContext::new_with_options(ClipboardContextX11Options { read_timeout: None }).unwrap()
26}
27
28#[cfg(not(target_os = "linux"))]
29fn setup_clipboard() -> ClipboardContext {
30 ClipboardContext::new().unwrap()
31}
32
33fn main() {
34 let ctx = setup_clipboard();
35
36 let types = ctx.available_formats().unwrap();
37 println!("{:?}", types);
38
39 let img = ctx.get_image();
40
41 match img {
42 Ok(img) => {
43 let _ = img
44 .save_to_path(format!("{}test.png", TMP_PATH).as_str())
45 .map_err(|e| println!("save test.png err={}", e));
46
47 let resize_img = img
48 .thumbnail(300, 300)
49 .map_err(|e| println!("thumbnail err={}", e))
50 .unwrap();
51
52 let _ = resize_img
53 .save_to_path(format!("{}test_thumbnail.png", TMP_PATH).as_str())
54 .map_err(|e| println!("save test_thumbnail.png err={}", e));
55 }
56 Err(err) => {
57 println!("err={}", err);
58 }
59 }
60}