diff --git a/src/bin/server.rs b/src/bin/server.rs index fe7a1c9..671b7f5 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -9,10 +9,17 @@ use std::{ use wayland_protocols::wp::{ keyboard_shortcuts_inhibit::zv1::client::{ - zwp_keyboard_shortcuts_inhibit_manager_v1, zwp_keyboard_shortcuts_inhibitor_v1, + zwp_keyboard_shortcuts_inhibit_manager_v1::ZwpKeyboardShortcutsInhibitManagerV1, + zwp_keyboard_shortcuts_inhibitor_v1::ZwpKeyboardShortcutsInhibitorV1, + }, + pointer_constraints::zv1::client::{ + zwp_locked_pointer_v1::ZwpLockedPointerV1, + zwp_pointer_constraints_v1::{Lifetime, ZwpPointerConstraintsV1}, + }, + relative_pointer::zv1::client::{ + zwp_relative_pointer_manager_v1::ZwpRelativePointerManagerV1, + zwp_relative_pointer_v1::{self, ZwpRelativePointerV1}, }, - pointer_constraints::zv1::client::{zwp_locked_pointer_v1, zwp_pointer_constraints_v1}, - relative_pointer::zv1::client::{zwp_relative_pointer_manager_v1, zwp_relative_pointer_v1}, }; use wayland_protocols_wlr::layer_shell::v1::client::{zwlr_layer_shell_v1, zwlr_layer_surface_v1}; @@ -20,8 +27,8 @@ use wayland_protocols_wlr::layer_shell::v1::client::{zwlr_layer_shell_v1, zwlr_l use wayland_client::{ globals::{registry_queue_init, GlobalListContents}, protocol::{ - wl_buffer, wl_compositor, wl_keyboard, wl_pointer, wl_region, wl_registry, - wl_seat, wl_shm, wl_shm_pool, wl_surface, + wl_buffer, wl_compositor, wl_keyboard, wl_pointer, wl_region, wl_registry, wl_seat, wl_shm, + wl_shm_pool, wl_surface, }, Connection, Dispatch, QueueHandle, WEnum, }; @@ -30,9 +37,9 @@ use tempfile; struct Globals { compositor: wl_compositor::WlCompositor, - pointer_constraints: zwp_pointer_constraints_v1::ZwpPointerConstraintsV1, - relative_pointer_manager: zwp_relative_pointer_manager_v1::ZwpRelativePointerManagerV1, - shortcut_inhibit_manager: zwp_keyboard_shortcuts_inhibit_manager_v1::ZwpKeyboardShortcutsInhibitManagerV1, + pointer_constraints: ZwpPointerConstraintsV1, + relative_pointer_manager: ZwpRelativePointerManagerV1, + shortcut_inhibit_manager: ZwpKeyboardShortcutsInhibitManagerV1, seat: wl_seat::WlSeat, shm: wl_shm::WlShm, layer_shell: zwlr_layer_shell_v1::ZwlrLayerShellV1, @@ -41,9 +48,9 @@ struct Globals { struct App { running: bool, windows: Windows, - pointer_lock: Option, - rel_pointer: Option, - shortcut_inhibitor: Option, + pointer_lock: Option, + rel_pointer: Option, + shortcut_inhibitor: Option, connection: protocol::Connection, globals: Globals, } @@ -66,10 +73,17 @@ impl Window { let (width, height) = (1, 1440); let mut file = tempfile::tempfile().unwrap(); draw(&mut file, (width, height)); - let pool = g.shm.create_pool(file.as_raw_fd(), (width * height * 4) as i32, &qh, ()); - let buffer = pool.create_buffer(0, - width as i32, height as i32, (width * 4) as i32, - wl_shm::Format::Argb8888, &qh, (), + let pool = g + .shm + .create_pool(file.as_raw_fd(), (width * height * 4) as i32, &qh, ()); + let buffer = pool.create_buffer( + 0, + width as i32, + height as i32, + (width * 4) as i32, + wl_shm::Format::Argb8888, + &qh, + (), ); let surface = g.compositor.create_surface(&qh, ()); @@ -84,11 +98,15 @@ impl Window { layer_surface.set_anchor(zwlr_layer_surface_v1::Anchor::Right); layer_surface.set_size(1, 1440); - layer_surface.set_exclusive_zone(1); + layer_surface.set_exclusive_zone(0); layer_surface.set_margin(0, 0, 0, 0); surface.set_input_region(None); surface.commit(); - Window { buffer, surface, layer_surface } + Window { + buffer, + surface, + layer_surface, + } } } @@ -100,14 +118,15 @@ fn main() { let (globals, mut queue) = registry_queue_init::(&conn).unwrap(); let qh = queue.handle(); - let compositor: wl_compositor::WlCompositor = globals.bind(&qh, 4..=5, ()).unwrap(); let shm: wl_shm::WlShm = globals.bind::(&qh, 1..=1, ()).unwrap(); let layer_shell: zwlr_layer_shell_v1::ZwlrLayerShellV1 = globals.bind(&qh, 3..=4, ()).unwrap(); let seat: wl_seat::WlSeat = globals.bind(&qh, 7..=8, ()).unwrap(); - let pointer_constraints: zwp_pointer_constraints_v1::ZwpPointerConstraintsV1 = globals.bind(&qh, 1..=1, ()).unwrap(); - let relative_pointer_manager: zwp_relative_pointer_manager_v1::ZwpRelativePointerManagerV1 = globals.bind(&qh, 1..=1, ()).unwrap(); - let shortcut_inhibit_manager: zwp_keyboard_shortcuts_inhibit_manager_v1::ZwpKeyboardShortcutsInhibitManagerV1 = globals.bind(&qh, 1..=1, ()).unwrap(); + let pointer_constraints: ZwpPointerConstraintsV1 = globals.bind(&qh, 1..=1, ()).unwrap(); + let relative_pointer_manager: ZwpRelativePointerManagerV1 = + globals.bind(&qh, 1..=1, ()).unwrap(); + let shortcut_inhibit_manager: ZwpKeyboardShortcutsInhibitManagerV1 = + globals.bind(&qh, 1..=1, ()).unwrap(); let globals = Globals { compositor, @@ -136,7 +155,6 @@ fn main() { connection, }; - while app.running { queue.blocking_dispatch(&mut app).unwrap(); } @@ -146,7 +164,7 @@ fn draw(f: &mut File, (width, height): (u32, u32)) { let mut buf = BufWriter::new(f); for _ in 0..height { for _ in 0..width { - buf.write_all(&0x88FbF1C7u32.to_ne_bytes()).unwrap(); + buf.write_all(&0x44FbF1C7u32.to_ne_bytes()).unwrap(); } } } @@ -155,33 +173,42 @@ impl App { fn grab(&mut self, pointer: &wl_pointer::WlPointer, serial: u32, qh: &QueueHandle) { pointer.set_cursor(serial, None, 0, 0); let layer_surface = &self.windows.right.as_ref().unwrap().layer_surface; - layer_surface.set_keyboard_interactivity(zwlr_layer_surface_v1::KeyboardInteractivity::Exclusive); + layer_surface + .set_keyboard_interactivity(zwlr_layer_surface_v1::KeyboardInteractivity::Exclusive); let surface = &self.windows.right.as_ref().unwrap().surface; surface.commit(); if self.pointer_lock.is_none() { - self.pointer_lock = - Some(self.globals.pointer_constraints.lock_pointer(&surface, pointer, None, zwp_pointer_constraints_v1::Lifetime::Oneshot, qh, ())); + self.pointer_lock = Some(self.globals.pointer_constraints.lock_pointer( + &surface, + pointer, + None, + Lifetime::Oneshot, + qh, + (), + )); } if self.rel_pointer.is_none() { - self.rel_pointer = Some( - self.globals.relative_pointer_manager.get_relative_pointer(pointer, qh, ()), - ); + self.rel_pointer = Some(self.globals.relative_pointer_manager.get_relative_pointer( + pointer, + qh, + (), + )); } if self.shortcut_inhibitor.is_none() { - self.shortcut_inhibitor = Some( - self.globals.shortcut_inhibit_manager.inhibit_shortcuts( - &surface, - &self.globals.seat, - qh, - (), - ), - ); + self.shortcut_inhibitor = + Some(self.globals.shortcut_inhibit_manager.inhibit_shortcuts( + &surface, + &self.globals.seat, + qh, + (), + )); } } fn ungrab(&mut self) { let layer_surface = &self.windows.right.as_ref().unwrap().layer_surface; - layer_surface.set_keyboard_interactivity(zwlr_layer_surface_v1::KeyboardInteractivity::None); + layer_surface + .set_keyboard_interactivity(zwlr_layer_surface_v1::KeyboardInteractivity::None); let surface = &self.windows.right.as_ref().unwrap().surface; surface.commit(); if let Some(pointer_lock) = &self.pointer_lock { @@ -207,7 +234,8 @@ impl Dispatch for App { _: &(), _: &Connection, _: &QueueHandle, - ) { } + ) { + } } impl Dispatch for App { @@ -218,7 +246,8 @@ impl Dispatch for App { _: &(), _: &Connection, _: &QueueHandle, - ) { } + ) { + } } impl Dispatch for App { @@ -229,7 +258,8 @@ impl Dispatch for App { _: &(), _: &Connection, _: &QueueHandle, - ) { } + ) { + } } impl Dispatch for App { @@ -253,7 +283,8 @@ impl Dispatch for App { _: &(), _: &Connection, _: &QueueHandle, - ) { } + ) { + } } impl Dispatch for App { @@ -359,11 +390,11 @@ impl Dispatch for App { } } -impl Dispatch for App { +impl Dispatch for App { fn event( _: &mut Self, - _: &zwp_pointer_constraints_v1::ZwpPointerConstraintsV1, - _: ::Event, + _: &ZwpPointerConstraintsV1, + _: ::Event, _: &(), _: &Connection, _: &QueueHandle, @@ -371,11 +402,11 @@ impl Dispatch for App { } } -impl Dispatch for App { +impl Dispatch for App { fn event( _: &mut Self, - _: &zwp_locked_pointer_v1::ZwpLockedPointerV1, - _: ::Event, + _: &ZwpLockedPointerV1, + _: ::Event, _: &(), _: &Connection, _: &QueueHandle, @@ -383,11 +414,11 @@ impl Dispatch for App { } } -impl Dispatch for App { +impl Dispatch for App { fn event( _: &mut Self, - _: &zwp_relative_pointer_manager_v1::ZwpRelativePointerManagerV1, - _: ::Event, + _: &ZwpRelativePointerManagerV1, + _: ::Event, _: &(), _: &Connection, _: &QueueHandle, @@ -395,11 +426,11 @@ impl Dispatch } } -impl Dispatch for App { +impl Dispatch for App { fn event( app: &mut Self, - _: &zwp_relative_pointer_v1::ZwpRelativePointerV1, - event: ::Event, + _: &ZwpRelativePointerV1, + event: ::Event, _: &(), _: &Connection, _: &QueueHandle, @@ -466,13 +497,11 @@ impl Dispatch for App { } } -impl Dispatch - for App -{ +impl Dispatch for App { fn event( _: &mut Self, - _: &zwp_keyboard_shortcuts_inhibit_manager_v1::ZwpKeyboardShortcutsInhibitManagerV1, - _: ::Event, + _: &ZwpKeyboardShortcutsInhibitManagerV1, + _: ::Event, _: &(), _: &Connection, _: &QueueHandle, @@ -480,11 +509,11 @@ impl Dispatch for App { +impl Dispatch for App { fn event( _: &mut Self, - _: &zwp_keyboard_shortcuts_inhibitor_v1::ZwpKeyboardShortcutsInhibitorV1, - _: ::Event, + _: &ZwpKeyboardShortcutsInhibitorV1, + _: ::Event, _: &(), _: &Connection, _: &QueueHandle, @@ -500,6 +529,6 @@ impl Dispatch for App { _: &GlobalListContents, _: &Connection, _: &QueueHandle, - ) { } - + ) { + } }