diff --git a/core/app_switcher/app_switcher.py b/core/app_switcher/app_switcher.py index 32165c055c..a898c0a4e2 100644 --- a/core/app_switcher/app_switcher.py +++ b/core/app_switcher/app_switcher.py @@ -1,4 +1,5 @@ import os +import re import shlex import subprocess import time @@ -316,6 +317,20 @@ def switcher_focus_app(app: ui.App): raise RuntimeError(f"Can't focus app: {app.name}") actions.sleep(0.1) + def switcher_focus_app_title(app: str, regex: str): + """Focus the window whose app name constains app and title matches regex""" + for window in ui.windows(): + if ( + not (window.hidden) + and (app in window.app.name or app == "*") + and window.title != "" + ): + # logging.warn(f'Checking Window: "{window.app.name}" window:"{window.title}" hidden: "{window.hidden}"') + if regex is None or re.search(regex, window.title): + window.focus() + return + logging.error(f'(switcher_focus_app_title) Window not found: "{app}" "{regex}"') + def switcher_focus_window(window: ui.Window): """Focus window and wait until switch is made""" window.focus() diff --git a/core/windows_and_tabs/window_management.talon b/core/windows_and_tabs/window_management.talon index 393cebe31a..ac27f772ce 100644 --- a/core/windows_and_tabs/window_management.talon +++ b/core/windows_and_tabs/window_management.talon @@ -4,6 +4,7 @@ window last: app.window_previous() window close: app.window_close() window hide: app.window_hide() focus : user.switcher_focus(running_applications) +focus title : user.switcher_focus_app_title("*", "{phrase}") # following only works on windows. Can't figure out how to make it work for mac. No idea what the equivalent for linux would be. focus$: user.switcher_menu() running list: user.switcher_toggle_running()