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

commit58fdd95d2761e17b5ae114fa700e2d8fed772508
parent5a9c768d4f
authorLucas Galante <[email protected]>
date2026-07-04 16:46
Fix toggle_overview gesture bindings being cleared in parse_config

 src/server/config.rs | 49 ++++++++++++++++++++++++++-----------------------
 1 file changed, 26 insertions(+), 23 deletions(-)

diff --git a/src/server/config.rs b/src/server/config.rs
index f849072..95aa46d 100644
--- a/src/server/config.rs
+++ b/src/server/config.rs
@@ -1680,29 +1680,6 @@ pub fn parse_config(path: &str, state: &mut crate::window_manager::WindowManager
                 command: None,
             });
         }
-        if let Some(ref toggle_ov_str) = wm_config.toggle_overview {
-            let normalized = toggle_ov_str.to_lowercase().replace('-', "_");
-            let gesture_type = if normalized.starts_with("swipe") {
-                Some("swipe")
-            } else if normalized.starts_with("pinch") {
-                Some("pinch")
-            } else {
-                None
-            };
-            if let Some(g_type) = gesture_type {
-                let direction = normalized.trim_start_matches(g_type).trim_start_matches('_').to_string();
-                for fingers in [3, 4] {
-                    state.gesture_binds.push(GestureBind {
-                        mods: 0,
-                        gesture_type: g_type.to_string(),
-                        fingers,
-                        direction: direction.clone(),
-                        action: Action::Expose,
-                        command: None,
-                    });
-                }
-            }
-        }
     }
 
     let super_mod = parse_modifiers("super");
@@ -1831,6 +1808,32 @@ pub fn parse_config(path: &str, state: &mut crate::window_manager::WindowManager
         });
     }
 
+    if let Some(ref wm_config) = config.window_manager {
+        if let Some(ref toggle_ov_str) = wm_config.toggle_overview {
+            let normalized = toggle_ov_str.to_lowercase().replace('-', "_");
+            let gesture_type = if normalized.starts_with("swipe") {
+                Some("swipe")
+            } else if normalized.starts_with("pinch") {
+                Some("pinch")
+            } else {
+                None
+            };
+            if let Some(g_type) = gesture_type {
+                let direction = normalized.trim_start_matches(g_type).trim_start_matches('_').to_string();
+                for fingers in [3, 4] {
+                    state.gesture_binds.push(GestureBind {
+                        mods: 0,
+                        gesture_type: g_type.to_string(),
+                        fingers,
+                        direction: direction.clone(),
+                        action: Action::Expose,
+                        command: None,
+                    });
+                }
+            }
+        }
+    }
+
     state.mode_rules.clear();
     for rule in config.mode_rule {
         state.mode_rules.push(ModeRule {