Move Tab To Next/Previous WindowΒΆ

This script registers a pair of functions to move the current tab to the next or previous window.

You can bind it to a keystroke in Prefs > Keys by selecting the action Invoke Script Function and giving it the invocation move_current_tab_to_next_window() or move_current_tab_to_previous_window().

#!/usr/bin/env python3.7
import iterm2

async def main(connection):
    app = await iterm2.async_get_app(connection)

    async def move_current_tab_by_n_windows(delta):
        tab_to_move = app.current_terminal_window.current_tab
        window_with_tab_to_move = app.get_window_for_tab(tab_to_move.tab_id)
        i = app.terminal_windows.index(window_with_tab_to_move)
        n = len(app.terminal_windows)
        j = (i + delta) % n
        if i == j:
            return
        window = app.terminal_windows[j]
        await window.async_set_tabs(window.tabs + [tab_to_move])

    @iterm2.RPC
    async def move_current_tab_to_next_window():
        await move_current_tab_by_n_windows(1)
    await move_current_tab_to_next_window.async_register(connection)

    @iterm2.RPC
    async def move_current_tab_to_previous_window():
        n = len(app.terminal_windows)
        if n > 0:
            await move_current_tab_by_n_windows(n - 1)
    await move_current_tab_to_previous_window.async_register(connection)

iterm2.run_forever(main)

Download