git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commitdfb4a1467c3ad6b5ca5cc09b62b8c6b03abe21ec
parent662beda61b
authorLucas Galante <[email protected]>
date2026-06-19 15:40
Clean up compiler warnings

 src/cce_ctl.rs                           |  2 +-
 src/server/cursor.rs                     |  8 ++---
 src/server/input_popup.rs                |  2 +-
 src/server/input_relay.rs                |  2 +-
 src/server/ipc_server.rs                 |  2 +-
 src/server/keyboard_group.rs             |  2 +-
 src/server/lock_manager.rs               |  2 +-
 src/server/output.rs                     |  3 +-
 src/server/output_manager.rs             |  4 +--
 src/server/scene.rs                      |  2 +-
 src/server/seat.rs                       |  2 +-
 src/server/shell_surface.rs              |  6 ++--
 src/server/status_server.rs              |  2 +-
 src/server/text_input.rs                 |  2 +-
 src/server/window.rs                     | 55 ++++++++++++++++----------------
 src/server/window_manager.rs             | 20 ++++++------
 src/server/wlroots_log_wrapper.c         |  4 +++
 src/server/wm_node.rs                    |  2 +-
 src/server/xdg_popup.rs                  |  2 +-
 src/server/xkb_config.rs                 |  2 +-
 src/server/xwayland_override_redirect.rs |  4 +--
 src/server/xwayland_window.rs            |  5 +--
 22 files changed, 70 insertions(+), 65 deletions(-)

diff --git a/src/cce_ctl.rs b/src/cce_ctl.rs
index e4dea4c..70dab6f 100644
--- a/src/cce_ctl.rs
+++ b/src/cce_ctl.rs
@@ -1,7 +1,6 @@
 // cce-ctl — IPC client for cce
  
 use std::env;
-use std::fs;
 use std::io::{Read, Write};
 use std::os::unix::net::UnixStream;
 use std::process;
@@ -13,6 +12,7 @@ fn get_socket_path() -> String {
     }
 }
  
+#[allow(dead_code)]
 fn get_windows_path() -> String {
     match env::var("WAYLAND_DISPLAY") {
         Ok(display) => format!("/tmp/cce-windows-{}", display),
diff --git a/src/server/cursor.rs b/src/server/cursor.rs
index fdbe3a1..675ba0c 100644
--- a/src/server/cursor.rs
+++ b/src/server/cursor.rs
@@ -882,7 +882,7 @@ unsafe extern "C" fn handle_frame(listener: *mut ffi::wl_listener, _data: *mut s
 }
 
 unsafe extern "C" fn handle_tablet_tool_axis(listener: *mut ffi::wl_listener, data: *mut std::ffi::c_void) {
-    let cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_axis_listener);
+    let _cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_axis_listener);
     let event = data as *mut ffi::wlr_tablet_tool_axis_event;
 
     let wlr_tablet = (*event).tablet;
@@ -905,7 +905,7 @@ unsafe extern "C" fn handle_tablet_tool_axis(listener: *mut ffi::wl_listener, da
 }
 
 unsafe extern "C" fn handle_tablet_tool_proximity(listener: *mut ffi::wl_listener, data: *mut std::ffi::c_void) {
-    let cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_proximity_listener);
+    let _cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_proximity_listener);
     let event = data as *mut ffi::wlr_tablet_tool_proximity_event;
 
     let wlr_tablet = (*event).tablet;
@@ -928,7 +928,7 @@ unsafe extern "C" fn handle_tablet_tool_proximity(listener: *mut ffi::wl_listene
 }
 
 unsafe extern "C" fn handle_tablet_tool_tip(listener: *mut ffi::wl_listener, data: *mut std::ffi::c_void) {
-    let cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_tip_listener);
+    let _cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_tip_listener);
     let event = data as *mut ffi::wlr_tablet_tool_tip_event;
 
     let wlr_tablet = (*event).tablet;
