oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git

Save/restore gaps when toggling fullscreen and update fullscreen window set

Commit
86b598feee8feb40a6e1eaa3d00b2b4827ce7510
Parent
e0b781f
Author
emzywastaken <amiamemetoo@gmail.com>
Date
2025-12-12 21:54:52
Fixes #62

Diff

diff --git a/src/window_manager.rs b/src/window_manager.rs
index feae8a4..1b01d56 100644
--- a/src/window_manager.rs
+++ b/src/window_manager.rs
@@ -740,6 +740,13 @@ impl WindowManager {
                 }
             }
             KeyAction::ToggleFullScreen => {
+                // Disable gaps and save previous state in config if not already in fullscreen
+                if self.fullscreen_windows.is_empty() {
+                    self.config.gaps_enabled = std::mem::take(&mut self.gaps_enabled);
+                } else {
+                    self.gaps_enabled = self.config.gaps_enabled;
+                }
+
                 self.fullscreen()?;
                 self.restack()?;
             }
@@ -1413,6 +1420,14 @@ impl WindowManager {
                 .copied()
                 .collect();
 
+            let focused = self
+                .monitors
+                .get(self.selected_monitor)
+                .and_then(|m| m.selected_client)
+                .unwrap();
+
+            self.fullscreen_windows.insert(focused);
+
             for window in &windows {
                 if let Ok(geom) = self.connection.get_geometry(*window)?.reply() {
                     self.floating_geometry_before_fullscreen.insert(
@@ -1481,6 +1496,14 @@ impl WindowManager {
             }
             self.connection.flush()?;
         } else {
+            let focused = self
+                .monitors
+                .get(self.selected_monitor)
+                .and_then(|m| m.selected_client)
+                .unwrap();
+
+            self.fullscreen_windows.remove(&focused);
+
             if let Some(last) = self.last_layout {
                 if let Ok(layout) = layout_from_str(last) {
                     self.layout = layout;