Skip to main content

Crate wl_data_control_protocol_evt

Crate wl_data_control_protocol_evt 

Source
Expand description

§wl-data-control-protocol-evt

Implementation of ext-data-control Wayland protocol that is:

  1. pollable
  2. 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)?;

    // read
    let events = stream.drain()?;
    for event in events {
        if let ExtDataControlEvent::Received(text) = event {
            println!("copied {text}")
        }
    }

    // or write
    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();

    // process `events`
}

Structs§

EpollError
An error returned from epoll
ExtDataControlStream
The main object to send and receive events over ext-data-control Wayland protocol

Enums§

ExtDataControlConnectError
An error that may occur when establishing connection to Wayland
ExtDataControlEvent
An event. A collection of events is returned from ExtDataControlStream::drain().
ExtDataControlReadError
An error that may occur during reading from Wayland socket