Package Control

The official Sublime Text package manager.

Terminus

Bring a real terminal to Sublime Text

By randy3k
Created June 14, 2018, last updated December 16, 2025.

JunMayAprMarFebJan Dec2025 NovOctSepAugJul 2026-W28 | installs: 344 | removals: 62 | upgrades: 197 2026-W28 | installs: 344 | removals: 62 | upgrades: 197 2026-W28 | installs: 344 | removals: 62 | upgrades: 197 2026-W27 | installs: 457 | removals: 96 | upgrades: 290 2026-W27 | installs: 457 | removals: 96 | upgrades: 290 2026-W27 | installs: 457 | removals: 96 | upgrades: 290 2026-W26 | installs: 482 | removals: 82 | upgrades: 311 2026-W26 | installs: 482 | removals: 82 | upgrades: 311 2026-W26 | installs: 482 | removals: 82 | upgrades: 311 2026-W25 | installs: 491 | removals: 101 | upgrades: 280 2026-W25 | installs: 491 | removals: 101 | upgrades: 280 2026-W25 | installs: 491 | removals: 101 | upgrades: 280 2026-W24 | installs: 519 | removals: 95 | upgrades: 295 2026-W24 | installs: 519 | removals: 95 | upgrades: 295 2026-W24 | installs: 519 | removals: 95 | upgrades: 295 2026-W23 | installs: 518 | removals: 127 | upgrades: 292 2026-W23 | installs: 518 | removals: 127 | upgrades: 292 2026-W23 | installs: 518 | removals: 127 | upgrades: 292 2026-W22 | installs: 0 | removals: 0 | upgrades: 0 2026-W22 | installs: 0 | removals: 0 | upgrades: 0 2026-W22 | installs: 0 | removals: 0 | upgrades: 0 2026-W21 | installs: 513 | removals: 95 | upgrades: 383 2026-W21 | installs: 513 | removals: 95 | upgrades: 383 2026-W21 | installs: 513 | removals: 95 | upgrades: 383 2026-W20 | installs: 600 | removals: 118 | upgrades: 485 2026-W20 | installs: 600 | removals: 118 | upgrades: 485 2026-W20 | installs: 600 | removals: 118 | upgrades: 485 2026-W19 | installs: 545 | removals: 85 | upgrades: 492 2026-W19 | installs: 545 | removals: 85 | upgrades: 492 2026-W19 | installs: 545 | removals: 85 | upgrades: 492 2026-W18 | installs: 467 | removals: 102 | upgrades: 513 2026-W18 | installs: 467 | removals: 102 | upgrades: 513 2026-W18 | installs: 467 | removals: 102 | upgrades: 513 2026-W17 | installs: 591 | removals: 118 | upgrades: 566 2026-W17 | installs: 591 | removals: 118 | upgrades: 566 2026-W17 | installs: 591 | removals: 118 | upgrades: 566 2026-W16 | installs: 572 | removals: 126 | upgrades: 796 2026-W16 | installs: 572 | removals: 126 | upgrades: 796 2026-W16 | installs: 572 | removals: 126 | upgrades: 796 2026-W15 | installs: 654 | removals: 107 | upgrades: 1,103 2026-W15 | installs: 654 | removals: 107 | upgrades: 1,103 2026-W15 | installs: 654 | removals: 107 | upgrades: 1,103 2026-W14 | installs: 457 | removals: 108 | upgrades: 620 2026-W14 | installs: 457 | removals: 108 | upgrades: 620 2026-W14 | installs: 457 | removals: 108 | upgrades: 620 2026-W13 | installs: 128 | removals: 46 | upgrades: 1 2026-W13 | installs: 128 | removals: 46 | upgrades: 1 2026-W13 | installs: 128 | removals: 46 | upgrades: 1 2026-W12 | installs: 122 | removals: 55 | upgrades: 0 2026-W12 | installs: 122 | removals: 55 | upgrades: 0 2026-W12 | installs: 122 | removals: 55 | upgrades: 0 2026-W11 | installs: 138 | removals: 54 | upgrades: 1 2026-W11 | installs: 138 | removals: 54 | upgrades: 1 2026-W11 | installs: 138 | removals: 54 | upgrades: 1 2026-W10 | installs: 123 | removals: 59 | upgrades: 2 2026-W10 | installs: 123 | removals: 59 | upgrades: 2 2026-W10 | installs: 123 | removals: 59 | upgrades: 2 2026-W09 | installs: 126 | removals: 48 | upgrades: 1 2026-W09 | installs: 126 | removals: 48 | upgrades: 1 2026-W09 | installs: 126 | removals: 48 | upgrades: 1 2026-W08 | installs: 109 | removals: 57 | upgrades: 3 2026-W08 | installs: 109 | removals: 57 | upgrades: 3 2026-W08 | installs: 109 | removals: 57 | upgrades: 3 2026-W07 | installs: 135 | removals: 68 | upgrades: 3 2026-W07 | installs: 135 | removals: 68 | upgrades: 3 2026-W07 | installs: 135 | removals: 68 | upgrades: 3 2026-W06 | installs: 343 | removals: 68 | upgrades: 362 2026-W06 | installs: 343 | removals: 68 | upgrades: 362 2026-W06 | installs: 343 | removals: 68 | upgrades: 362 2026-W05 | installs: 791 | removals: 88 | upgrades: 1,446 2026-W05 | installs: 791 | removals: 88 | upgrades: 1,446 2026-W05 | installs: 791 | removals: 88 | upgrades: 1,446 2026-W04 | installs: 725 | removals: 53 | upgrades: 1,770 2026-W04 | installs: 725 | removals: 53 | upgrades: 1,770 2026-W04 | installs: 725 | removals: 53 | upgrades: 1,770 2026-W03 | installs: 669 | removals: 76 | upgrades: 2,590 2026-W03 | installs: 669 | removals: 76 | upgrades: 2,590 2026-W03 | installs: 669 | removals: 76 | upgrades: 2,590 2026-W02 | installs: 714 | removals: 79 | upgrades: 3,370 2026-W02 | installs: 714 | removals: 79 | upgrades: 3,370 2026-W02 | installs: 714 | removals: 79 | upgrades: 3,370 2026-W01 | installs: 620 | removals: 81 | upgrades: 2,978 2026-W01 | installs: 620 | removals: 81 | upgrades: 2,978 2026-W01 | installs: 620 | removals: 81 | upgrades: 2,978 2025-W52 | installs: 615 | removals: 77 | upgrades: 5,068 2025-W52 | installs: 615 | removals: 77 | upgrades: 5,068 2025-W52 | installs: 615 | removals: 77 | upgrades: 5,068 2025-W51 | installs: 674 | removals: 100 | upgrades: 13,345 2025-W51 | installs: 674 | removals: 100 | upgrades: 13,345 2025-W51 | installs: 674 | removals: 100 | upgrades: 13,345 2025-W50 | installs: 621 | removals: 79 | upgrades: 381 2025-W50 | installs: 621 | removals: 79 | upgrades: 381 2025-W50 | installs: 621 | removals: 79 | upgrades: 381 2025-W49 | installs: 616 | removals: 81 | upgrades: 426 2025-W49 | installs: 616 | removals: 81 | upgrades: 426 2025-W49 | installs: 616 | removals: 81 | upgrades: 426 2025-W48 | installs: 659 | removals: 86 | upgrades: 509 2025-W48 | installs: 659 | removals: 86 | upgrades: 509 2025-W48 | installs: 659 | removals: 86 | upgrades: 509 2025-W47 | installs: 594 | removals: 84 | upgrades: 560 2025-W47 | installs: 594 | removals: 84 | upgrades: 560 2025-W47 | installs: 594 | removals: 84 | upgrades: 560 2025-W46 | installs: 473 | removals: 92 | upgrades: 567 2025-W46 | installs: 473 | removals: 92 | upgrades: 567 2025-W46 | installs: 473 | removals: 92 | upgrades: 567 2025-W45 | installs: 553 | removals: 127 | upgrades: 639 2025-W45 | installs: 553 | removals: 127 | upgrades: 639 2025-W45 | installs: 553 | removals: 127 | upgrades: 639 2025-W44 | installs: 505 | removals: 128 | upgrades: 707 2025-W44 | installs: 505 | removals: 128 | upgrades: 707 2025-W44 | installs: 505 | removals: 128 | upgrades: 707 2025-W43 | installs: 481 | removals: 106 | upgrades: 755 2025-W43 | installs: 481 | removals: 106 | upgrades: 755 2025-W43 | installs: 481 | removals: 106 | upgrades: 755 2025-W42 | installs: 540 | removals: 117 | upgrades: 962 2025-W42 | installs: 540 | removals: 117 | upgrades: 962 2025-W42 | installs: 540 | removals: 117 | upgrades: 962 2025-W41 | installs: 541 | removals: 117 | upgrades: 1,042 2025-W41 | installs: 541 | removals: 117 | upgrades: 1,042 2025-W41 | installs: 541 | removals: 117 | upgrades: 1,042 2025-W40 | installs: 532 | removals: 108 | upgrades: 1,060 2025-W40 | installs: 532 | removals: 108 | upgrades: 1,060 2025-W40 | installs: 532 | removals: 108 | upgrades: 1,060 2025-W39 | installs: 540 | removals: 127 | upgrades: 1,320 2025-W39 | installs: 540 | removals: 127 | upgrades: 1,320 2025-W39 | installs: 540 | removals: 127 | upgrades: 1,320 2025-W38 | installs: 578 | removals: 120 | upgrades: 1,615 2025-W38 | installs: 578 | removals: 120 | upgrades: 1,615 2025-W38 | installs: 578 | removals: 120 | upgrades: 1,615 2025-W37 | installs: 574 | removals: 126 | upgrades: 2,239 2025-W37 | installs: 574 | removals: 126 | upgrades: 2,239 2025-W37 | installs: 574 | removals: 126 | upgrades: 2,239 2025-W36 | installs: 551 | removals: 130 | upgrades: 3,086 2025-W36 | installs: 551 | removals: 130 | upgrades: 3,086 2025-W36 | installs: 551 | removals: 130 | upgrades: 3,086 2025-W35 | installs: 567 | removals: 118 | upgrades: 4,906 2025-W35 | installs: 567 | removals: 118 | upgrades: 4,906 2025-W35 | installs: 567 | removals: 118 | upgrades: 4,906 2025-W34 | installs: 631 | removals: 184 | upgrades: 13,710 2025-W34 | installs: 631 | removals: 184 | upgrades: 13,710 2025-W34 | installs: 631 | removals: 184 | upgrades: 13,710 2025-W33 | installs: 473 | removals: 99 | upgrades: 3,186 2025-W33 | installs: 473 | removals: 99 | upgrades: 3,186 2025-W33 | installs: 473 | removals: 99 | upgrades: 3,186 0400800 WeeklyInstalls 010K20K WeeklyUpgrades 2025-W51 | upgrades: 13,345 0.3.37 2025-W33 | upgrades: 3,186 0.3.36
Installations: recent average 488 per week, 431,040 in total
Installations minus removals
Upgrades

