diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/PyOutputHandler.iml b/.idea/PyOutputHandler.iml
new file mode 100644
index 0000000..5c61f40
--- /dev/null
+++ b/.idea/PyOutputHandler.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..23391f2
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..1cbbf47
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..1c8eac1
--- /dev/null
+++ b/main.py
@@ -0,0 +1,79 @@
+from i3ipc import connection, Connection
+import logging
+import sys
+from pprint import pprint
+import pynput
+import re
+import asyncio
+
+"""import argparse
+"""
+
+logger = logging.getLogger(__name__)
+
+
+class WorkSpacer:
+
+ def __init__(self, args):
+ self.i3 = None
+ self.args = args
+ self.workspaces_on_outputs = None
+ self.workspaces = None
+ self.outputs = None
+
+ self.mouse = pynput.mouse.Controller()
+
+ self.mouse_position = None
+ self.current_output_name = None
+
+ def _connect(self):
+ try:
+ self.i3 = Connection()
+ re.compile(r'')
+ self.workspaces_on_outputs = [ws for ws in self.i3.get_config().__dict__['config'].split('\n') if ws]
+ except Exception as exc:
+ logger.error(f"Could not load i3: {exc}", exc_info=exc)
+ sys.exit(1)
+ self.workspaces = [workspaces for workspaces in self.i3.get_workspaces()]
+ outputs = self.i3.get_outputs()
+ #pprint(outputs[1].__dict__)
+ self.outputs = [output for output in outputs if output.__dict__["active"] is True]
+
+ def run(self):
+ self._connect()
+ self.mouse_position = self.mouse.position
+ self.current_output_name = self._get_workspace_from_courser_position()
+
+ def _get_workspace_from_courser_position(self):
+ for output in self.outputs:
+ width = output.__dict__["rect"].__dict__["width"]
+ height = output.__dict__["rect"].__dict__["height"]
+ x_offset = output.__dict__["rect"].__dict__["x"]
+ y_offset = output.__dict__["rect"].__dict__["y"]
+
+ if x_offset == 0 and y_offset == 0:
+ if x_offset <= self.mouse_position[0] <= x_offset + width and y_offset <= self.mouse_position[1] <= y_offset + height:
+ return output.__dict__["name"]
+ elif x_offset == 0:
+ if x_offset <= self.mouse_position[0] <= x_offset + width and y_offset < self.mouse_position[1] <= y_offset + height:
+ return output.__dict__["name"]
+ elif y_offset == 0:
+ if x_offset < self.mouse_position[0] <= x_offset + width and y_offset <= self.mouse_position[1] <= y_offset + height:
+ return output.__dict__["name"]
+ else:
+ if x_offset < self.mouse_position[0] <= x_offset + width and y_offset < self.mouse_position[1] <= y_offset + height:
+ return output.__dict__["name"]
+
+ def _get_workspaces_for_output(self, output):
+ return [workspace for workspace in self.workspaces if workspace.__dict__['output'] == output]
+
+
+def tst():
+ ws = WorkSpacer('')
+ ws.run()
+
+# Press the green button in the gutter to run the script.
+if __name__ == '__main__':
+ tst()
+
+