An open API service indexing awesome lists of open source software.

https://github.com/doumanash/clipboard-master

Clipboard monitoring utility
https://github.com/doumanash/clipboard-master

clipboard clipboard-manager winapi

Last synced: 10 months ago
JSON representation

Clipboard monitoring utility

Awesome Lists containing this project

README

          

# clipboard-master

![](https://github.com/DoumanAsh/clipboard-master/workflows/Rust/badge.svg)
[![Crates.io](https://img.shields.io/crates/v/clipboard-master.svg)](https://crates.io/crates/clipboard-master)
[![Docs.rs](https://docs.rs/clipboard-master/badge.svg)](https://docs.rs/clipboard-master/*/x86_64-pc-windows-msvc/clipboard_master/)

Clipboard monitoring library.

## Supported platforms

- Windows - uses dummy window to receive messages when clipboard changes;
- Linux - uses [x11_clipboard](https://github.com/quininer/x11-clipboard)
- MacOS - uses polling via `NSPasteboard::changeCount` as there is no event notification.

## Clipboard Master Library

This project exports `Master` struct that provides simple way to handle clipboard updates.

Example:

```rust
extern crate clipboard_master;

use clipboard_master::{Master, ClipboardHandler, CallbackResult};

use std::io;

struct Handler;

impl ClipboardHandler for Handler {
fn on_clipboard_change(&mut self) -> CallbackResult {
println!("Clipboard change happened!");
CallbackResult::Next
}

fn on_clipboard_error(&mut self, error: io::Error) -> CallbackResult {
eprintln!("Error: {}", error);
CallbackResult::Next
}
}

fn main() {
let mut master = Master::new(Handler).expect("create new monitor");

let shutdown = master.shutdown_channel();
std::thread::spawn(move || {
std::thread::sleep(core::time::Duration::from_secs(1));
println!("I did some work so time to finish...");
shutdown.signal();
});
//Working until shutdown
master.run().expect("Success");
}
```