Increase Font Size By 6

This script increases the font size of a session by six points. It demonstrates changing a session’s profile without updating the underlying profile. It also demonstrates parsing and modifying font settings, as well as registering an RPC.

You can bind it to a keystroke by adding a new key binding in Prefs > Keys, selecting the action Invoke Script Function, and giving it the invocation increase_font_size(session_id: id).

#!/usr/bin/env python3.7

import iterm2
import re

async def main(connection):
    app = await iterm2.async_get_app(connection)
    # This regex splits the font into its name and size. Fonts always end with
    # their size in points, preceded by a space.
    r = re.compile(r'^([^ ]* )(\d*)(.*)$')

    @iterm2.RPC
    async def increase_font_size(session_id):
        session = app.get_session_by_id(session_id)
        if not session:
            return
        # Get the session's profile because we need to know its font.
        profile = await session.async_get_profile()

        # Extract the name and point size of the font using a regex.
        font = profile.normal_font
        match = r.search(font)
        if not match:
            return
        groups = match.groups()
        name = groups[0]
        size = int(groups[1])
        remainder = groups[2]

        # Prepare an update to the profile that increases the font size
        # by 6 points.
        replacement = name + str(size + 6) + remainder
        change = iterm2.LocalWriteOnlyProfile()
        change.set_normal_font(replacement)

        # Update the session's copy of its profile without updating the
        # underlying profile.
        await session.async_set_profile_properties(change)
    await increase_font_size.async_register(connection)

iterm2.run_forever(main)

Download