Files
dotfiles/.config/hypr/scripts/gromit.py

66 lines
2.1 KiB
Python
Executable File

#!/usr/bin/python3
# import argparse
import os
import sys
import subprocess
import json
def get_window():
print("Getting active window",flush=True)
state = subprocess.run(["hyprctl", "activewindow", "-j"], capture_output=True, text=True)
state = state.stdout
try:
state = json.loads(state)
except json.JSONDecodeError:
print("Error decoding JSON")
return None
if state is None:
print("No active window")
return None
if "class" not in state:
return None
return state["class"]
def gromit_running():
clients = subprocess.run(["hyprctl", "clients", "-j"], capture_output=True, text=True)
clients = clients.stdout
try:
clients = json.loads(clients)
except json.JSONDecodeError:
print("Error decoding JSON")
return False
if clients is None:
print("No clients")
return False
for client in clients:
if "class" not in client:
continue
if client["class"] == "Gromit-mpx":
return True
return False
if __name__ == "__main__":
if get_window() == "Gromit-mpx":
print("Gromit is already running")
os.system("hyprctl dispatch togglespecialworkspace gromit")
os.system("gromit-mpx -t")
os.system("hyprctl keyword unbind , mouse_left")
os.system("hyprctl keyword unbind , mouse_right")
print("Rebinding mouse buttons")
os.system("hyprctl keyword bind , mouse_left, exec, 'ydotool key 56:1 105:1 105:0 56:0'")
os.system("hyprctl keyword bind , mouse_right, exec, 'ydotool key 56:1 106:1 106:0 56:0'")
else:
print("Gromit is not running",flush=True)
# Check if gromit-mpx is running
if gromit_running():
os.system("gromit-mpx -t")
os.system("hyprctl dispatch togglespecialworkspace gromit")
os.system("hyprctl keyword unbind , mouse_left")
os.system("hyprctl keyword unbind , mouse_right")
os.system("hyprctl keyword bind , mouse_left, exec, 'gromit-mpx --undo'")
os.system("hyprctl keyword bind , mouse_right, exec, 'gromit-mpx --redo'")