Links

Versions

0.3.37 (>ST3159) ·
2025-12-16 18:21

More
  • (>ST3159) 0.3.36 ·
    2025-08-17 00:32

Bring a real terminal to Sublime Text

Package Control Downloads

The first cross platform terminal for Sublime Text.

Unix shell Cmd.exe
Terminal in panel Support showing images

This package is heavily inspired by TerminalView. Compare with TerminalView, this has

Installation

Package Control.

Getting started

Shell configurations

Terminus comes with several shell configurations. The settings file should be quite self explanatory.

User Key Bindings

You may find these key bindings useful. To edit, run Preferences: Terminus Key Bindings. Check the details for the arguments of terminus_open below.

[
    { 
        "keys": ["alt+`"], "command": "toggle_terminus_panel"
    }
]
[
    { 
        "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {
            "cwd": "${file_path:${folder}}"
        }
    }
]

or by passing a custom cmd, say ipython

[
    { 
        "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {
            "cmd": "ipython",
            "cwd": "${file_path:${folder}}"
        }
    }
]
[
    {
        "keys": ["ctrl+alt+t"],
        "command": "terminus_open",
        "args": {
            "post_window_hooks": [
                ["carry_file_to_pane", {"direction": "down"}]
            ]
        }
    }
]

Following keybinding can be considered if one wants to use ctrl+w to close terminals.

