init commit
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
import os
|
||||
|
||||
from talon import Context, Module, actions, app, ui
|
||||
|
||||
mod = Module()
|
||||
apps = mod.apps
|
||||
|
||||
apps.windows_explorer = r"""
|
||||
os: windows
|
||||
and app.name: Windows Explorer
|
||||
os: windows
|
||||
and app.name: Windows-Explorer
|
||||
os: windows
|
||||
and app.exe: /^explorer\.exe$/i
|
||||
"""
|
||||
|
||||
# many commands should work in most save/open dialog.
|
||||
# note the "show options" stuff won't work
|
||||
# unless the path is displayed in the title, which is rare for those
|
||||
apps.windows_file_browser = """
|
||||
os: windows
|
||||
and app.name: /.*/
|
||||
and title: /(Save|Open|Browse|Select)/
|
||||
"""
|
||||
|
||||
ctx = Context()
|
||||
ctx.matches = r"""
|
||||
app: windows_explorer
|
||||
app: windows_file_browser
|
||||
"""
|
||||
|
||||
user_path = os.path.expanduser("~")
|
||||
directories_to_remap = {}
|
||||
directories_to_exclude = {}
|
||||
|
||||
if app.platform == "windows":
|
||||
is_windows = True
|
||||
import ctypes
|
||||
|
||||
GetUserNameEx = ctypes.windll.secur32.GetUserNameExW
|
||||
NameDisplay = 3
|
||||
|
||||
size = ctypes.pointer(ctypes.c_ulong(0))
|
||||
GetUserNameEx(NameDisplay, None, size)
|
||||
|
||||
nameBuffer = ctypes.create_unicode_buffer(size.contents.value)
|
||||
GetUserNameEx(NameDisplay, nameBuffer, size)
|
||||
one_drive_path = os.path.expanduser(os.path.join("~", "OneDrive"))
|
||||
|
||||
# this is probably not the correct way to check for onedrive, quick and dirty
|
||||
if os.path.isdir(os.path.expanduser(os.path.join("~", r"OneDrive\Desktop"))):
|
||||
directories_to_remap = {
|
||||
"Desktop": os.path.join(one_drive_path, "Desktop"),
|
||||
"Documents": os.path.join(one_drive_path, "Documents"),
|
||||
"Downloads": os.path.join(user_path, "Downloads"),
|
||||
"Music": os.path.join(user_path, "Music"),
|
||||
"OneDrive": one_drive_path,
|
||||
"Pictures": os.path.join(one_drive_path, "Pictures"),
|
||||
"Videos": os.path.join(user_path, "Videos"),
|
||||
}
|
||||
else:
|
||||
# todo use expanduser for cross platform support
|
||||
directories_to_remap = {
|
||||
"Desktop": os.path.join(user_path, "Desktop"),
|
||||
"Documents": os.path.join(user_path, "Documents"),
|
||||
"Downloads": os.path.join(user_path, "Downloads"),
|
||||
"Music": os.path.join(user_path, "Music"),
|
||||
"OneDrive": one_drive_path,
|
||||
"Pictures": os.path.join(user_path, "Pictures"),
|
||||
"Videos": os.path.join(user_path, "Videos"),
|
||||
}
|
||||
|
||||
if nameBuffer.value:
|
||||
directories_to_remap[nameBuffer.value] = user_path
|
||||
|
||||
directories_to_exclude = [
|
||||
"",
|
||||
"Run",
|
||||
"Task Switching",
|
||||
"Task View",
|
||||
"This PC",
|
||||
"File Explorer",
|
||||
"Program Manager",
|
||||
]
|
||||
|
||||
|
||||
@ctx.action_class("user")
|
||||
class UserActions:
|
||||
|
||||
def file_manager_open_parent():
|
||||
actions.key("alt-up")
|
||||
|
||||
def file_manager_current_path():
|
||||
path = ui.active_window().title
|
||||
|
||||
if path in directories_to_remap:
|
||||
path = directories_to_remap[path]
|
||||
|
||||
if path in directories_to_exclude:
|
||||
actions.user.file_manager_hide_pickers()
|
||||
path = ""
|
||||
|
||||
return path
|
||||
|
||||
def file_manager_terminal_here():
|
||||
actions.key("ctrl-l")
|
||||
actions.insert("cmd.exe")
|
||||
actions.key("enter")
|
||||
|
||||
def file_manager_show_properties():
|
||||
"""Shows the properties for the file"""
|
||||
actions.key("alt-enter")
|
||||
|
||||
def file_manager_open_directory(path: str):
|
||||
"""opens the directory that's already visible in the view"""
|
||||
actions.key("ctrl-l")
|
||||
actions.insert(path)
|
||||
actions.key("enter")
|
||||
|
||||
def file_manager_select_directory(path: str):
|
||||
"""selects the directory"""
|
||||
actions.insert(path)
|
||||
|
||||
def file_manager_new_folder(name: str):
|
||||
"""Creates a new folder in a gui filemanager or inserts the command to do so for terminals"""
|
||||
actions.key("home")
|
||||
actions.key("ctrl-shift-n")
|
||||
actions.insert(name)
|
||||
|
||||
def file_manager_open_file(path: str):
|
||||
"""opens the file"""
|
||||
actions.key("home")
|
||||
actions.insert(path)
|
||||
actions.key("enter")
|
||||
|
||||
def file_manager_select_file(path: str):
|
||||
"""selects the file"""
|
||||
actions.key("home")
|
||||
actions.insert(path)
|
||||
|
||||
def file_manager_open_volume(volume: str):
|
||||
"""file_manager_open_volume"""
|
||||
actions.user.file_manager_open_directory(volume)
|
||||
|
||||
def address_focus():
|
||||
actions.key("ctrl-l")
|
||||
|
||||
def address_copy_address():
|
||||
actions.key("ctrl-l")
|
||||
actions.edit.copy()
|
||||
|
||||
def address_navigate(address: str):
|
||||
actions.user.file_manager_open_directory(address)
|
||||
@@ -0,0 +1,9 @@
|
||||
app: windows_explorer
|
||||
app: windows_file_browser
|
||||
-
|
||||
tag(): user.address
|
||||
tag(): user.file_manager
|
||||
tag(): user.navigation
|
||||
|
||||
go app data: user.file_manager_open_directory("%AppData%")
|
||||
go program files: user.file_manager_open_directory("%ProgramFiles%")
|
||||
Reference in New Issue
Block a user