diff options
Diffstat (limited to 'sway/otherwindow~')
| -rwxr-xr-x | sway/otherwindow~ | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/sway/otherwindow~ b/sway/otherwindow~ new file mode 100755 index 0000000..0a82e72 --- /dev/null +++ b/sway/otherwindow~ @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +import sys +import json +import subprocess + +direction=bool(sys.argv[1] == 't' or sys.argv[1] == 'T') +swaymsg = subprocess.run(['swaymsg', '-t', 'get_tree'], stdout=subprocess.PIPE) +data = json.loads(swaymsg.stdout) +current = data["nodes"][1]["current_workspace"] + +for output in data["nodes"]: + if "current_workspace" in output: + for workspace in output["nodes"]: + if workspace["name"] == output["current_workspace"]: + #maybe gives all the visible ones in multi monitor mode? + roi = workspace + break + +#workspace = int(data["nodes"][1]["current_workspace"])-1 +#roi = data["nodes"][1]["nodes"][workspace] +#print(roi) +temp = roi +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) +if str(sys.argv[1]) == 't' or str(sys.argv[1]) == 'T': + print(windows[getNextWindow()]["id"]) +else: + print(windows[getPrevWindow()]["id"]) |