{ 
    "keys": ["ctrl+w"], "command": "terminus_close", "context": [{ "key": "terminus_view"}]
}

User Commands in Palette

[
    {
        "caption": "Terminus: Open Default Shell at Current Location",
        "command": "terminus_open",
        "args"   : {
            "cwd": "${file_path:${folder}}"
        }
    }
]

or by passing custom cmd, say ipython

[
    {
        "caption": "Terminus: Open iPython",
        "command": "terminus_open",
        "args"   : {
            "cmd": "ipython",
            "cwd": "${file_path:${folder}}",
            "title": "iPython"
        }
    }
]
[
    {
        "caption": "Terminus: Open Default Shell in Split Tab",
        "command": "terminus_open",
        "args": {
            "post_window_hooks": [
                ["carry_file_to_pane", {"direction": "down"}]
            ]
        }
    }
]

Terminus Build System

It is possible to use Terminus as a build system. The target terminus_exec is a drop in replacement of the default target exec. It takes exact same arguments as terminus_open except that their default values are set differently.

terminus_cancel_build is used to cancel the build when user runs cancel_build triggered by ctrl+c (macOS) or ctrl+break (Windows / Linux).

The following is an example of build system define in project settings that run a python script

{
    "build_systems":
    [
        {
            "name": "Hello World",
            "target": "terminus_exec",
            "cancel": "terminus_cancel_build",
            "cmd": [
                "python", "helloworld.py"
            ],
            "working_dir": "$folder"
        }
    ]
}

