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

commit6bee9b324de616aa2a0dc60fe5348e859a3dd79d
parent573891f5b7
authorIsaac Freund <[email protected]>
date2023-03-03 15:18
Xwayland: hide override redirect windows if locked

 river/LockManager.zig | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/river/LockManager.zig b/river/LockManager.zig
index e5467ac..26d6cf0 100644
--- a/river/LockManager.zig
+++ b/river/LockManager.zig
@@ -18,6 +18,9 @@ const LockManager = @This();
 
 const std = @import("std");
 const assert = std.debug.assert;
+
+const build_options = @import("build_options");
+
 const wlr = @import("wlroots");
 const wl = @import("wayland").server.wl;
 
@@ -92,6 +95,10 @@ fn handleLock(listener: *wl.Listener(*wlr.SessionLockV1), lock: *wlr.SessionLock
     if (manager.state == .unlocked) {
         manager.state = .waiting_for_lock_surfaces;
 
+        if (build_options.xwayland) {
+            server.root.layers.xwayland_override_redirect.node.setEnabled(false);
+        }
+
         manager.lock_surfaces_timer.timerUpdate(200) catch {
             log.err("error setting lock surfaces timer, imperfect frames may be shown", .{});
             manager.state = .waiting_for_blank;
@@ -218,6 +225,10 @@ fn handleUnlock(listener: *wl.Listener(void)) void {
         }
     }
 
+    if (build_options.xwayland) {
+        server.root.layers.xwayland_override_redirect.node.setEnabled(true);
+    }
+
     {
         var it = server.input_manager.seats.first;
         while (it) |node| : (it = node.next) {