- Custom actions in Windows Terminal
- Action formats
- Commands without arguments
- Commands with arguments
- Action properties
- Command
- Action
- Accepted modifiers and keys
- Modifiers
- Modifier keys
- Application-level commands
- Close window
- Find next/previous search match
- Actions
- Open the dropdown
- Open settings files
- Actions
- Toggle full screen
- Toggle focus mode
- Toggle always on top mode
- Send input
- Actions
- Tab management commands
- Close tab
- Close all other tabs
- Actions
- Close tabs after index
- Actions
- Duplicate tab
- New tab
- Actions
- Open next tab
- Actions
- Open previous tab
- Actions
- Tab search
- Open a specific tab
- Actions
- Rename tab
- Actions
- Open tab rename text box
- Change tab color
- Actions
- Open tab color picker
- Move tab
- Actions
- Window management commands
- New window
- Actions
- Rename window (Preview)
- Actions
- Open window rename dialog (Preview)
- Identify window (Preview)
- Identify windows (Preview)
- Pane management commands
- Close pane
- Move pane focus
- Actions
- Zoom a pane
- Resize a pane
- Actions
- Mark a pane as read-only
- Split a pane
- Actions
- Clipboard integration commands
- Actions
- Paste
- Scrollback commands
- Scroll up
- Actions
- Scroll down
- Actions
- Scroll up a whole page
- Scroll down a whole page
- Scroll to the earliest history
- Scroll to the latest history
- Visual adjustment commands
- Adjust font size
- Actions
- Reset font size
- Toggle pixel shader effects
- Set the color scheme
- Actions
- Unbind keys
Custom actions in Windows Terminal
As of Windows Terminal version 1.4, the keybindings array has been renamed to actions inside the settings.json file. Support for the keybindings array still exists for backward compatibility, however the terminal will not automatically rename keybindings to actions inside your settings.json file.
You can create custom actions inside Windows Terminal that give you control of how you interact with the terminal. These actions will automatically be added to the command palette.
Action formats
Actions can be structured in the following formats:
Commands without arguments
For example, this default setting uses the shortcut key alt+f4 to close the terminal window:
Commands with arguments
For example, this default setting uses the shortcut key ctrl+shift+1 to open a new tab in the terminal based on whichever profile is listed first in your dropdown menu (typically this will open the PowerShell profile):
Action properties
Actions can be constructed using the following properties.
Command
This is the command executed when the associated keys are pressed.
Property name: command
Necessity: Required
Accepts: String
This defines the key combinations used to call the command. Keys can have any number of modifiers with one key. Accepted modifiers and keys are listed below.
If the action does not have keys, it will appear in the command palette but cannot be invoked with the keyboard.
Property name: keys
Necessity: Optional
Accepts: String or array[string]
Action
This adds additional functionality to certain commands.
Property name: action
Necessity: Optional
Accepts: String
This sets the name that will appear in the command palette. If one isn’t provided, the terminal will attempt to automatically generate a name.
Property name: name
Necessity: Optional
Accepts: String
This sets the icon that displays within the command palette.
Property name: icon
Necessity: Optional
Accepts: File location as a string, or an emoji
Accepted modifiers and keys
Modifiers
ctrl+ , shift+ , alt+
The Windows key is not supported as a modifier.
Modifier keys
Type | Keys |
---|---|
Function and alphanumeric keys | f1-f24 , a-z , 0-9 |
Symbols | ` , plus , — , = , [ , ] , \ , ; , ‘ , , , . , / |
Arrow keys | down , left , right , up , pagedown , pageup , pgdn , pgup , end , home |
Action keys | tab , enter , esc , escape , space , backspace , delete , insert , app , menu |
Numpad keys | numpad_0-numpad_9 , numpad0-numpad9 , numpad_add , numpad_plus , numpad_decimal , numpad_period , numpad_divide , numpad_minus , numpad_subtract , numpad_multiply |
Note: = and plus are equivalents. The latter must not be confused with numpad_plus .
Application-level commands
Close window
This closes the current window and all tabs within it. If confirmCloseAllTabs is set to true , a confirmation dialog will appear to ensure you’d like to close all your tabs. More information on this setting can be found on the Appearance page.
Command name: closeWindow
Default binding:
This opens the search dialog box. More information on search can be found on the Search page.
Command name: find
Default binding:
Find next/previous search match
This lets you navigate through your search matches.
Command name: findMatch
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
direction | Required | «next» , «prev» | The direction to navigate through search results. |
Open the dropdown
This opens the dropdown menu.
Command name: openNewTabDropdown
Default binding:
Open settings files
This opens either the default or custom settings files. Without the target field, this will open the settings.json file.
Command name: openSettings
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
target | Optional | «settingsFile» , «defaultsFile» , «settingsUI» , «allFiles» | The settings file to open. |
The «settingsUI» value for target is only available in Windows Terminal Preview.
Toggle full screen
This allows you to switch between full screen and default window sizes.
Command name: toggleFullscreen
Default bindings:
Toggle focus mode
This allows you to enter «focus mode», which hides the tabs and title bar.
Command name: toggleFocusMode
Default binding:
Toggle always on top mode
This allows you toggle the «always on top» state of the window. When in «always on top» mode, the window will appear on top of all other non-topmost windows.
Command name: toggleAlwaysOnTop
Default binding:
Send input
Send arbitrary text input to the shell. As an example the input «text\n» will write «text» followed by a newline to the shell.
ANSI escape sequences may be used, but escape codes like \x1b must be written as \u001b . For instance «\u001b[A» will behave as if the up arrow button had been pressed.
Command name: sendInput
Default binding:
This command is not currently bound in the default settings.
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
input | Required | String | The text input to feed into the shell. |
Tab management commands
Close tab
This closes the current tab.
Command name: closeTab
Close all other tabs
This closes all tabs except for the one at an index. If no index is provided, use the focused tab’s index.
Command name: closeOtherTabs
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
index | Optional | Integer | Position of the tab to be kept open. |
Close tabs after index
This closes the tabs following the tab at an index. If no index is provided, use the focused tab’s index.
Command name: closeTabsAfter
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
index | Optional | Integer | Position of the last tab to be kept open. |
Duplicate tab
This makes a copy of the current tab and opens it.
Command name: duplicateTab
Default binding:
New tab
This creates a new tab. Without any arguments, this will open the default profile in a new tab. If an action is not specified, the default profile’s equivalent setting will be used.
Command name: newTab
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
commandline | Optional | Executable file name as a string | Executable run within the tab. |
startingDirectory | Optional | Folder location as a string | Directory in which the tab will open. |
tabTitle | Optional | String | Title of the new tab. |
index | Optional | Integer | Profile that will open based on its position in the dropdown (starting at 0). |
profile | Optional | Profile’s name or GUID as a string | Profile that will open based on its GUID or name. |
colorScheme | Optional | The name of a color scheme as a string | The scheme to use instead of the profile’s set colorScheme |
suppressApplicationTitle | Optional | true , false | When set to false , applications can change the tab title by sending title change messages. When set to true , these messages are suppressed. If not provided, the behavior is inherited from the profile’s settings. |
The «colorScheme» and «suppressApplicationTitle» parameters are only available in Windows Terminal Preview.
Open next tab
This opens the tab to the right of the current one.
Command name: nextTab
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
tabSwitcherMode | Optional | «mru» , «inOrder» , «disabled» | Move to the next tab using «tabSwitcherMode» . If no mode is provided, use the globally defined one. |
The «tabSwitcherMode» parameter is only available in Windows Terminal Preview.
Open previous tab
This opens the tab to the left of the current one.
Command name: prevTab
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
tabSwitcherMode | Optional | «mru» , «inOrder» , «disabled» | Move to the previous tab using «tabSwitcherMode» . If no mode is provided, use the globally defined one. |
The «tabSwitcherMode» parameter is only available in Windows Terminal Preview.
Tab search
This opens the tab search box.
Command name: tabSearch
Default binding:
This command is not currently bound in the default settings.
Open a specific tab
This opens a specific tab depending on the index.
Command name: switchToTab
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
index | Required | Integer | Tab that will open based on its position in the tab bar (starting at 0). |
Rename tab
This command can be used to rename a tab to a specific string.
Command name: renameTab
Default binding:
This command is not currently bound in the default settings.
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
title | Optional | String | The new title to use for this tab. If omitted, this command will revert the tab title back to its original value. |
Open tab rename text box
This command changes the tab title into a text field that lets you edit the title for the current tab. Clearing the text field will reset the tab title back to the default for the current shell instance.
Command name: openTabRenamer
Default binding:
Change tab color
This command can be used to change the color of a tab to a specific value.
Command name: setTabColor
Default binding:
This command is not currently bound in the default settings.
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
color | Optional | String, in hex format: «#rgb» or «#rrggbb» | The new color to use for this tab. If omitted, this command will revert the tab’s color back to its original value. |
Open tab color picker
This command can be used to open the color picker for the active tab. The color picker can be used to set a color for the tab at runtime.
Command name: openTabColorPicker
Default binding:
Move tab
This command moves the tab «backward» and «forward», which is equivalent to «left» and «right» in left-to-right UI.
Command name: moveTab
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
direction | Required | «backward» , «forward» | Direction in which the tab will move. |
Window management commands
New window
This creates a new window. Without any arguments, this will open the default profile in a new window (regardless of the setting of windowingBehavior ). If an action is not specified, the default profile’s equivalent setting will be used.
Command name: newWindow
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
commandline | Optional | Executable file name as a string | Executable run within the tab. |
startingDirectory | Optional | Folder location as a string | Directory in which the window will open. |
tabTitle | Optional | String | Title of the window tab. |
index | Optional | Integer | Profile that will open based on its position in the dropdown (starting at 0). |
profile | Optional | Profile’s name or GUID as a string | Profile that will open based on its GUID or name. |
suppressApplicationTitle | Optional | true , false | When set to false allows applications to change tab title by sending title change messages. When set to true true suppresses these messages. If not provided, the behavior is inheritted from profile settings. |
The «suppressApplicationTitle» parameter is only available in Windows Terminal Preview.
Rename window (Preview)
This command can be used to rename a window to a specific string.
Command name: renameWindow
Default binding:
This command is not currently bound in the default settings.
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
name | Optional | String | The new name to use for this window. If omitted, this command will revert the window name back to its original value. |
This feature is only available in Windows Terminal Preview, version 1.7+.
Open window rename dialog (Preview)
This command changes displays a popup window that lets you edit the name for the current window. Clearing the text field will reset the window name.
Command name: openWindowRenamer
Default binding:
This feature is only available in Windows Terminal Preview.
Identify window (Preview)
This pops up an overlay on the focused window that displays the window’s name and index.
Command name: identifyWindow
Default binding:
This feature is only available in Windows Terminal Preview.
Identify windows (Preview)
This pops up an overlay on all windows that displays each window’s name and index.
Command name: identifyWindows
Default binding:
This command is not currently bound in the default settings.
This feature is only available in Windows Terminal Preview.
Pane management commands
Close pane
This closes the active pane. If there aren’t any split panes, this will close the current tab. If there is only one tab open, this will close the window.
Command name: closePane
Default binding:
Move pane focus
This changes focus to a different pane depending on the direction. Setting the direction to «previous» will move focus to the most recently used pane.
Command name: moveFocus
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
direction | Required | «left» , «right» , «up» , «down» , «previous» | Direction in which the focus will move. |
Zoom a pane
This expands the focused pane to fill the entire contents of the window.
Command name: togglePaneZoom
Default binding:
Resize a pane
This changes the size of the active pane.
Command name: resizePane
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
direction | Required | «left» , «right» , «up» , «down» | Direction in which the pane will be resized. |
Mark a pane as read-only
You can mark a pane as read-only, which will prevent input from going into the text buffer. If you attempt to close or input text into a read-only pane, the terminal will display a popup warning instead.
Command name: toggleReadOnlyMode
Default bindings:
Split a pane
This halves the size of the active pane and opens another. Without any arguments, this will open the default profile in the new pane. If an action is not specified, the default profile’s equivalent setting will be used.
Command name: splitPane
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
split | Required | «vertical» , «horizontal» , «auto» | How the pane will split. «auto» will split in the direction that provides the most surface area. |
commandline | Optional | Executable file name as a string | Executable run within the pane. |
startingDirectory | Optional | Folder location as a string | Directory in which the pane will open. |
tabTitle | Optional | String | Title of the tab when the new pane is focused. |
index | Optional | Integer | Profile that will open based on its position in the dropdown (starting at 0). |
profile | Optional | Profile’s name or GUID as a string | Profile that will open based on its GUID or name. |
colorScheme | Optional | The name of a color scheme as a string | The scheme to use instead of the profile’s set colorScheme |
suppressApplicationTitle | Optional | true , false | When set to false , applications can change the tab title by sending title change messages. When set to true , these messages are suppressed. If not provided, the behavior is inherited from the profile’s settings. |
splitMode | Optional | «duplicate» | Controls how the pane splits. Only accepts «duplicate» , which will duplicate the focused pane’s profile into a new pane. |
size | Optional | Float | Specify how large the new pane should be, as a fraction of the current pane’s size. 1.0 would be «all of the current pane», and 0.0 is «None of the parent». Defaults to 0.5 . |
The «colorScheme» and «suppressApplicationTitle» parameters are only available in Windows Terminal Preview.
Clipboard integration commands
This copies the selected terminal content to your clipboard.
Command name: copy
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
singleLine | Optional | true , false | When true , the copied content will be copied as a single line. When false , newlines persist from the selected text. |
copyFormatting | Optional | true , false , «all» , «none» , «html» , «rtf» | When true , the color and font formatting of the selected text is also copied to your clipboard. When false , only plain text is copied to your clipboard. You can also specify which formats you would like to copy. When null , the global «copyFormatting» behavior is inherited. |
Paste
This inserts the content that was copied onto the clipboard.
Command name: paste
Default bindings:
Scrollback commands
Scroll up
This scrolls the screen up by the number of rows defined by «rowsToScroll» . If «rowsToScroll» is not provided, it will scroll up the amount defined by the system default, which is the same amount as mouse scrolling.
Command name: scrollUp
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
rowsToScroll | Optional | Integer | The number of rows to scroll. |
Scroll down
This scrolls the screen down by the number of rows defined by «rowsToScroll» . If «rowsToScroll» is not provided, it will scroll down the amount defined by the system default, which is the same amount as mouse scrolling.
Command name: scrollDown
Default binding:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
rowsToScroll | Optional | Integer | The number of rows to scroll. |
Scroll up a whole page
This scrolls the screen up by a whole page, which is the height of the window.
Command name: scrollUpPage
Default binding:
Scroll down a whole page
This scrolls the screen down by a whole page, which is the height of the window.
Command name: scrollDownPage
Default binding:
Scroll to the earliest history
This scrolls the screen up to the top of the input buffer.
Command name: scrollToTop
Default binding:
Scroll to the latest history
This scrolls the screen down to the bottom of the input buffer.
Command name: scrollToBottom
Default binding:
Visual adjustment commands
Adjust font size
This changes the text size by a specified point amount.
Command name: adjustFontSize
Default bindings:
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
delta | Required | Integer | Amount of size change per command invocation. |
Reset font size
This resets the text size to the default value.
Command name: resetFontSize
Default binding:
Toggle pixel shader effects
This toggles any pixel shader effects enabled in the terminal. If the user specified a valid shader with experimental.pixelShaderPath , this action will toggle that shader on/off. This will also toggle the «retro terminal effect», which is enabled with the profile setting experimental.retroTerminalEffect .
Command name: toggleShaderEffects
Default binding:
The toggleRetroEffect action is no longer available in versions 1.6 and later. It is recommended that you use toggleShaderEffects instead.
Set the color scheme
Changes the active color scheme.
Command name: setColorScheme
Actions
Name | Necessity | Accepts | Description |
---|---|---|---|
colorScheme | Required | String | The name of the color scheme to apply. |
Example binding:
Unbind keys
This unbinds the associated keys from any command.