From 37d3bf2655f1f4b9e3273919a88d1b4643b31a29 Mon Sep 17 00:00:00 2001
From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Date: Tue, 30 Aug 2022 22:59:21 +0200
Subject: [PATCH] Watch: Disable on_Workspace_focus switch (for screenshot
 loading)

---
 woman/watch.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/woman/watch.py b/woman/watch.py
index 53ecd4c..c859124 100644
--- a/woman/watch.py
+++ b/woman/watch.py
@@ -9,6 +9,8 @@ import Xlib
 import Xlib.display
 import Xlib.X
 
+from contextlib import contextmanager
+
 import argparse
 
 import i3ipc
@@ -54,11 +56,29 @@ def event_workspace_deleted(w):
         if shared.output_of_workspace[master] == {}:
             shared.output_of_workspace.pop(master)
 
+disable_on_workspace_focus = 0
+# Non-zero is true
+# Base usage: Advance number on activate, decrease on deactivate
+@contextmanager
+def disable_on_workspace_focus_context():
+    global disable_on_workspace_focus
+    try:
+        disable_on_workspace_focus += 1
+        yield None
+    finally:
+        disable_on_workspace_focus -= 1
 
 def i3_watch():
     shared.init_thread()
 
     def on_workspace_focus(i3p, e):
+        if disable_on_workspace_focus > 0:
+            with shared.lock:
+                shared.output = e.current.ipc_data['output']
+                master, slave = parse_workspace(e.current.name)
+                event_workspace_is_on((master, slave), shared.output)
+                shared.workspace_on[shared.output] = (master, slave)
+            return
         with shared.lock:
             output = e.current.ipc_data['output']
             if output != shared.output:
-- 
GitLab