dotfiles/talon/community/community-cursorless-0.4.0/apps/mac/desktops.py
2024-11-16 20:27:38 -07:00

65 lines
1.6 KiB
Python

import contextlib
import time
from talon import actions, ctrl, Module, ui, Context
mod = Module()
@mod.action_class
class ModuleActions:
def desktop(number: int):
"change the current desktop"
def window_move_desktop_left():
"""move the current window to the desktop to the left"""
def window_move_desktop_right():
"""move the current window to the desktop to the right"""
def window_move_desktop(desktop_number: int):
"""move the current window to a different desktop"""
ctx = Context()
ctx.matches = r"""
os: mac
"""
@contextlib.contextmanager
def _drag_window_mac(win=None):
if win is None:
win = ui.active_window()
fs = win.children.find(AXSubrole="AXFullScreenButton")[0]
rect = fs.AXFrame["$rect2d"]
x = rect["x"] + rect["width"] + 5
y = rect["y"] + rect["height"] / 2
ctrl.mouse_move(x, y)
ctrl.mouse_click(button=0, down=True)
yield
time.sleep(0.1)
ctrl.mouse_click(button=0, up=True)
@ctx.action_class("self")
class MacActions:
def desktop(number: int):
if number < 10:
actions.key("ctrl-{}".format(number))
def window_move_desktop_left():
with _drag_window_mac():
actions.key("ctrl-cmd-alt-left")
def window_move_desktop_right():
with _drag_window_mac():
actions.key("ctrl-cmd-alt-right")
def window_move_desktop(desktop_number: int):
if ui.apps(bundle="com.amethyst.Amethyst"):
actions.key(f"ctrl-alt-shift-{desktop_number}")
else:
with _drag_window_mac():
actions.key(f"ctrl-{desktop_number}")