From 4f28e682e1f8fa0a43e2f0a011b1dbb261000746 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sun, 11 Jul 2021 11:40:27 +0200 Subject: [PATCH] i3-companion: encapsulate state into function object This avoids littering the code with global variables. --- bin/i3-companion | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/bin/i3-companion b/bin/i3-companion index bf6974f..c93b7f0 100755 --- a/bin/i3-companion +++ b/bin/i3-companion @@ -318,20 +318,17 @@ async def workspace_info(i3, event): body.lstrip("\n")) -output_update_running = None - - @on(Event.OUTPUT) async def output_update(i3, event): """React to a XRandR change.""" - global output_update_running - if output_update_running is not None: - output_update_running.cancel() + running = getattr(output_update, "running", None) + if running is not None: + running.cancel() + output_update.running = None def output_update_now(): """Execute actions to react to XRandR change.""" - global output_update_running - output_update_running = None + output_update.running = None logger.info("XRandR change detected") cmds = ( @@ -344,7 +341,7 @@ async def output_update(i3, event): logger.warning(f"{cmd} exited with {proc.returncode}") logger.debug("schedule XRandR change") - output_update_running = asyncio.get_event_loop().call_later( + output_update.running = asyncio.get_event_loop().call_later( 2, output_update_now)