@@ -77,7 +77,11 @@ pub fn get_clipboard_provider() -> Box<dyn ClipboardProvider> {
7777 copy => "tmux", "load-buffer", "-";
7878 }
7979 } else {
80− Box::new(provider::NopProvider)
80+ #[cfg(target_os = "windows")]
81+ return Box::new(provider::WindowsProvider);
82+
83+ #[cfg(not(target_os = "windows"))]
84+ return Box::new(provider::NopProvider);
8185 }
8286}
8387
@@ -120,6 +124,27 @@ mod provider {
120124 }
121125 }
122126
127+ #[cfg(target_os = "windows")]
128+ #[derive(Debug)]
129+ pub struct WindowsProvider;
130+
131+ #[cfg(target_os = "windows")]
132+ impl ClipboardProvider for WindowsProvider {
133+ fn name(&self) -> Cow<str> {
134+ Cow::Borrowed("clipboard-win")
135+ }
136+
137+ fn get_contents(&self) -> Result<String> {
138+ let contents = clipboard_win::get_clipboard(clipboard_win::formats::Unicode)?;
139+ Ok(contents)
140+ }
141+
142+ fn set_contents(&self, contents: String) -> Result<()> {
143+ clipboard_win::set_clipboard(clipboard_win::formats::Unicode, contents)?;
144+ Ok(())
145+ }
146+ }
147+
123148 #[derive(Debug)]
124149 pub struct CommandConfig {
125150 pub prg: &'static str,