dotfiles/talon/community/community-cursorless-0.4.0/code/talon_helpers.py
2024-11-16 20:27:38 -07:00

55 lines
2.1 KiB
Python

from talon import Context, actions, ui, Module, app, clip
import os
import re
from itertools import islice
mod = Module()
pattern = re.compile(r"[A-Z][a-z]*|[a-z]+|\d")
# todo: should this be an action that lives elsewhere??
def create_name(text, max_len=20):
return "_".join(list(islice(pattern.findall(text), max_len))).lower()
@mod.action_class
class Actions:
def talon_add_context_clipboard_python():
"""Adds os-specific context info to the clipboard for the focused app for .py files. Assumes you've a Module named mod declared."""
friendly_name = actions.app.name()
# print(actions.app.executable())
executable = actions.app.executable().split(os.path.sep)[-1]
app_name = create_name(friendly_name.replace(".exe", ""))
if app.platform == "mac":
result = 'mod.apps.{} = """\nos: {}\nand app.bundle: {}\n"""'.format(
app_name, app.platform, actions.app.bundle()
)
elif app.platform == "windows":
result = 'mod.apps.{} = """\nos: windows\nand app.name: {}\nos: windows\nand app.exe: {}\n"""'.format(
app_name, friendly_name, executable
)
else:
result = 'mod.apps.{} = """\nos: {}\nand app.name: {}\n"""'.format(
app_name, app.platform, friendly_name
)
clip.set_text(result)
def talon_add_context_clipboard():
"""Adds os-specific context info to the clipboard for the focused app for .talon files"""
friendly_name = actions.app.name()
# print(actions.app.executable())
executable = actions.app.executable().split(os.path.sep)[-1]
if app.platform == "mac":
result = "os: {}\nand app.bundle: {}\n".format(
app.platform, actions.app.bundle()
)
elif app.platform == "windows":
result = "os: windows\nand app.name: {}\nos: windows\nand app.exe: {}\n".format(
friendly_name, executable
)
else:
result = "os: {}\nand app.name: {}\n".format(app.platform, friendly_name)
clip.set_text(result)