i3-companion: encapsulate state into function object

This avoids littering the code with global variables.
This commit is contained in:
Vincent Bernat 2021-07-11 11:40:27 +02:00
parent b25442dfd9
commit 4f28e682e1

View file

@ -318,20 +318,17 @@ async def workspace_info(i3, event):
body.lstrip("\n")) body.lstrip("\n"))
output_update_running = None
@on(Event.OUTPUT) @on(Event.OUTPUT)
async def output_update(i3, event): async def output_update(i3, event):
"""React to a XRandR change.""" """React to a XRandR change."""
global output_update_running running = getattr(output_update, "running", None)
if output_update_running is not None: if running is not None:
output_update_running.cancel() running.cancel()
output_update.running = None
def output_update_now(): def output_update_now():
"""Execute actions to react to XRandR change.""" """Execute actions to react to XRandR change."""
global output_update_running output_update.running = None
output_update_running = None
logger.info("XRandR change detected") logger.info("XRandR change detected")
cmds = ( cmds = (
@ -344,7 +341,7 @@ async def output_update(i3, event):
logger.warning(f"{cmd} exited with {proc.returncode}") logger.warning(f"{cmd} exited with {proc.returncode}")
logger.debug("schedule XRandR change") 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) 2, output_update_now)