adds extra monitors to the possible outputs

This commit is contained in:
Asger Geel Weirsøe
2020-09-15 14:31:23 +02:00
parent 2659ec1d9e
commit c534c5d302

View File

@@ -3,6 +3,7 @@ import sys
import pynput import pynput
import re import re
import argparse import argparse
import pprint
class WorkSpacer: class WorkSpacer:
@@ -24,7 +25,7 @@ class WorkSpacer:
self.config = self.i3.get_config().__dict__['config'] self.config = self.i3.get_config().__dict__['config']
config_outputs = {} config_outputs = {}
for matchNo, match in enumerate( for matchNo, match in enumerate(
re.finditer(r'set (\$[a-zA-Z]+) ((HDMI|DP|VGA)-\d)', self.config, re.MULTILINE), start=1 re.finditer(r'set (\$[a-zA-Z]+) ((HDMI|DP|VGA|eDP)(-|)\d)', self.config, re.MULTILINE), start=1
): ):
config_outputs[match.group(1)] = match.group(2) config_outputs[match.group(1)] = match.group(2)
config_workspace_names = {} config_workspace_names = {}
@@ -38,8 +39,11 @@ class WorkSpacer:
if not self.workspaces_on_outputs.keys().__contains__(config_outputs[match.group(2)]): if not self.workspaces_on_outputs.keys().__contains__(config_outputs[match.group(2)]):
self.workspaces_on_outputs[config_outputs[match.group(2)]] = [] self.workspaces_on_outputs[config_outputs[match.group(2)]] = []
self.workspaces_on_outputs[config_outputs[match.group(2)]].append(config_workspace_names[match.group(1)]) self.workspaces_on_outputs[config_outputs[match.group(2)]].append(config_workspace_names[match.group(1)])
self.print_if_debug("All workspaces with outputs")
self.print_if_debug(self.workspaces_on_outputs)
except Exception as exc: except Exception as exc:
self.print_if_debug(exc)
sys.exit(1) sys.exit(1)
self.workspaces = [workspaces for workspaces in self.i3.get_workspaces()] self.workspaces = [workspaces for workspaces in self.i3.get_workspaces()]
outputs = self.i3.get_outputs() outputs = self.i3.get_outputs()
@@ -79,11 +83,17 @@ class WorkSpacer:
def _get_workspaces_for_output(self, output): def _get_workspaces_for_output(self, output):
return [workspace for workspace in self.workspaces if workspace.__dict__['output'] == output] return [workspace for workspace in self.workspaces if workspace.__dict__['output'] == output]
def print_if_debug(self, to_print):
if self.args.debug:
pprint.pprint(to_print)
def main(): def main():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Dynamic changes the workspace, based on what output your cursoer is on." description="Dynamic changes the workspace, based on what output your cursoer is on."
) )
parser.add_argument('-d', '--debug', action='store_true',
help='Turn on debug mode.')
required_group = parser.add_argument_group('Required', '') required_group = parser.add_argument_group('Required', '')
required_group.add_argument("-i", "--index", type=int, required=True, required_group.add_argument("-i", "--index", type=int, required=True,
@@ -94,7 +104,7 @@ def main():
help="if present, moves the current active window to target workspace") help="if present, moves the current active window to target workspace")
shift_group.add_argument('-k', '--keep-with-it', action='store_true', shift_group.add_argument('-k', '--keep-with-it', action='store_true',
help='if present, moves with the ') help='if present, moves with the ')
pprint.pprint(parser.parse_args().__dict__)
WorkSpacer(parser.parse_args()).run() WorkSpacer(parser.parse_args()).run()