54 个版本
0.31.5 | 2024 年 7 月 16 日 |
---|---|
0.31.3 | 2024 年 5 月 31 日 |
0.31.1 | 2024 年 1 月 29 日 |
0.31.0 | 2023 年 9 月 2 日 |
0.24.0 | 2019 年 9 月 14 日 |
838 在 GUI
361,422 每月下载量
在 541 个 Crates 中使用 (7 直接)
97KB
1K SLoC
wayland-cursor
为 Wayland 客户端应用加载 XCursor 图像。此 crate 提供了加载系统提供的光标图像并将它们加载到 WlBuffer
中的辅助工具,以及获取正确显示动画光标的必要元数据。
lib.rs
:
Wayland 光标工具
此 crate 旨在在 Rust 中重新实现 libwayland-cursor
库的功能。
它允许您从系统加载光标并正确显示它们。
首先,您需要创建一个 CursorTheme
,它表示完整的光标主题。
从该主题中,使用 [get_cursor()
][CursorTheme::get_cursor()] 方法,您可以加载一个特定的 Cursor
,如果光标是动画的,它可以包含多个图像。它还提供查询动画的哪一帧应该在何时显示的方法,以及包含这些帧的缓冲区的句柄,以便将它们附加到 wayland 表面。
示例
use wayland_cursor::CursorTheme;
// Load the default cursor theme.
let mut cursor_theme = CursorTheme::load(&connection, shm, 32)
.expect("Could not load cursor theme");
let cursor = cursor_theme.get_cursor("wait")
.expect("Cursor not provided by theme");
let start_time = Instant::now();
loop {
// Obtain which frame we should show, and for how long.
let millis = start_time.elapsed().as_millis();
let fr_info = cursor.frame_and_duration(millis as u32);
// Here, we obtain the right cursor frame...
let buffer = &cursor[fr_info.frame_index];
// and attach it to a wl_surface.
cursor_surface.attach(Some(&buffer), 0, 0);
cursor_surface.commit();
sleep(Duration::from_millis(fr_info.frame_duration as u64));
}
依赖关系
~3–12MB
~146K SLoC