@@ -951,7 +951,7 @@ unsafe extern "C" fn handle_tablet_tool_tip(listener: *mut ffi::wl_listener, dat
 }
 
 unsafe extern "C" fn handle_tablet_tool_button(listener: *mut ffi::wl_listener, data: *mut std::ffi::c_void) {
-    let cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_button_listener);
+    let _cursor = &mut *crate::container_of!(listener, Cursor, tablet_tool_button_listener);
     let event = data as *mut ffi::wlr_tablet_tool_button_event;
 
     let wlr_tablet = (*event).tablet;
diff --git a/src/server/input_popup.rs b/src/server/input_popup.rs
index c07e908..d3529b2 100644
--- a/src/server/input_popup.rs
+++ b/src/server/input_popup.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{WlListener, wl_listener_remove, wl_signal_add, WlList};
+use crate::server::{WlListener, wl_signal_add, WlList};
 use crate::input_relay::InputRelay;
 use crate::scene_node_data::{SceneNodeData, SceneNodeDataVal};
 
diff --git a/src/server/input_relay.rs b/src/server/input_relay.rs
index 7ada558..11cc0e7 100644
--- a/src/server/input_relay.rs
+++ b/src/server/input_relay.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{WlListener, wl_listener_remove, wl_signal_add};
+use crate::server::{WlListener, wl_signal_add};
 use crate::text_input::TextInput;
 use crate::seat::Seat;
 
diff --git a/src/server/ipc_server.rs b/src/server/ipc_server.rs
index db38c71..3c90805 100644
--- a/src/server/ipc_server.rs
+++ b/src/server/ipc_server.rs
@@ -46,7 +46,7 @@ fn ipc_server_main(tx: mpsc::Sender<IpcRequest>, display_socket: Option<String>)
 
     for stream in listener.incoming() {
         match stream {
-            Ok(mut s) => {
+            Ok(s) => {
                 let tx_clone = tx.clone();
                 thread::spawn(move || {
                     handle_client(s, tx_clone);
diff --git a/src/server/keyboard_group.rs b/src/server/keyboard_group.rs
index ae25d71..689dfa3 100644
--- a/src/server/keyboard_group.rs
+++ b/src/server/keyboard_group.rs
@@ -3,7 +3,7 @@
 
 use crate::ffi;
 use crate::seat::Seat;
-use crate::keyboard::{Keyboard, KeyboardConfig};
+use crate::keyboard::KeyboardConfig;
 use crate::xkb_bindings::XkbBinding;
 use crate::server::wl_listener_remove;
 use std::collections::HashMap;
diff --git a/src/server/lock_manager.rs b/src/server/lock_manager.rs
index daf9f9b..642876a 100644
--- a/src/server/lock_manager.rs
+++ b/src/server/lock_manager.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlListener, wl_signal_add, wl_listener_remove, WlList, wl_list_insert, wl_list_remove};
+use crate::server::{Server, WlListener, wl_signal_add, wl_listener_remove, WlList};
 use crate::scene_node_data::{SceneNodeData, SceneNodeDataVal};
 use crate::seat::Focus;
 
diff --git a/src/server/output.rs b/src/server/output.rs
index 14e683f..d59b8d7 100644
--- a/src/server/output.rs
+++ b/src/server/output.rs
@@ -4,9 +4,8 @@
 use crate::ffi;
 use crate::server::{Server, WlListener, WlList, wl_signal_add, wl_listener_remove, wl_list_insert, wl_list_remove};
 use crate::layer_shell::LayerShellOutput;
-use crate::lock_manager::{LockSurface, LockState};
+use crate::lock_manager::LockState;
 use crate::util;
-use crate::window::Window;
 
 #[derive(Debug, Clone, Copy, PartialEq)]
 pub enum OutputStateValue {
diff --git a/src/server/output_manager.rs b/src/server/output_manager.rs
index 0e8f9a0..8692b95 100644
--- a/src/server/output_manager.rs
+++ b/src/server/output_manager.rs
@@ -451,7 +451,7 @@ impl OutputManager {
         wm.dirty_windowing();
     }
 
-    pub unsafe fn send_config(&mut self, server: *mut Server) -> Result<(), &'static str> {
+    pub unsafe fn send_config(&mut self, _server: *mut Server) -> Result<(), &'static str> {
         let config = ffi::wlr_output_configuration_v1_create();
         if config.is_null() {
             return Err("Failed to create configuration v1");
@@ -531,7 +531,7 @@ fn validate_config_coordinates(server: *mut Server, config: *mut ffi::wlr_output
         let mut head_link = (*config).heads.next;
         while head_link != &mut (*config).heads {
             let head = crate::container_of!(head_link, ffi::wlr_output_configuration_head_v1, link);
-            let output_global = ffi::river_wlr_output_get_global((*head).state.output);
+            let _output_global = ffi::river_wlr_output_get_global((*head).state.output);
             
             if (*head).state.enabled {
                 let proposed = crate::output::OutputState::from_head_state(&((*head).state));
diff --git a/src/server/scene.rs b/src/server/scene.rs
index f9d225f..c9c9b8f 100644
--- a/src/server/scene.rs
+++ b/src/server/scene.rs
@@ -50,7 +50,7 @@ impl Scene {
     pub unsafe fn init(
         &mut self,
         linux_dmabuf: *mut ffi::wlr_linux_dmabuf_v1,
-        color_manager: *mut ffi::wlr_color_manager_v1,
+        _color_manager: *mut ffi::wlr_color_manager_v1,
     ) -> Result<(), &'static str> {
         let wlr_scene = ffi::wlr_scene_create();
         if wlr_scene.is_null() {
diff --git a/src/server/seat.rs b/src/server/seat.rs
index 4848264..a0b37b2 100644
--- a/src/server/seat.rs
+++ b/src/server/seat.rs
@@ -1024,7 +1024,7 @@ unsafe extern "C" fn handle_request_set_primary_selection(
     ffi::wlr_seat_set_primary_selection(seat.wlr_seat, (*event).source, (*event).serial);
 }
 
-unsafe extern "C" fn seat_destroy(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn seat_destroy(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     ffi::wl_resource_destroy(resource);
 }
 
diff --git a/src/server/shell_surface.rs b/src/server/shell_surface.rs
index 2f2f5e4..9ed5b2c 100644
--- a/src/server/shell_surface.rs
+++ b/src/server/shell_surface.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlList, wl_list_insert, wl_list_remove};
+use crate::server::{Server, WlList, wl_list_insert};
 use crate::wm_node::WmNode;
 
 pub struct ShellSurfaceRenderingRequested {
@@ -40,7 +40,7 @@ impl ShellSurface {
 
         if !ffi::wlr_surface_set_role(
             surface,
-            &SHELL_SURFACE_ROLE,
+            &raw const SHELL_SURFACE_ROLE,
             shell_surface_v1,
             ffi::zcce_window_manager_v1_error_ZCCE_WINDOW_MANAGER_V1_ERROR_ROLE,
         ) {
@@ -155,7 +155,7 @@ pub unsafe fn from_wlr_surface(surface: *mut ffi::wlr_surface) -> *mut ShellSurf
         return std::ptr::null_mut();
     }
     let role_ptr = ffi::river_wlr_surface_get_role(surface);
-    if role_ptr != &SHELL_SURFACE_ROLE as *const _ {
+    if role_ptr != &raw const SHELL_SURFACE_ROLE {
         return std::ptr::null_mut();
     }
     let resource = ffi::river_wlr_surface_get_role_resource(surface);
diff --git a/src/server/status_server.rs b/src/server/status_server.rs
index d27df91..20ba548 100644
--- a/src/server/status_server.rs
+++ b/src/server/status_server.rs
@@ -114,7 +114,7 @@ fn status_server_main(rx: mpsc::Receiver<StatusUpdate>, display_socket: Option<S
         // Accept new connections (non-blocking)
         for _ in 0..5 {
             match listener.accept() {
-                Ok((mut stream, _addr)) => {
+                Ok((stream, _addr)) => {
                     if let Err(e) = stream.set_nonblocking(true) {
                         log::error!("[status] failed to set non-blocking on client: {}", e);
                         continue;
diff --git a/src/server/text_input.rs b/src/server/text_input.rs
index 23cab0e..d44ccd9 100644
--- a/src/server/text_input.rs
+++ b/src/server/text_input.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{WlListener, wl_listener_remove, wl_signal_add, WlList};
+use crate::server::{WlListener, wl_signal_add, WlList};
 use crate::seat::Seat;
 
 #[repr(C)]
diff --git a/src/server/window.rs b/src/server/window.rs
index 8a82780..d29b545 100644
--- a/src/server/window.rs
+++ b/src/server/window.rs
@@ -1145,7 +1145,7 @@ impl Window {
             ffi::wlr_foreign_toplevel_handle_v1_set_activated(self.wlr_toplevel_handle, activated);
         }
 
-        let (mut width, mut height) = if !self.wm_requested.fullscreen.is_null() {
+        let (width, height) = if !self.wm_requested.fullscreen.is_null() {
             let output = self.wm_requested.fullscreen;
             let (w, h) = (*output).sent.dimensions();
             if self.configure_sent.width != Some(w as u32) || self.configure_sent.height != Some(h as u32) {
@@ -1637,6 +1637,7 @@ impl Window {
         }
     }
 
+    #[allow(unused_assignments)]
     pub unsafe fn apply_surface_clip(&mut self, a: *const ffi::wlr_box, b: *const ffi::wlr_box) {
         let mut surface_clip = std::mem::zeroed::<ffi::wlr_box>();
         let a_empty = (*a).width == 0 && (*a).height == 0;
@@ -1723,11 +1724,11 @@ unsafe fn clock_gettime(clk_id: libc::clockid_t, tp: &mut libc::timespec) -> lib
     libc::clock_gettime(clk_id, tp)
 }
 
-unsafe extern "C" fn window_destroy(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn window_destroy(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     ffi::wl_resource_destroy(resource);
 }
 
-unsafe extern "C" fn window_close(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn window_close(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
     if window.is_null() {
         return;
@@ -1760,7 +1761,7 @@ unsafe extern "C" fn window_get_node(
 }
 
 unsafe extern "C" fn window_propose_dimensions(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     width: i32,
     height: i32,
@@ -1789,7 +1790,7 @@ unsafe extern "C" fn window_propose_dimensions(
     }
 }
 
-unsafe extern "C" fn window_hide(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn window_hide(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
     if window.is_null() {
         return;
@@ -1801,7 +1802,7 @@ unsafe extern "C" fn window_hide(client: *mut ffi::wl_client, resource: *mut ffi
     (*window).rendering_requested.hidden = true;
 }
 
-unsafe extern "C" fn window_show(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn window_show(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
     if window.is_null() {
         return;
@@ -1813,7 +1814,7 @@ unsafe extern "C" fn window_show(client: *mut ffi::wl_client, resource: *mut ffi
     (*window).rendering_requested.hidden = false;
 }
 
-unsafe extern "C" fn window_use_csd(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn window_use_csd(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
     if window.is_null() {
         return;
@@ -1826,7 +1827,7 @@ unsafe extern "C" fn window_use_csd(client: *mut ffi::wl_client, resource: *mut
     (*server).wm.dirty_windowing();
 }
 
-unsafe extern "C" fn window_use_ssd(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn window_use_ssd(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
     if window.is_null() {
         return;
@@ -1840,7 +1841,7 @@ unsafe extern "C" fn window_use_ssd(client: *mut ffi::wl_client, resource: *mut
 }
 
 unsafe extern "C" fn window_set_borders(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     edges: u32,
     width: i32,
@@ -1876,7 +1877,7 @@ unsafe extern "C" fn window_set_borders(
 }
 
 unsafe extern "C" fn window_set_tiled(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     edges: u32,
 ) {
@@ -1952,7 +1953,7 @@ unsafe extern "C" fn window_get_decoration_below(
 }
 
 unsafe extern "C" fn window_inform_resize_start(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -1967,7 +1968,7 @@ unsafe extern "C" fn window_inform_resize_start(
 }
 
 unsafe extern "C" fn window_inform_resize_end(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -1982,7 +1983,7 @@ unsafe extern "C" fn window_inform_resize_end(
 }
 
 unsafe extern "C" fn window_set_capabilities(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     caps: u32,
 ) {
@@ -1998,7 +1999,7 @@ unsafe extern "C" fn window_set_capabilities(
 }
 
 unsafe extern "C" fn window_inform_maximized(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -2013,7 +2014,7 @@ unsafe extern "C" fn window_inform_maximized(
 }
 
 unsafe extern "C" fn window_inform_unmaximized(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -2028,7 +2029,7 @@ unsafe extern "C" fn window_inform_unmaximized(
 }
 
 unsafe extern "C" fn window_inform_fullscreen(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -2043,7 +2044,7 @@ unsafe extern "C" fn window_inform_fullscreen(
 }
 
 unsafe extern "C" fn window_inform_not_fullscreen(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -2058,7 +2059,7 @@ unsafe extern "C" fn window_inform_not_fullscreen(
 }
 
 unsafe extern "C" fn window_fullscreen(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     output: *mut ffi::wl_resource,
 ) {
@@ -2084,7 +2085,7 @@ unsafe extern "C" fn window_fullscreen(
 }
 
 unsafe extern "C" fn window_exit_fullscreen(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
 ) {
     let window = ffi::wl_resource_get_user_data(resource) as *mut Window;
@@ -2099,7 +2100,7 @@ unsafe extern "C" fn window_exit_fullscreen(
 }
 
 unsafe extern "C" fn window_set_clip_box(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     x: i32,
     y: i32,
@@ -2131,7 +2132,7 @@ unsafe extern "C" fn window_set_clip_box(
 }
 
 unsafe extern "C" fn window_set_content_clip_box(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     x: i32,
     y: i32,
@@ -2163,7 +2164,7 @@ unsafe extern "C" fn window_set_content_clip_box(
 }
 
 unsafe extern "C" fn window_set_dimension_bounds(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     max_width: i32,
     max_height: i32,
@@ -2191,7 +2192,7 @@ unsafe extern "C" fn window_set_dimension_bounds(
 }
 
 unsafe extern "C" fn window_set_opacity(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     opacity: u32,
 ) {
@@ -2208,7 +2209,7 @@ unsafe extern "C" fn window_set_opacity(
 }
 
 unsafe extern "C" fn window_set_circular(
-    client: *mut ffi::wl_client,
+    _client: *mut ffi::wl_client,
     resource: *mut ffi::wl_resource,
     circular: u32,
 ) {
@@ -2357,7 +2358,7 @@ impl Decoration {
 
         if !ffi::wlr_surface_set_role(
             surface,
-            &DECORATION_ROLE,
+            &raw const DECORATION_ROLE,
             decoration_v1,
             ffi::zcce_window_manager_v1_error_ZCCE_WINDOW_MANAGER_V1_ERROR_ROLE,
         ) {
@@ -2426,7 +2427,7 @@ impl Decoration {
         self.surfaces.save();
     }
 
-    pub unsafe fn render_finish(&mut self, window_clip: *const ffi::wlr_box) {
+    pub unsafe fn render_finish(&mut self, _window_clip: *const ffi::wlr_box) {
         if self.rendering_requested.sync_next_commit {
             self.rendering_requested.sync_next_commit = false;
 
@@ -2506,7 +2507,7 @@ pub unsafe fn decoration_from_wlr_surface(surface: *mut ffi::wlr_surface) -> *mu
         return std::ptr::null_mut();
     }
     let role_ptr = ffi::river_wlr_surface_get_role(surface);
-    if role_ptr != &DECORATION_ROLE as *const _ {
+    if role_ptr != &raw const DECORATION_ROLE {
         return std::ptr::null_mut();
     }
     let resource = ffi::river_wlr_surface_get_role_resource(surface);
diff --git a/src/server/window_manager.rs b/src/server/window_manager.rs
index ae501cd..128b02f 100644
--- a/src/server/window_manager.rs
+++ b/src/server/window_manager.rs
@@ -2,8 +2,8 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlListener, WlList, wl_list_insert, wl_list_remove, wl_listener_remove};
-use crate::slotmap::{SlotMap, Key};
+use crate::server::{Server, WlListener, WlList, wl_listener_remove};
+use crate::slotmap::SlotMap;
 use std::hash::{Hash, Hasher};
 
 pub use crate::window::Window;
@@ -1226,7 +1226,7 @@ impl WindowManager {
 
     pub unsafe fn first_seat(&self) -> Option<*mut crate::seat::Seat> {
         let seats_list = &mut (*self.server).input_manager.seats as *mut ffi::wl_list as *mut WlList;
-        let mut curr_seat = (*seats_list).next;
+        let curr_seat = (*seats_list).next;
         if curr_seat != seats_list {
             Some(crate::container_of!(curr_seat, crate::seat::Seat, link))
         } else {
@@ -2041,7 +2041,7 @@ unsafe extern "C" fn handle_server_destroy(
 }
 
 // WM request handlers
-unsafe extern "C" fn wm_stop(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn wm_stop(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let wm = ffi::wl_resource_get_user_data(resource) as *mut WindowManager;
     if !wm.is_null() {
         (*wm).object = std::ptr::null_mut();
@@ -2055,11 +2055,11 @@ unsafe extern "C" fn wm_stop(client: *mut ffi::wl_client, resource: *mut ffi::wl
     }
 }
 
-unsafe extern "C" fn wm_destroy(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn wm_destroy(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     ffi::wl_resource_destroy(resource);
 }
 
-unsafe extern "C" fn wm_manage_finish(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn wm_manage_finish(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let wm = ffi::wl_resource_get_user_data(resource) as *mut WindowManager;
     if wm.is_null() {
         return;
@@ -2075,7 +2075,7 @@ unsafe extern "C" fn wm_manage_finish(client: *mut ffi::wl_client, resource: *mu
     (*wm).manage_finish();
 }
 
-unsafe extern "C" fn wm_manage_dirty(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn wm_manage_dirty(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let wm = ffi::wl_resource_get_user_data(resource) as *mut WindowManager;
     if wm.is_null() {
         return;
@@ -2084,7 +2084,7 @@ unsafe extern "C" fn wm_manage_dirty(client: *mut ffi::wl_client, resource: *mut
     (*wm).add_dirty_idle();
 }
 
-unsafe extern "C" fn wm_render_finish(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn wm_render_finish(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let wm = ffi::wl_resource_get_user_data(resource) as *mut WindowManager;
     if wm.is_null() {
         return;
@@ -2118,7 +2118,7 @@ unsafe extern "C" fn wm_get_shell_surface(
     }
 }
 
-unsafe extern "C" fn wm_exit_session(client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
+unsafe extern "C" fn wm_exit_session(_client: *mut ffi::wl_client, resource: *mut ffi::wl_resource) {
     let wm = ffi::wl_resource_get_user_data(resource) as *mut WindowManager;
     if wm.is_null() {
         return;
@@ -2182,7 +2182,7 @@ unsafe extern "C" fn bind(
         resource,
         &WM_INTERFACE as *const _ as *const _,
         wm as *mut _,
-        None,
+        Some(handle_destroy_wm_resource),
     );
 }
 
diff --git a/src/server/wlroots_log_wrapper.c b/src/server/wlroots_log_wrapper.c
index 4933120..45c5114 100644
--- a/src/server/wlroots_log_wrapper.c
+++ b/src/server/wlroots_log_wrapper.c
@@ -647,6 +647,8 @@ void river_wlr_keyboard_init(struct wlr_keyboard *keyboard,
 }
 
 static void enable_blur_iterator(struct wlr_scene_buffer *buffer, int sx, int sy, void *user_data) {
+	(void)sx;
+	(void)sy;
 	struct wlr_scene_surface *scene_surface = wlr_scene_surface_try_from_buffer(buffer);
 	if (!scene_surface) {
 		return;
@@ -662,6 +664,8 @@ void river_scene_node_enable_blur(struct wlr_scene_node *node, bool enabled) {
 }
 
 static void set_opacity_iterator(struct wlr_scene_buffer *buffer, int sx, int sy, void *user_data) {
+	(void)sx;
+	(void)sy;
 	float opacity = *(float *)user_data;
 	wlr_scene_buffer_set_opacity(buffer, opacity);
 }
diff --git a/src/server/wm_node.rs b/src/server/wm_node.rs
index 3c9454e..b90157c 100644
--- a/src/server/wm_node.rs
+++ b/src/server/wm_node.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlList, wl_list_insert, wl_list_remove};
+use crate::server::{WlList, wl_list_insert, wl_list_remove};
 use crate::window::Window;
 use crate::shell_surface::ShellSurface;
 
diff --git a/src/server/xdg_popup.rs b/src/server/xdg_popup.rs
index 23cd816..abcb896 100644
--- a/src/server/xdg_popup.rs
+++ b/src/server/xdg_popup.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlListener, wl_listener_remove, wl_signal_add};
+use crate::server::{WlListener, wl_listener_remove, wl_signal_add};
 
 pub struct XdgPopup {
     pub wlr_popup: *mut ffi::wlr_xdg_popup,
diff --git a/src/server/xkb_config.rs b/src/server/xkb_config.rs
index f814215..6397bf2 100644
--- a/src/server/xkb_config.rs
+++ b/src/server/xkb_config.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlListener, wl_signal_add, wl_listener_remove, WlList, wl_list_insert, wl_list_remove};
+use crate::server::{Server, WlList, wl_list_insert, wl_list_remove};
 
 pub struct XkbConfig {
     pub server: *mut Server,
diff --git a/src/server/xwayland_override_redirect.rs b/src/server/xwayland_override_redirect.rs
index 26ca0c5..1f611a4 100644
--- a/src/server/xwayland_override_redirect.rs
+++ b/src/server/xwayland_override_redirect.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlListener, wl_signal_add, wl_listener_remove};
+use crate::server::{Server, WlListener, wl_signal_add};
 use crate::xwayland_window::XwaylandWindow;
 
 #[repr(C)]
@@ -116,7 +116,7 @@ impl XwaylandOverrideRedirect {
     }
 }
 
-unsafe extern "C" fn handle_request_configure(listener: *mut ffi::wl_listener, data: *mut std::ffi::c_void) {
+unsafe extern "C" fn handle_request_configure(_listener: *mut ffi::wl_listener, data: *mut std::ffi::c_void) {
     let event = data as *mut ffi::wlr_xwayland_surface_configure_event;
     ffi::wlr_xwayland_surface_configure((*event).surface, (*event).x, (*event).y, (*event).width, (*event).height);
 }
diff --git a/src/server/xwayland_window.rs b/src/server/xwayland_window.rs
index 4c2e952..b95bc09 100644
--- a/src/server/xwayland_window.rs
+++ b/src/server/xwayland_window.rs
@@ -2,7 +2,7 @@
 // SPDX-License-Identifier: GPL-3.0-only
 
 use crate::ffi;
-use crate::server::{Server, WlListener, wl_signal_add, wl_listener_remove};
+use crate::server::{Server, WlListener, wl_signal_add};
 use crate::window::{Window, WindowImpl, WindowState};
 use crate::xwayland_override_redirect::XwaylandOverrideRedirect;
 
@@ -132,7 +132,7 @@ impl XwaylandWindow {
             }
         }
         // Fallback: first output in layout
-        let mut link = (*server).om.outputs.next;
+        let link = (*server).om.outputs.next;
         if link != &mut (*server).om.outputs as *mut ffi::wl_list {
             let output = crate::container_of!(link, crate::output::Output, link);
             return (*output).current.scale;
@@ -493,6 +493,7 @@ unsafe extern "C" fn handle_set_override_redirect(listener: *mut ffi::wl_listene
     }
 }
 
+#[allow(dead_code)]
 unsafe extern "C" fn handle_set_size_hints(listener: *mut ffi::wl_listener, _data: *mut std::ffi::c_void) {
     let xwindow = crate::container_of!(listener, XwaylandWindow, set_size_hints);
     let size_hints = (*(*xwindow).xsurface).size_hints;