summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Verevkin <maxxverrr@gmail.com>2022-07-05 11:38:49 +0300
committerMax Verevkin <maxxverrr@gmail.com>2022-07-05 11:38:49 +0300
commitaa8c17a178aa2478230d3172cba8bfe03ea7333d (patch)
tree3a9e2cb8435a5d64d4a9b07961fd5919bb6d4dae /src
parent508ba0674353b7fd2c8e21f608bcece3115ec0b2 (diff)
downloadi3bar-mango-aa8c17a178aa2478230d3172cba8bfe03ea7333d.tar.gz
set_cursor()
Diffstat (limited to 'src')
-rw-r--r--src/main.rs12
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);
}