summaryrefslogtreecommitdiff
path: root/config/sway/otherwindow
diff options
context:
space:
mode:
authorThomas Ulmer <thomasmulmer02@gmail.com>2026-02-04 14:24:16 -0800
committerThomas Ulmer <thomasmulmer02@gmail.com>2026-02-04 14:24:16 -0800
commit9139a1b136fa2b5adfcac0ac09a4f61aa1ee1ff4 (patch)
treede82bc4776b87f1fbb86f14b4a15d35d009ddd28 /config/sway/otherwindow
parenta9bf8f30c746f5b28bb7eb6938e8390127081a32 (diff)
full reorg
Diffstat (limited to 'config/sway/otherwindow')
-rwxr-xr-xconfig/sway/otherwindow81
1 files changed, 81 insertions, 0 deletions
diff --git a/config/sway/otherwindow b/config/sway/otherwindow
new file mode 100755
index 0000000..e75c40d
--- /dev/null
+++ b/config/sway/otherwindow
@@ -0,0 +1,81 @@
+#!/usr/bin/env python3
+
+import sys
+import json
+import subprocess
+
+swaymsg = subprocess.run(['swaymsg', '-t', 'get_tree'], stdout=subprocess.PIPE)
+data = json.loads(swaymsg.stdout)
+current = data["nodes"][1]["current_workspace"]
+
+def iterdict(d, pred):
+ for sub in d["nodes"]:
+ # print("sub", sub)
+ if isinstance(sub, dict):
+ # print("check 1", sub)
+ if pred(sub):
+ # print("check 2", sub)
+ return sub
+ else:
+ rec = iterdict(sub, pred)
+ if rec != None:
+ return d
+ return None
+
+def focused(d):
+ # print("tested", d)
+ if "focused" in d:
+ return bool(d["focused"])
+ return False
+ # return (("focused" in d) and d["focused"])
+
+def getWorkspace():
+ for output in data["nodes"]:
+ for workspace in output["nodes"]:
+ possible = iterdict(workspace, focused)
+ # print("pos", possible)
+ if possible != None:
+ #not None, must have been some focused
+ return possible
+ #maybe gives all the visible ones in multi monitor mode?
+ return None
+
+
+#workspace = int(data["nodes"][1]["current_workspace"])-1
+#roi = data["nodes"][1]["nodes"][workspace]
+#print(roi)
+temp = getWorkspace()
+windows = list()
+
+def getNextWindow():
+ if focus < len(windows) - 1:
+ return focus+1
+ else:
+ return 0
+
+def getPrevWindow():
+ if focus > 0:
+ return focus-1
+ else:
+ return len(windows)-1
+
+def makelist(temp):
+ for nodes in "floating_nodes", "nodes":
+ for i in range(len(temp[nodes])):
+ # print(temp[nodes][i]["name"])
+ # print()
+ if temp[nodes][i]["name"] is None:
+ makelist(temp[nodes][i])
+ elif temp[nodes][i]["visible"]:
+ windows.append(temp[nodes][i])
+
+def focused(temp_win):
+ for i in range(len(temp_win)):
+ if temp_win[i]["focused"] == True:
+ return i
+
+makelist(temp)
+#print(windows)
+# print(len(windows))
+focus = focused(windows)
+print(windows[getNextWindow()]["id"])