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

calloop-wayland-source

为 calloop 实现的 wayland-rs 客户端事件源

4 个版本 (重大更新)

0.4.0 2024 年 8 月 23 日
0.3.0 2024 年 3 月 1 日
0.2.0 2023 年 9 月 20 日
0.1.0 2023 年 7 月 20 日

#811 in GUI

Download history 39158/week @ 2024-05-03 38136/week @ 2024-05-10 38032/week @ 2024-05-17 40845/week @ 2024-05-24 42622/week @ 2024-05-31 51727/week @ 2024-06-07 56824/week @ 2024-06-14 56447/week @ 2024-06-21 57183/week @ 2024-06-28 54849/week @ 2024-07-05 60601/week @ 2024-07-12 68482/week @ 2024-07-19 63600/week @ 2024-07-26 63116/week @ 2024-08-02 71963/week @ 2024-08-09 63802/week @ 2024-08-16

273,636 每月下载量
用于 359 个工具包 (直接使用 2 个)

MIT 许可证

13KB
144 行代码

calloop-wayland-source

使用 EventQueuewayland-clientcalloop 的事件循环。


lib.rs:

使用 EventQueue 从 wayland-client 与使用 calloop 进行轮询的事件循环的实用工具。

示例

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.
}

依赖项

~4–13MB
~165K SLoC