wl-data-control-protocol-evt
Implementation of ext-data-control Wayland protocol that is:
- pollable
- event based
API
Full examples can be found in poll.rs and tokio.rs.
Here's a quick poll-based API overview:
use wl_data_control_protocol_evt::{ExtDataControlEvent, ExtDataControlStream};
let mut stream = ExtDataControlStream::new().unwrap();
let fd = stream.as_fd();
loop {
poll([fd], IN)?;
let events = stream.drain()?;
for event in events {
if let ExtDataControlEvent::Received(text) = event {
println!("copied {text}")
}
}
stream.offer_text("try pasting this").unwrap()
}
For async IO you can use something like AsyncFd:
let stream = ExtDataControlStream::new()?;
let async_fd = AsyncFd::new(stream.as_raw_fd())?;
loop {
let mut guard = async_fd.readable().await?;
let events = stream.drain()?;
guard.clear_ready();
}