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