#wayland #event-source #calloop #windowing #event-loop #loops #client

calloop-wayland-source

A wayland-rs client event source for callloop

3 releases (breaking)

0.3.0 Mar 1, 2024
0.2.0 Sep 20, 2023
0.1.0 Jul 20, 2023

#867 in GUI

Download history 16079/week @ 2024-01-05 18923/week @ 2024-01-12 22353/week @ 2024-01-19 25216/week @ 2024-01-26 26317/week @ 2024-02-02 28822/week @ 2024-02-09 30307/week @ 2024-02-16 28378/week @ 2024-02-23 30740/week @ 2024-03-01 29211/week @ 2024-03-08 30484/week @ 2024-03-15 35050/week @ 2024-03-22 36397/week @ 2024-03-29 30514/week @ 2024-04-05 34420/week @ 2024-04-12 32546/week @ 2024-04-19

139,233 downloads per month
Used in 270 crates (via smithay-client-toolkit)

MIT license

13KB
144 lines

calloop-wayland-source

Use EventQueue from the wayland-client with the calloop.


lib.rs:

Utilities for using an EventQueue from wayland-client with an event loop that performs polling with calloop.

Example

use calloop::EventLoop;
use calloop_wayland_source::WaylandSource;
use wayland_client::{Connection, QueueHandle};

// Create a Wayland connection and a queue.
let connection = Connection::connect_to_env().unwrap();
let event_queue = connection.new_event_queue();
let queue_handle = event_queue.handle();

// Create the calloop event loop to drive everytihng.
let mut event_loop: EventLoop<()> = EventLoop::try_new().unwrap();
let loop_handle = event_loop.handle();

// Insert the wayland source into the calloop's event loop.
WaylandSource::new(connection, event_queue).insert(loop_handle).unwrap();

// This will start dispatching the event loop and processing pending wayland requests.
while let Ok(_) = event_loop.dispatch(None, &mut ()) {
    // Your logic here.
}

Dependencies

~5–14MB
~181K SLoC