@@ -56,16 +56,29 @@ macro_rules! command_provider {
5656 }};
5757}
5858
59+#[cfg(windows)]
5960pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
60− // TODO: support for user-defined provider, probably when we have plugin support by setting a
61− // variable?
61+ Box::new(provider::WindowsProvider::default())
62+}
6263
64+#[cfg(target_os = "macos")]
65+pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
6366 if exists("pbcopy") && exists("pbpaste") {
6467 command_provider! {
6568 paste => "pbpaste";
6669 copy => "pbcopy";
6770 }
68− } else if env_var_is_set("WAYLAND_DISPLAY") && exists("wl-copy") && exists("wl-paste") {
71+ } else {
72+ Box::new(provider::NopProvider::new())
73+ }
74+}
75+
76+#[cfg(not(any(windows, target_os = "macos")))]
77+pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
78+ // TODO: support for user-defined provider, probably when we have plugin support by setting a
79+ // variable?
80+
81+ if env_var_is_set("WAYLAND_DISPLAY") && exists("wl-copy") && exists("wl-paste") {
6982 command_provider! {
7083 paste => "wl-paste", "--no-newline";
7184 copy => "wl-copy", "--type", "text/plain";
@@ -88,22 +101,6 @@ pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
88101 primary_paste => "xsel", "-o";
89102 primary_copy => "xsel", "-i";
90103 }
91− } else if exists("lemonade") {
92− command_provider! {
93− paste => "lemonade", "paste";
94− copy => "lemonade", "copy";
95− }
96− } else if exists("doitclient") {
97− command_provider! {
98− paste => "doitclient", "wclip", "-r";
99− copy => "doitclient", "wclip";
100− }
101− } else if exists("win32yank.exe") {
102− // FIXME: does it work within WSL?
103− command_provider! {
104− paste => "win32yank.exe", "-o", "--lf";
105− copy => "win32yank.exe", "-i", "--crlf";
106− }
107104 } else if exists("termux-clipboard-set") && exists("termux-clipboard-get") {
108105 command_provider! {
109106 paste => "termux-clipboard-get";
@@ -115,11 +112,7 @@ pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
115112 copy => "tmux", "load-buffer", "-";
116113 }
117114 } else {
118− #[cfg(target_os = "windows")]
119− return Box::new(provider::WindowsProvider::default());
120−
121− #[cfg(not(target_os = "windows"))]
122− return Box::new(provider::NopProvider::new());
115+ Box::new(provider::NopProvider::new())
123116 }
124117}
125118