55 lines
2.1 KiB
Python
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)
|
|
|