The same Hello World example could be specified via a .sublime-build file.

{
    "target": "terminus_exec",
    "cancel": "terminus_cancel_build",
    "cmd": [
        "python", "helloworld.py"
    ],
    "working_dir": "$folder"
}

Instead of cmd, user could also specify shell_cmd. In macOS and linux, a bash shell will be invoked; and in Windows, cmd.exe will be invoked.

{
    "target": "terminus_exec",
    "cancel": "terminus_cancel_build",
    "shell_cmd": "python helloworld.py",
    // to directly invoke bash command
    // "shell_cmd": "echo helloworld",
    "working_dir": "$folder"
}

Alt-Left/Right to move between words (Unix)

Some programs, such as julia, do not recognize the standard keycodes for alt+left and alt+right. You could bind them to alt+b and alt+f respectively

[
    { "keys": ["alt+left"], "command": "terminus_keypress", "args": {"key": "b", "alt": true}, "context": [{"key": "terminus_view"}] },
    { "keys": ["alt+right"], "command": "terminus_keypress", "args": {"key": "f", "alt": true}, "context": [{"key": "terminus_view"}] }
]

Terminus API

window.run_command(
    "terminus_open", {
        "config_name": None,     # the shell config name, use `None` for the default config
        "cmd": None,             # the cmd to execute
        "shell_cmd": None,       # a script to execute in a shell
                                 # bash on Unix and cmd.exe on Windows
        "cwd": None,             # the working directory
        "working_dir": None,     # alias of "cwd"
        "env": {},               # extra environmental variables
        "title": None,           # title of the view, let terminal configures it if leave empty
        "panel_name": None,      # the name of the panel if terminal should be opened in panel
        "focus": True,           # focus to the panel
        "tag": None,             # a tag to identify the terminal
        "file_regex": None,      # the `file_regex` pattern in sublime build system
                                 # see https://www.sublimetext.com/docs/3/build_systems.html
        "line_regex": None,      # the `file_regex` pattern in sublime build system
        "pre_window_hooks": [],  # a list of window hooks before opening terminal
        "post_window_hooks": [], # a list of window hooks after opening terminal
        "post_view_hooks": [],   # a list of view hooks after opening terminal
        "view_settings": {},     # extra view settings which are passed to the terminus_view
        "auto_close": False,     # auto close terminal, possible values are "always" (True), "on_success", and False.
        "cancellable": False,    # allow `cancel_build` command to terminate process, only relevent to panels
        "timeit": False,         # display elapsed time when the process terminates
    }
)

The fields cmd and cwd understand Sublime Text build system variables.

    {
        "keys": ["ctrl+alt+w"], "command": "terminus_close", "context": [
            { "key": "terminus_view.tag", "operator": "equal", "operand": "YOUR_TAG" }
        ]
    }
window.run_command(
    "terminus_send_string", 
    {
        "string": "ls\n",
        "tag": "<YOUR_TAG>",       # ignore this or set it to None to send text to the first terminal found
        "visible_only": False,     # send to visible terminal only, default is `False`. Only relevent when `tag` is None
    }
)

If tag is not provided or is None, the text will be sent to the first terminal found in the current window.

FAQ

Memory issue

It is known that Terminus sometimes consumes a lot of memory after extensive use. It is because Sublime Text keeps an infinite undo stack. There is virtually no fix unless upstream provides an API to work with the undo stack. Meanwhile, users could execute Terminus: Reset to release the memory.

This issue has been fixed in Sublime Text >= 4114 and Terminus v0.3.20.

Color issue when maximizing and minimizing terminal

It is known that the color of the scrollback history will be lost when a terminal is maximized or minimized from or to the panel. There is no fix for this issue.

Terminal panel background issue

If you are using DA UI and your terminal panel has weird background color, try playing with the setting panel_background_color or panel_text_output_background_color in DA UI: Theme Settings.

{
    "panel_background_color": "$background_color"
}

Or, to keep the Find and Replace panels unchanged:

"panel_text_output_background_color": "$background_color"

Cmd.exe rendering issue in panel

Due to a upstream bug (may winpty or cmd.exe?), there may be arbitrary empty lines inserted between prompts if the panel is too short. It seems that cmder and powershell are not affected by this bug.

Acknowledgments

This package won't be possible without pyte, pywinpty and ptyprocess.

Results

Packages