Add a focus-tab remote command

Fixes #394
This commit is contained in:
Kovid Goyal 2018-03-15 17:41:49 +05:30
parent bbfd463357
commit 64b48945d4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 41 additions and 4 deletions

View File

@ -124,7 +124,10 @@ class Boss:
}
def match_windows(self, match):
field, exp = match.split(':', 1)
try:
field, exp = match.split(':', 1)
except ValueError:
return
pat = re.compile(exp)
for tm in self.os_window_map.values():
for tab in tm:
@ -140,7 +143,10 @@ class Boss:
return tab
def match_tabs(self, match):
field, exp = match.split(':', 1)
try:
field, exp = match.split(':', 1)
except ValueError:
return
pat = re.compile(exp)
tms = tuple(self.os_window_map.values())
found = False
@ -516,6 +522,11 @@ class Boss:
if tm is not None:
tm.goto_tab(tab_num - 1)
def set_active_tab(self, tab):
tm = self.active_tab_manager
if tm is not None:
tm.set_active_tab(tab)
def next_tab(self):
tm = self.active_tab_manager
if tm is not None:

View File

@ -401,6 +401,27 @@ def focus_window(boss, window, payload):
# }}}
# focus_tab {{{
@cmd(
'Focus the specified tab',
'The active window in the specified tab will be focused.',
options_spec=MATCH_TAB_OPTION,
argspec='',
)
def cmd_focus_tab(global_opts, opts, args):
return {'match': opts.match}
def focus_tab(boss, window, payload):
match = payload['match']
tabs = tuple(boss.match_tabs(match))
if not tabs:
raise MatchError(match, 'tabs')
tab = tabs[0]
boss.set_active_tab(tab)
# }}}
# get_text {{{
@cmd(
'Get text from the specified window',

View File

@ -57,9 +57,14 @@ Let's change the title of the current tab:
kitty @ set-tab-title Master Tab
Now lets switch to the newly opened tab.
Now lets switch to the newly opened tab:
kitty @ focus-window --match title:New
kitty @ focus-tab --match title:New
Similarly, to focus the previously opened output window (which will also switch
back to the old tab, automatically):
kitty @ focus-window --match title:Output
You can get a listing of available tabs and windows, by running: