diff options
| author | Max Verevkin <maxxverrr@gmail.com> | 2022-07-05 11:38:49 +0300 |
|---|---|---|
| committer | Max Verevkin <maxxverrr@gmail.com> | 2022-07-05 11:38:49 +0300 |
| commit | aa8c17a178aa2478230d3172cba8bfe03ea7333d (patch) | |
| tree | 3a9e2cb8435a5d64d4a9b07961fd5919bb6d4dae | |
| parent | 508ba0674353b7fd2c8e21f608bcece3115ec0b2 (diff) | |
| download | i3bar-mango-aa8c17a178aa2478230d3172cba8bfe03ea7333d.tar.gz | |
set_cursor()
| -rw-r--r-- | src/main.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index fb6e255..5633807 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ use smithay_client_toolkit::{ client::protocol::{wl_output, wl_pointer}, protocols::wlr::unstable::layer_shell::v1::client::zwlr_layer_shell_v1, }, + seat::pointer, WaylandSource, }; @@ -96,22 +97,29 @@ fn main() { let _listner_handle = env.listen_for_outputs(move |output, info, _| output_handler(output, info)); - // Right now river only supports one seat: default + // Right now river only supports one seat + let cursor_theme = pointer::ThemeManager::init( + pointer::ThemeSpec::System, + env.require_global(), + env.require_global(), + ); for seat in env.get_all_seats() { sctk::seat::with_seat_data(&seat, |seat_data| { if seat_data.has_pointer && !seat_data.defunct { let pointer = seat.get_pointer(); + let themed_pointer = cursor_theme.theme_pointer(pointer.detach()); let bar_state_handle = bar_state.clone(); let seat = seat.clone(); let mut pos = (0.0, 0.0); let mut cur_surface = None; pointer.quick_assign(move |_, event, _| match event { wl_pointer::Event::Enter { - serial: _, + serial, surface, surface_x: y, surface_y: x, } => { + let _ = themed_pointer.set_cursor("default", Some(serial)); cur_surface = Some(surface); pos = (x, y); } |
