From 8871b3a9c31c77163e40593edf1a83ce0fcff2f7 Mon Sep 17 00:00:00 2001 From: Shubham Gogna <36936863+shgogna@users.noreply.github.com> Date: Mon, 13 Dec 2021 09:40:24 -0800 Subject: [PATCH 01/80] Update dynamic-profiles.md (#438) * Update dynamic-profiles.md Create section for dynamic profile for `Developer Powershell for VS 2019` * Update dynamic-profiles.md Update name and remove `startingDirectory` * Update dynamic-profiles.md Explain a little better --- TerminalDocs/dynamic-profiles.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/TerminalDocs/dynamic-profiles.md b/TerminalDocs/dynamic-profiles.md index a7be5723..da63ed1a 100644 --- a/TerminalDocs/dynamic-profiles.md +++ b/TerminalDocs/dynamic-profiles.md @@ -138,7 +138,7 @@ Assuming that you've installed MSYS2 into `C:\\msys64`: For more details, see the Terminals section of the [MSYS2 documentation](https://www.msys2.org/docs/terminals/#windows-terminal). -### Developer Command Prompt for Visual Studio +### Developer Command Prompt for Visual Studio 2019 Assuming that you've installed [Visual Studio 2019 Professional](https://visualstudio.microsoft.com/downloads/): @@ -149,3 +149,22 @@ Assuming that you've installed [Visual Studio 2019 Professional](https://visuals "startingDirectory": "%USERPROFILE%" } ``` + +### Developer Powershell for Visual Studio 2019 + +Assuming that you've installed [Visual Studio 2019 Enterprise](https://visualstudio.microsoft.com/downloads/): + +```json +{ + "name": "Developer Powershell for VS 2019", + "commandline": "powershell.exe -noe -c \"&{Import-Module \"\"\"C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/Tools/Microsoft.VisualStudio.DevShell.dll\"\"\"; Enter-VsDevShell 994a9d58}\"" +} +``` + +An easy way to figure out the `commandline` to use for your Visual Studio instance is: +1. Find the shortcut to `Developer Powershell for VS 2019` in the start menu +2. Right-click and select `Open File Location` +3. Right-click and select `Properties` on the shortcut +4. Inspect the `Target` field. It will be some value like `C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -noe -c "&{Import-Module """C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell 994a9d58}"` +5. Use `Target` field value to update the file path for `Import-Module` in the profile `commandline` +6. Use `Target` field value to update the unique instance ID used with the `Enter-VsDevShell` command in the profile `commandline` From 8527dba7d5bbbc27ba33f2a2cd1a9f05ac6a6567 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Mon, 13 Dec 2021 14:18:02 -0800 Subject: [PATCH 02/80] Update VS version info in 3rd party (#462) --- TerminalDocs/dynamic-profiles.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/TerminalDocs/dynamic-profiles.md b/TerminalDocs/dynamic-profiles.md index da63ed1a..93f26070 100644 --- a/TerminalDocs/dynamic-profiles.md +++ b/TerminalDocs/dynamic-profiles.md @@ -138,33 +138,40 @@ Assuming that you've installed MSYS2 into `C:\\msys64`: For more details, see the Terminals section of the [MSYS2 documentation](https://www.msys2.org/docs/terminals/#windows-terminal). -### Developer Command Prompt for Visual Studio 2019 +### Developer Command Prompt for Visual Studio -Assuming that you've installed [Visual Studio 2019 Professional](https://visualstudio.microsoft.com/downloads/): +Assuming that you've installed [Visual Studio](/visualstudio/install/install-visual-studio): ```json { - "name": "Developer Command Prompt for VS 2019", + "name": "Developer Command Prompt", "commandline": "cmd.exe /k \"C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/Common7/Tools/VsDevCmd.bat\"", "startingDirectory": "%USERPROFILE%" } ``` -### Developer Powershell for Visual Studio 2019 +> [!NOTE] +> Visual Studio’s “Developer Powershell” and “Developer Command Prompt” include shell environment variables and tools settings that would not be available in the default Command Prompt or Powershell instance. -Assuming that you've installed [Visual Studio 2019 Enterprise](https://visualstudio.microsoft.com/downloads/): +### Developer Powershell for Visual Studio + +Assuming that you've installed [Visual Studio](/visualstudio/install/install-visual-studio): ```json { - "name": "Developer Powershell for VS 2019", + "name": "Developer Powershell", "commandline": "powershell.exe -noe -c \"&{Import-Module \"\"\"C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/Tools/Microsoft.VisualStudio.DevShell.dll\"\"\"; Enter-VsDevShell 994a9d58}\"" } ``` -An easy way to figure out the `commandline` to use for your Visual Studio instance is: +To find the `commandline` path to use in the Windows Terminal settings for your Visual Studio instance: + 1. Find the shortcut to `Developer Powershell for VS 2019` in the start menu 2. Right-click and select `Open File Location` 3. Right-click and select `Properties` on the shortcut 4. Inspect the `Target` field. It will be some value like `C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -noe -c "&{Import-Module """C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell 994a9d58}"` 5. Use `Target` field value to update the file path for `Import-Module` in the profile `commandline` 6. Use `Target` field value to update the unique instance ID used with the `Enter-VsDevShell` command in the profile `commandline` + +> [!NOTE] +> Visual Studio’s “Developer Powershell” and “Developer Command Prompt” include shell environment variables and tools settings that would not be available in the default Command Prompt or Powershell instance. From e5ac3e19729fdd7bbabfce1a98b4dec1adc59f9b Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Wed, 22 Dec 2021 10:10:23 -0800 Subject: [PATCH 03/80] Update custom prompt tutorial w latest OMP steps (#467) --- .../images/ohmyposh-terminal-prompt.png | Bin 0 -> 31468 bytes TerminalDocs/tutorials/custom-prompt-setup.md | 158 ++++++++---------- 2 files changed, 74 insertions(+), 84 deletions(-) create mode 100644 TerminalDocs/images/ohmyposh-terminal-prompt.png diff --git a/TerminalDocs/images/ohmyposh-terminal-prompt.png b/TerminalDocs/images/ohmyposh-terminal-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ba6825702ff3ad47186623091e623f1786777 GIT binary patch literal 31468 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 N-!r&dapzgc{{sB2sS5xA literal 0 HcmV?d00001 diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 553a7ac5..318c121d 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -3,148 +3,138 @@ title: Windows Terminal Custom Prompt Setup description: In this tutorial, you learn how to set up Oh My Posh and Terminal-Icons in Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/08/2021 +ms.date: 12/20/2021 ms.topic: tutorial #Customer intent: As a developer or IT admin, I want to set up a customized command line experience using Oh My Posh, Terminal-Icons, and posh-git in my Windows Terminal. --- -# Tutorial: Set up a custom prompt in Windows Terminal using Oh My Posh, Terminal-Icons, and Posh Git +# Tutorial: Set up a custom prompt for PowerShell or WSL with Oh My Posh -[Oh My Posh](https://ohmyposh.dev) provides theme capabilities for a customized command prompt experience providing Git status color-coding and prompts. [Terminal-Icons](https://github.com/devblackops/Terminal-Icons) adds file and folder icons when displaying items in the terminal. - -![Windows Terminal Custom Prompt](./../images/custom-prompt.png) +This tutorial provides some resources and direction to help you customize your command prompt for PowerShell or Windows Subsystem for Linux (WSL) using [Oh My Posh](https://ohmyposh.dev). Oh My Posh provides theme capabilities for a fully customized command prompt experience providing Git status color-coding and prompts. In this tutorial, you learn how to: > [!div class="checklist"] > -> * Set up Oh My Posh in PowerShell -> * Set up Oh My Posh in Ubuntu/WSL -> * Set up Terminal-Icons in PowerShell -> * Add missing glyphs +> * [Install a Nerd Font](#install-a-nerd-font) +> * [Customize your PowerShell prompt with Oh My Posh](#customize-your-powershell-prompt-with-oh-my-posh) +> * [Customize your WSL prompt with Oh My Posh](#customize-your-wsl-prompt-with-oh-my-posh) +> * [Use Terminal-Icons to add missing folder or file icons](#use-terminal-icons-to-add-missing-folder-or-file-icons) + +![Windows Terminal Custom Prompt](./../images/custom-prompt.png) ## Install a Nerd Font -Oh My Posh and Terminal-Icons use glyphs in order to style the prompt. If your font does not include the appropriate glyphs, you may see several Unicode replacement characters '▯' throughout your prompt. In order to see all of the glyphs in your terminal, you should install a [Nerd Font](https://nerdfonts.com). (If you'd like a font that looks like Cascadia Code, the Caskaydia Cove Nerd Font was built from the Cascadia Code repository by a community member.) +Customized command prompts often use glyphs (a graphic symbol) in order to style the prompt. If your font does not include the appropriate glyphs, you may see several Unicode replacement characters '▯' throughout your prompt. In order to see all of the glyphs in your terminal, we recommend installing a [Nerd Font](https://www.nerdfonts.com/font-downloads). + +If you'd like a font that looks like Cascadia Code, the Caskaydia Cove Nerd Font was built from the Cascadia Code repository by a community member.) After downloading, you will need to unzip and install the font on your system. ([How to add a new font to Windows](https://support.microsoft.com/en-us/office/add-a-font-b7c5f17c-4426-4b53-967f-455339c564c1)). -### Install Oh My Posh +To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Terminal settings UI by selecting **Settings** (Ctrl+,) from your Windows Terminal dropdown menu. Select the profile where you wish to apply the font, PowerShell for example, and then the **Appearance** tab. In the **Font face** drop-down menu, select *CaskaydiaCove Nerd Font* or whichever Nerd font you would like to use with your customized prompt. -Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. +> [!NOTE] +> If you want to use a terminal font that does not support glyph icons, such as [Cascadia Code PL](https://github.com/microsoft/cascadia-code/releases), you may consider using an Oh My Posh theme that contains the `minimal` function, indicating that additional icons aren't required. -### Install for PowerShell only +## Customize your PowerShell prompt with Oh My Posh -If you are only interested in using Oh My Posh with PowerShell, you can follow these installation instructions. If you want to use Oh My Posh for adding themes to both PowerShell and WSL command lines, skip down to the winget installation instructions below. +Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -1. Using PowerShell, install Oh My Posh with the command: +If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](/package-manager/winget/), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). - ```powershell - Install-Module oh-my-posh -Scope CurrentUser - ``` +### Install Oh My Posh for PowerShell -2. Browse the prompt themes, with the command: +To customize your PowerShell prompt, you can install Oh My Posh using the [PowerShell install-module](/powershell/module/powershellget/install-module). Enter the command: - ```powershell - Get-PoshThemes - ``` +```powershell +Install-Module oh-my-posh -Scope CurrentUser +``` -3. Choose a theme and update your PowerShell profile with this command. (You can replace `notepad` with the text editor of your choice.) +This will install: - ```powershell - notepad $PROFILE - ``` +- `oh-my-posh.exe`: The Windows executable +- `themes`: The latest [Oh My Posh themes](https://ohmyposh.dev/docs/themes) -4. Add the following to the end of your PowerShell profile file to set the `paradox` theme. (Replace `paradox` with the theme of your choice.) +You may also want to enter this command to ensure you have the latest updates: `Update-Module oh-my-posh`. - ```powershell - Import-Module oh-my-posh - Set-PoshPrompt -Theme paradox - ``` +> [!NOTE] +> If you are more familiar with the [Scoop](https://scoop.sh/) installer or [Chocolatey](https://chocolatey.org/) package manager, these can also be used for installing on Windows, just follow the instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). -Now, each new PowerShell instance will start by importing Oh My Posh and setting your command line theme. +### Choose and apply a PowerShell prompt theme -> [!NOTE] -> This is not your Windows Terminal profile. Your PowerShell profile is a script that runs every time PowerShell starts. [Learn more about PowerShell profiles](/powershell/module/microsoft.powershell.core/about/about_profiles). +To browse the Oh My Posh prompt themes, use the command: -### Install for PowerShell or WSL using Winget +```powershell +Get-PoshThemes +``` -If you would like to use Oh My Posh to style both Windows and Windows Subsystem for Linux (WSL) command lines, we recommend using the [Windows Package Manager](/windows/package-manager). You can [install winget](https://github.com/microsoft/winget-cli#installing-the-client), the package manager client, using the App Installer from the Microsoft Store. (This may require an Insiders build if you're running Windows 10.) +Choose a theme and update your PowerShell profile with this command. (You can replace `notepad` with the text editor of your choice.) -1. Using PowerShell, install Oh My Posh using winget with the command: +```powershell +notepad $PROFILE +``` - ```powershell - winget install JanDeDobbeleer.OhMyPosh - ``` +Add the following to the end of your PowerShell profile file to set the `paradox` theme. (Replace `paradox` with the theme of your choice.) - This will install: - * oh-my-posh.exe - Windows executable, added to your $PATH. - * oh-my-posh-wsl - Linux executable, added to your $PATH for use in the WSL. - * themes - The latest Oh My Posh themes. +```powershell +Import-Module oh-my-posh +Set-PoshPrompt -Theme paradox +``` -2. Using PowerShell, browse the prompt themes by entering: +Now, each new PowerShell instance will start by importing Oh My Posh and setting your command line theme. - ```powershell - Get-ChildItem -Path "~\AppData\Local\Programs\oh-my-posh\themes\*" -Include '*.omp.json' | Sort-Object Name | ForEach-Object -Process { - $esc = [char]27 - Write-Host "" - Write-Host "$esc[1m$($_.BaseName)$esc[0m" - Write-Host "" - oh-my-posh --config $($_.FullName) --pwd $PWD - Write-Host "" - } - ``` +> [!NOTE] +> This is not your Windows Terminal profile. Your PowerShell profile is a script that runs every time PowerShell starts. [Learn more about PowerShell profiles](/powershell/module/microsoft.powershell.core/about/about_profiles). - You can also browse the [prompt themes in the Oh My Posh docs](https://ohmyposh.dev/docs/themes). +## Customize your WSL prompt with Oh My Posh -3. Choose a theme and update your PowerShell `$PROFILE` file and WSL distribution `.bashrc` file. +Oh My Posh now allows you to customize WSL prompts, just like you would a PowerShell prompt using built-in themes. - For PowerShell, open your profile file with `notepad $PROFILE` and add the following: +### Install Oh My Posh for WSL - ```powershell - oh-my-posh --init --shell pwsh --config ~/AppData/Local/Programs/oh-my-posh/themes/jandedobbeleer.omp.json | Invoke-Expression - ``` +We recommend installing Oh My Posh for WSL, whether using Bash, Zsh, or something else, by following the [Linux install guide in the Oh My Posh docs](https://ohmyposh.dev/docs/linux). - Once added, reload your profile for the changes to take effect. +Currently the recommended path for customizing WSL prompts with Oh My Posh uses the [Homebrew package manager](https://brew.sh/) for installation. (Homebrew works with WSL now!) When installing Homebrew for Linux, be sure to follow [Next steps](https://docs.brew.sh/Homebrew-on-Linux#install) instructions to add Homebrew to your PATH and to your bash shell profile script. -4. For your WSL distribution, open your profile file with `nano .bashrc` and add the following. (Replacing `paradox.omp.json` with the theme of your choice. You can view the list in the `.poshthemes` folder that was added to your distributions directory.) +Homebrew will install: - ```bash - eval "$(oh-my-posh-wsl --init --shell bash --config ~/.poshthemes/paradox.omp.json)" - ``` +- `oh-my-posh` - Executable, added to /usr/local/bin +- `themes` - The latest Oh My Posh themes -Learn more by visiting the [Oh My Posh documentation](https://ohmyposh.dev/docs/windows). +### Choose and apply a WSL prompt theme -## Set your font in Windows Terminal settings +The Oh My Posh themes will be found in the oh-my-posh directory as JSON files. You can find it by entering `cd $(brew --prefix oh-my-posh)`, then just `cd themes` and `ls` for the list. For Ubuntu-20.04 running via WSL, the path is likely to be something like: `\\wsl.localhost\Ubuntu-20.04\home\linuxbrew\.linuxbrew\Cellar\oh-my-posh\6.34.1\themes`. You can also view what the themes look like in the Oh My Posh docs: [Themes](https://ohmyposh.dev/docs/themes). -To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Terminal settings UI by selecting **Settings** (Ctrl+,) from your Windows Terminal dropdown menu. Select the Windows PowerShell profile, and then the **Appearance** tab. In the **Font face** drop-down menu, select *CaskaydiaCove Nerd Font* or whichever Nerd font you would like to use with your customized prompt. +To use a theme, copy it from the `themes` folder to your `$Home` folder, then add this line to the bottom of the `.profile` file found in your `$Home` folder: - +```bash +eval "$(oh-my-posh --init --shell bash --config ~/jandedobbeleer.omp.json)" +``` -> [!NOTE] -> If you decide to use [Cascadia Code PL](https://github.com/microsoft/cascadia-code/releases) as your terminal font, you may consider using an Oh My Posh theme that contains the `minimal` function, indicating that additional icons aren't required. +You can replace `jandedobbeleer.omp.json` with the name of whichever theme you prefer to use as long as it's copied to your `$Home` folder. -## Set up posh-git in PowerShell +Alternatively, if you are using oh-my-posh in both Windows with PowerShell and with WSL, you can share your PowerShell theme with WSL by pointing to a theme in your Windows user's home folder. In your WSL distribution's `.profile` path, replace ~ with the path: `/mnt/c/Users/`. Replacing `` with your own Windows username. You may also need to add `$env:POSH_PATH` to your $PATH if you have only installed the Oh My Posh executable for PowerShell. -Posh-git adds a Git status summary to your Windows Terminal prompt with information and tab completion for Git commands, parameters, remotes and branch names. + -1. Install posh-git using PowerShell with the command: +You can [customize the Oh My Posh themes](https://ohmyposh.dev/docs/linux#customize) if desired. - ```powershell - Install-Module posh-git -Scope CurrentUser - ``` +## Use Terminal-Icons to add missing folder or file icons -2. Update your PowerShell profile file: `notepad $PROFILE`. (You can replace nodepad with the text editor of your choice). +[Terminal-Icons](https://github.com/devblackops/Terminal-Icons) is a PowerShell module that adds file and folder icons that may be missing when displaying files or folders in Windows Terminal, looking up their appropriate icon based on name or extension. It attempts to use icons for well-known files/folders, but falls back to a generic file or folder icon if one is not found. - In your PowerShell profile, add the following to the end of the file: +To install Terminal-Icons with PowerShell, use the command: - ```powershell - Import-Module posh-git - ``` +```powershell +PS> Install-Module -Name Terminal-Icons -Repository PSGallery +``` -Your PowerShell command prompt will now display a status whenever you are inside of a Git directory. Learn more in the [posh-git repo on GitHub](https://github.com/dahlbyk/posh-git#using-posh-git). +For more information, including usage and commands, see the [Terminal-Icons](https://github.com/devblackops/Terminal-Icons) repo on GitHub. ## Additional resources * [Oh my Posh documentation](https://ohmyposh.dev) * [Terminal-Icons Repository](https://github.com/devblackops/Terminal-Icons) +* [Posh-Git documentation](https://github.com/dahlbyk/posh-git#overview): Posh-Git is a PowerShell module that integrates Git and PowerShell by providing Git status summary information that can be displayed in the PowerShell prompt. +* [PowerLine documentation](https://powerline.readthedocs.io/en/master/overview.html): Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile. \ No newline at end of file From 0a19d0b676447201956111ee22a5861a5989f515 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Wed, 22 Dec 2021 11:24:12 -0800 Subject: [PATCH 04/80] Add themes link --- TerminalDocs/tutorials/custom-prompt-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 318c121d..f24c3edf 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -88,7 +88,7 @@ Now, each new PowerShell instance will start by importing Oh My Posh and setting ## Customize your WSL prompt with Oh My Posh -Oh My Posh now allows you to customize WSL prompts, just like you would a PowerShell prompt using built-in themes. +Oh My Posh now allows you to customize WSL prompts, just like you would a PowerShell prompt using [built-in themes](https://ohmyposh.dev/docs/themes). ### Install Oh My Posh for WSL @@ -137,4 +137,4 @@ For more information, including usage and commands, see the [Terminal-Icons](htt * [Oh my Posh documentation](https://ohmyposh.dev) * [Terminal-Icons Repository](https://github.com/devblackops/Terminal-Icons) * [Posh-Git documentation](https://github.com/dahlbyk/posh-git#overview): Posh-Git is a PowerShell module that integrates Git and PowerShell by providing Git status summary information that can be displayed in the PowerShell prompt. -* [PowerLine documentation](https://powerline.readthedocs.io/en/master/overview.html): Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile. \ No newline at end of file +* [PowerLine documentation](https://powerline.readthedocs.io/en/master/overview.html): Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile. From ddd84324b5d611e7f5169c48ed020c9f2fb59c5a Mon Sep 17 00:00:00 2001 From: Alma Jenks Date: Wed, 22 Dec 2021 18:59:15 -0800 Subject: [PATCH 05/80] Bulk fix - Removing .localizationpriority (#469) --- TerminalDocs/command-palette.md | 1 - TerminalDocs/customize-settings/actions.md | 1 - TerminalDocs/customize-settings/appearance.md | 1 - TerminalDocs/customize-settings/color-schemes.md | 1 - TerminalDocs/customize-settings/interaction.md | 1 - TerminalDocs/customize-settings/profile-advanced.md | 1 - TerminalDocs/customize-settings/profile-appearance.md | 1 - TerminalDocs/customize-settings/profile-general.md | 1 - TerminalDocs/customize-settings/rendering.md | 1 - TerminalDocs/customize-settings/startup.md | 1 - TerminalDocs/index.md | 1 - TerminalDocs/install.md | 1 - TerminalDocs/samples.md | 1 - TerminalDocs/tips-and-tricks.md | 1 - TerminalDocs/troubleshooting.md | 1 - 15 files changed, 15 deletions(-) diff --git a/TerminalDocs/command-palette.md b/TerminalDocs/command-palette.md index 5038b60b..c3f86e4b 100644 --- a/TerminalDocs/command-palette.md +++ b/TerminalDocs/command-palette.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 02/25/2021 ms.topic: how-to -ms.localizationpriority: high --- # How to use the command palette in Windows Terminal diff --git a/TerminalDocs/customize-settings/actions.md b/TerminalDocs/customize-settings/actions.md index 33fa50eb..065f07de 100644 --- a/TerminalDocs/customize-settings/actions.md +++ b/TerminalDocs/customize-settings/actions.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/15/2021 ms.topic: how-to -ms.localizationpriority: high --- # Custom actions in Windows Terminal diff --git a/TerminalDocs/customize-settings/appearance.md b/TerminalDocs/customize-settings/appearance.md index 43aac31f..2afca423 100644 --- a/TerminalDocs/customize-settings/appearance.md +++ b/TerminalDocs/customize-settings/appearance.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/08/2021 ms.topic: how-to -ms.localizationpriority: high --- # Appearance settings in Windows Terminal diff --git a/TerminalDocs/customize-settings/color-schemes.md b/TerminalDocs/customize-settings/color-schemes.md index 9ceda390..4519d054 100644 --- a/TerminalDocs/customize-settings/color-schemes.md +++ b/TerminalDocs/customize-settings/color-schemes.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 04/14/2021 ms.topic: how-to -ms.localizationpriority: high --- # Color schemes in Windows Terminal diff --git a/TerminalDocs/customize-settings/interaction.md b/TerminalDocs/customize-settings/interaction.md index e6c239d7..85953bc4 100644 --- a/TerminalDocs/customize-settings/interaction.md +++ b/TerminalDocs/customize-settings/interaction.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/05/2021 ms.topic: how-to -ms.localizationpriority: high --- # Interaction settings in Windows Terminal diff --git a/TerminalDocs/customize-settings/profile-advanced.md b/TerminalDocs/customize-settings/profile-advanced.md index 30edab8c..7955ac49 100644 --- a/TerminalDocs/customize-settings/profile-advanced.md +++ b/TerminalDocs/customize-settings/profile-advanced.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/19/2021 ms.topic: how-to -ms.localizationpriority: high --- # Advanced profile settings in Windows Terminal diff --git a/TerminalDocs/customize-settings/profile-appearance.md b/TerminalDocs/customize-settings/profile-appearance.md index 4c4b3c9a..c1600bbc 100644 --- a/TerminalDocs/customize-settings/profile-appearance.md +++ b/TerminalDocs/customize-settings/profile-appearance.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/08/2021 ms.topic: how-to -ms.localizationpriority: high --- # Appearance profile settings in Windows Terminal diff --git a/TerminalDocs/customize-settings/profile-general.md b/TerminalDocs/customize-settings/profile-general.md index 1de941b4..68e99e60 100644 --- a/TerminalDocs/customize-settings/profile-general.md +++ b/TerminalDocs/customize-settings/profile-general.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 04/14/2021 ms.topic: how-to -ms.localizationpriority: high --- # General profile settings in Windows Terminal diff --git a/TerminalDocs/customize-settings/rendering.md b/TerminalDocs/customize-settings/rendering.md index 0c9097f3..d25ccd7e 100644 --- a/TerminalDocs/customize-settings/rendering.md +++ b/TerminalDocs/customize-settings/rendering.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 04/14/2021 ms.topic: how-to -ms.localizationpriority: high --- # Rendering settings in Windows Terminal diff --git a/TerminalDocs/customize-settings/startup.md b/TerminalDocs/customize-settings/startup.md index 4ccbf14b..cbf3ac03 100644 --- a/TerminalDocs/customize-settings/startup.md +++ b/TerminalDocs/customize-settings/startup.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/08/2021 ms.topic: how-to -ms.localizationpriority: high --- # Startup settings in Windows Terminal diff --git a/TerminalDocs/index.md b/TerminalDocs/index.md index 7c5c6fe0..76a73776 100644 --- a/TerminalDocs/index.md +++ b/TerminalDocs/index.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 09/22/2020 ms.topic: overview -ms.localizationpriority: high --- # What is Windows Terminal? diff --git a/TerminalDocs/install.md b/TerminalDocs/install.md index 2dbd3c36..40021659 100644 --- a/TerminalDocs/install.md +++ b/TerminalDocs/install.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/04/2021 ms.topic: quickstart -ms.localizationpriority: high --- # Install and get started setting up Windows Terminal diff --git a/TerminalDocs/samples.md b/TerminalDocs/samples.md index 254a66d9..01a37509 100644 --- a/TerminalDocs/samples.md +++ b/TerminalDocs/samples.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 11/16/2021 ms.topic: samples -ms.localizationpriority: medium --- # Windows Terminal sample code diff --git a/TerminalDocs/tips-and-tricks.md b/TerminalDocs/tips-and-tricks.md index be60b203..552826d1 100644 --- a/TerminalDocs/tips-and-tricks.md +++ b/TerminalDocs/tips-and-tricks.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/08/2021 ms.topic: how-to -ms.localizationpriority: high --- # Windows Terminal tips and tricks diff --git a/TerminalDocs/troubleshooting.md b/TerminalDocs/troubleshooting.md index dbaaf965..109ddf24 100644 --- a/TerminalDocs/troubleshooting.md +++ b/TerminalDocs/troubleshooting.md @@ -5,7 +5,6 @@ author: cinnamon-msft ms.author: cinnamon ms.date: 10/08/2021 ms.topic: overview -ms.localizationpriority: high --- # Troubleshooting in Windows Terminal From 141f84e03a59ae683c8c32238d5e3386acb32b13 Mon Sep 17 00:00:00 2001 From: Jason Howell <5067358+JasonWHowell@users.noreply.github.com> Date: Tue, 4 Jan 2022 10:01:19 -0800 Subject: [PATCH 06/80] Testing image (#474) * Update new-tab-same-directory.md * Update new-tab-same-directory.md --- TerminalDocs/tutorials/new-tab-same-directory.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 26573cf8..3dcda355 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -128,5 +128,5 @@ To open a new pane with the same path (and profile) as the currently active term the above actions are also available on the tab context menu, under the entries "Duplicate Tab" and "Split Pane". -[!duplicate-tab-same-cwd](../images/duplicate-tab-same-cwd.gif) -[!split-pane-same-cwd](../images/split-pane-same-cwd.gif) +![Image duplicate-tab-same-cwd](../images/duplicate-tab-same-cwd.gif) +![Image split-pane-same-cwd](../images/split-pane-same-cwd.gif) From f05111cc4158e4893324e530720bd6adb6fd37b2 Mon Sep 17 00:00:00 2001 From: Schuyler Rosefield Date: Tue, 4 Jan 2022 13:02:56 -0500 Subject: [PATCH 07/80] Include note on how to save the directory of a pane (#473) --- TerminalDocs/customize-settings/startup.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TerminalDocs/customize-settings/startup.md b/TerminalDocs/customize-settings/startup.md index cbf3ac03..c9022350 100644 --- a/TerminalDocs/customize-settings/startup.md +++ b/TerminalDocs/customize-settings/startup.md @@ -76,6 +76,8 @@ Note: Currently, Windows Terminal will save the following information: - The tab layout of each window, including the layout and profile of each pane, but not any contents of those panes +- If your shell is configured to report the [current working directory](../tutorials/new-tab-same-directory.md) that will be saved as well + **Property name:** `firstWindowPreference` **Necessity:** Optional From 66afc3d525c2e7656bcfa3b35e73439bab1492a8 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 6 Jan 2022 14:45:18 -0800 Subject: [PATCH 08/80] Add decimal value note for pane size Resolves https://github.com/MicrosoftDocs/terminal/issues/276 --- TerminalDocs/command-line-arguments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index 96732c29..7c0284a3 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -60,7 +60,7 @@ Below is the full list of supported commands and options for the `wt` command li | `split-pane`, `sp` | `--startingDirectory, -d starting-directory` | Creates a new split window pane based on the assigned starting directory path. If this parameter is not assigned, the default starting directory will be used. | Directory path | | `split-pane`, `sp` | `--title` | Creates a new split window pane with the assigned title. | Text to use as the tab title | | `split-pane`, `sp` | `--tabColor` | Creates a new split window pane with the assigned tab color. | Hex color as #RGB or #RRGGBB | -| `split-pane`, `sp` | `--size, -s size`| Creates a new split window pane with the assigned size. | Float that specifies the portion of the parent pane to use | +| `split-pane`, `sp` | `--size, -s size`| Creates a new split window pane with the assigned size. | Float that specifies the portion of the parent pane to use represented by a decimal. For example, `.4` to represent 40% of the parent pane. | | `split-pane`, `sp` | `commandline` | Creates a new split window pane based on the assigned command line. | Executable with optional commands | | `split-pane`, `sp` | `--duplicate, -D` | Creates a new split window pane that is a duplicate of the current pane. | N/A. No additional values to assign. | From 037876dddb2770d4d337e1ccd75f2407a04bae38 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 6 Jan 2022 16:06:21 -0800 Subject: [PATCH 09/80] Remove VS PowerShell and CMD for 3rd party ..these are now officially dynamic profiles.. so no longer need to be added as 3rd party as of Terminal v. 1.12. :) --- TerminalDocs/dynamic-profiles.md | 40 +------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/TerminalDocs/dynamic-profiles.md b/TerminalDocs/dynamic-profiles.md index 93f26070..42b95951 100644 --- a/TerminalDocs/dynamic-profiles.md +++ b/TerminalDocs/dynamic-profiles.md @@ -3,7 +3,7 @@ title: Windows Terminal Dynamic Profiles description: Learn about dynamic profiles in Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 08/30/2021 +ms.date: 01/06/2022 ms.topic: conceptual --- @@ -137,41 +137,3 @@ Assuming that you've installed MSYS2 into `C:\\msys64`: ``` For more details, see the Terminals section of the [MSYS2 documentation](https://www.msys2.org/docs/terminals/#windows-terminal). - -### Developer Command Prompt for Visual Studio - -Assuming that you've installed [Visual Studio](/visualstudio/install/install-visual-studio): - -```json -{ - "name": "Developer Command Prompt", - "commandline": "cmd.exe /k \"C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/Common7/Tools/VsDevCmd.bat\"", - "startingDirectory": "%USERPROFILE%" -} -``` - -> [!NOTE] -> Visual Studio’s “Developer Powershell” and “Developer Command Prompt” include shell environment variables and tools settings that would not be available in the default Command Prompt or Powershell instance. - -### Developer Powershell for Visual Studio - -Assuming that you've installed [Visual Studio](/visualstudio/install/install-visual-studio): - -```json -{ - "name": "Developer Powershell", - "commandline": "powershell.exe -noe -c \"&{Import-Module \"\"\"C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/Tools/Microsoft.VisualStudio.DevShell.dll\"\"\"; Enter-VsDevShell 994a9d58}\"" -} -``` - -To find the `commandline` path to use in the Windows Terminal settings for your Visual Studio instance: - -1. Find the shortcut to `Developer Powershell for VS 2019` in the start menu -2. Right-click and select `Open File Location` -3. Right-click and select `Properties` on the shortcut -4. Inspect the `Target` field. It will be some value like `C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -noe -c "&{Import-Module """C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell 994a9d58}"` -5. Use `Target` field value to update the file path for `Import-Module` in the profile `commandline` -6. Use `Target` field value to update the unique instance ID used with the `Enter-VsDevShell` command in the profile `commandline` - -> [!NOTE] -> Visual Studio’s “Developer Powershell” and “Developer Command Prompt” include shell environment variables and tools settings that would not be available in the default Command Prompt or Powershell instance. From ca7677a3b7fbff2d672c09b12dd031d8c9f4eeee Mon Sep 17 00:00:00 2001 From: mattwojo Date: Fri, 7 Jan 2022 11:22:27 -0800 Subject: [PATCH 10/80] Add faq for psreadline --- TerminalDocs/faq.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index b3d6c744..6e5acb9f 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -3,7 +3,7 @@ metadata: title: Windows Terminal FAQ description: Frequently asked questions about Windows Terminal, such as how to start terminal in administrator mode, how to save a terminal session, and more. ms.topic: troubleshooting - ms.date: 12/09/2021 + ms.date: 01/06/2022 ms.author: mattwoj author: mattwojo manager: jken @@ -96,6 +96,17 @@ sections: ![Screenshot of filing an issue in terminal repo](./images/file-issue.png) + - question: How can I customize PowerShell prompt colors using PSReadLine? + answer: | + The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption.md#example-4--set-multiple-color-options). + + ```powershell + Set-PSReadLineOption -Colors @{ + Number = 'Magenta' + Member = 'DarkGray' + } + ``` + # - question: Is there a way to sync your terminal settings across devices? # answer: | # TBD @@ -103,7 +114,3 @@ sections: # - question: Can we expect a status bar on the bottom of Windows Terminal? # answer: | # TBD - - # - question: TBD - # answer: | - # TBD \ No newline at end of file From cc08ae4dc3bab9b440b82a1c06a7f5ea9a27cb2d Mon Sep 17 00:00:00 2001 From: mattwojo Date: Fri, 7 Jan 2022 11:30:37 -0800 Subject: [PATCH 11/80] Fix formatting --- TerminalDocs/faq.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index 6e5acb9f..4cda978f 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -96,8 +96,8 @@ sections: ![Screenshot of filing an issue in terminal repo](./images/file-issue.png) - - question: How can I customize PowerShell prompt colors using PSReadLine? - answer: | + - question: How can I customize PowerShell prompt colors using PSReadLine? + answer: | The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption.md#example-4--set-multiple-color-options). ```powershell From 7c6b1fb7d458710c8694d5478d7b1998d4142e18 Mon Sep 17 00:00:00 2001 From: mattwojo Date: Fri, 7 Jan 2022 11:37:52 -0800 Subject: [PATCH 12/80] Remove space before code block --- TerminalDocs/faq.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index 4cda978f..2b8048a6 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -99,7 +99,6 @@ sections: - question: How can I customize PowerShell prompt colors using PSReadLine? answer: | The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption.md#example-4--set-multiple-color-options). - ```powershell Set-PSReadLineOption -Colors @{ Number = 'Magenta' From 77f489ef883ff370cc29dcf6c85ea672f323d774 Mon Sep 17 00:00:00 2001 From: mattwojo Date: Fri, 7 Jan 2022 11:48:57 -0800 Subject: [PATCH 13/80] Remove code block --- TerminalDocs/faq.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index 2b8048a6..64b6f47a 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -99,12 +99,6 @@ sections: - question: How can I customize PowerShell prompt colors using PSReadLine? answer: | The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption.md#example-4--set-multiple-color-options). - ```powershell - Set-PSReadLineOption -Colors @{ - Number = 'Magenta' - Member = 'DarkGray' - } - ``` # - question: Is there a way to sync your terminal settings across devices? # answer: | From 82364b6ca17eddadb25b61bd3782ab818f3b57ce Mon Sep 17 00:00:00 2001 From: mattwojo Date: Fri, 7 Jan 2022 11:55:54 -0800 Subject: [PATCH 14/80] Fix link --- TerminalDocs/faq.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index 64b6f47a..d2c260dd 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -98,7 +98,7 @@ sections: - question: How can I customize PowerShell prompt colors using PSReadLine? answer: | - The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption.md#example-4--set-multiple-color-options). + The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption#example-4--set-multiple-color-options). # - question: Is there a way to sync your terminal settings across devices? # answer: | From 7cd48bcb462a754b690e28586b551f770bd1f35c Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Fri, 7 Jan 2022 16:19:27 -0800 Subject: [PATCH 15/80] startingDirectory path for WSL no longer requires prefix --- TerminalDocs/troubleshooting.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/TerminalDocs/troubleshooting.md b/TerminalDocs/troubleshooting.md index 109ddf24..996c7fc8 100644 --- a/TerminalDocs/troubleshooting.md +++ b/TerminalDocs/troubleshooting.md @@ -20,11 +20,17 @@ If you click on the "settings" button in the dropdown, the Terminal will attempt ## Set your WSL distribution to start in the home `~` directory when launched -By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\`). This is a Windows path. For WSL, however, you may want to use the WSL home path instead. `startingDirectory` only accepts a Windows-style path, so setting it to start within a WSL distribution requires a prefix. +By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\`). This is a Windows path. For WSL distributions, the file systems are now directly referenced, as of Windows Terminal [version 1.12.3472.0](https://github.com/microsoft/terminal/releases). You can use `/home/` to directly refer to your home folder. For example, the following setting will launch the "Ubuntu-20.04" distribution in its home file path: -Beginning in Windows 10 version 1903, the file systems of WSL distributions can be addressed using the `\\wsl$\` prefix. For any WSL distribution with the name `DistroName`, use `\\wsl$\DistroName` as a Windows path that points to the root of that distribution's file system. +```json +{ + "name": "Ubuntu-20.04", + "commandline" : "wsl -d Ubuntu-20.04", + "startingDirectory" : "/home/" +} +``` -For example, the following setting will launch the "Ubuntu-18.04" distribution in its home file path: +If you are using an earlier version of Windows Terminal, WSL may require using the `\\wsl$\` prefix when referring to a distribution's home path for the `startingDirectory` setting. For example, in earlier versions of Windows Terminal the following setting will launch the "Ubuntu-18.04" distribution in its home file path: ```json { From 9d476b91a48dd308fb2e0558087b10b4d9e5af7c Mon Sep 17 00:00:00 2001 From: Sanam <31341013+sanamhub@users.noreply.github.com> Date: Thu, 13 Jan 2022 01:49:22 +0545 Subject: [PATCH 16/80] Update custom-prompt-setup.md (#482) --- TerminalDocs/tutorials/custom-prompt-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index f24c3edf..60105b45 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -127,7 +127,7 @@ You can [customize the Oh My Posh themes](https://ohmyposh.dev/docs/linux#custom To install Terminal-Icons with PowerShell, use the command: ```powershell -PS> Install-Module -Name Terminal-Icons -Repository PSGallery +Install-Module -Name Terminal-Icons -Repository PSGallery ``` For more information, including usage and commands, see the [Terminal-Icons](https://github.com/devblackops/Terminal-Icons) repo on GitHub. From 2ccc36cf806cd03dcec6d6b6615a9dd3b21bacd7 Mon Sep 17 00:00:00 2001 From: Haltarys <45515869+Haltarys@users.noreply.github.com> Date: Thu, 20 Jan 2022 23:56:55 +0100 Subject: [PATCH 17/80] style: fix typo in new-tab-same-directory.md (#486) "it's" should be "its" because it wouldn't make sense otherwise. --- TerminalDocs/tutorials/new-tab-same-directory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 3dcda355..fc5c3335 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -19,7 +19,7 @@ Fortunately, there's a workaround. Applications can emit a special escape sequen In this tutorial, you learn how to: > [!div class="checklist"] -> * Configure the shell to tell the Terminal about it's current working directory +> * Configure the shell to tell the Terminal about its current working directory > * Use the `duplicateTab` action to open a tab with the same CWD > * Use the `splitPane` action to open a pane with the same CWD > * Using the tab context menu to open tabs or panes with the same CWD From db0bb849c0ae0566b5b33e8f6daacbfa014f9e8c Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 20 Jan 2022 15:28:36 -0800 Subject: [PATCH 18/80] Updated based on pull 9270 in Terminal repo --- TerminalDocs/customize-settings/profile-advanced.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/customize-settings/profile-advanced.md b/TerminalDocs/customize-settings/profile-advanced.md index 7955ac49..3c46bda0 100644 --- a/TerminalDocs/customize-settings/profile-advanced.md +++ b/TerminalDocs/customize-settings/profile-advanced.md @@ -129,7 +129,7 @@ Controls what happens when the application emits a BEL character. When set to `" **Necessity:** Optional -**Accepts:** `"all"`, `"audible"`, `"visual"`, `"none"` +**Accepts:** `"all"`, `"audible"`, `"window"`, `"taskbar"`, `"none"` **Default value:** `"audible"` From c0291c6207a8799e6b26ca43d0a7c149b2a8394e Mon Sep 17 00:00:00 2001 From: Nikolas Grottendieck Date: Fri, 21 Jan 2022 00:30:48 +0100 Subject: [PATCH 19/80] GUID generation for dynamic fragments (#320) (#460) Add information on GUID generation based on https://github.com/microsoft/terminal/issues/10374 and improve wording to make the importance of a profile GUID clearer. --- TerminalDocs/json-fragment-extensions.md | 75 +++++++++++++++++++----- 1 file changed, 60 insertions(+), 15 deletions(-) diff --git a/TerminalDocs/json-fragment-extensions.md b/TerminalDocs/json-fragment-extensions.md index a0eef516..9086dd1f 100644 --- a/TerminalDocs/json-fragment-extensions.md +++ b/TerminalDocs/json-fragment-extensions.md @@ -11,16 +11,16 @@ ms.topic: how-to JSON fragment extensions are snippets of JSON that application developers can write to add new profiles to users' settings, or even modify certain existing profiles. They can also be used to add new color schemes to users' settings. -## Structure of the JSON files +## Structure of the JSON files -The JSON file should be split up into 2 lists, one for profiles and one for schemes. Here is an example of a json file that adds a new profile, modifies an existing profile, and creates a new color scheme: +The JSON file should be split up into 2 lists, one for profiles and one for schemes. Here is an example of a json file that adds a new profile, modifies an existing profile, and creates a new color scheme: -```JSON +```JSON { "profiles": [ { - // update the profile with the GUID below - "updates": "{2c4de342-38b7-51cf-b940-23e9ae97f518}", + // update a profile by using its GUID + "updates": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}", "fontSize": 16, "fontWeight": "thin" }, @@ -37,14 +37,13 @@ The JSON file should be split up into 2 lists, one for profiles and one for sche { // create a new color scheme "name": "Postmodern Tango Light", - "black": "#0C0C0C", "red": "#C50F1F", "green": "#13A10E", "yellow": "#C19C00", "blue": "#0037DA", "purple": "#881798", - "cyan": "#3A96DD", + "cyan": "#3A96DD", "white": "#CCCCCC", "brightBlack": "#767676", "brightRed": "#E74856", @@ -65,25 +64,71 @@ In the `"schemes"` list, a new color scheme called "Postmodern Tango Light" is d Of course, if the developer only wishes to add/modify profiles without adding color schemes (and vice-versa), only the relevant list needs to be present and the other list can be omitted. -## How to determine the GUID of an existing profile +## Profile GUIDs + +As previously stated profile GUIDs are a way to reference profiles and let users update and extend them without worrying about location or name changes. The only profiles that can be modified through fragments are the default profiles, Command Prompt and PowerShell, as well as [dynamic profiles](./dynamic-profiles.md). Providing a GUID is optional, however, strongly encouraged. + +The GUIDs are generated using a Version 5 UUID generator which supports BOM-less UTF-16LE encoding. + +The namespace GUID for Windows Terminal in case of profiles created by plugins and fragments is `{f65ddb7e-706b-4499-8a50-40313caf510a}`. Profiles created by the Windows Terminal Team use a separate GUID (`{2bde4a90-d05f-401c-9492-e40884ead1d8}`). This is done to disambiguate profiles created by the Windows Terminal Team from profiles created by plugins or fragments so they can never accidentally collide. + +### How to determine the GUID of an existing profile + +To determine the GUID of a profile to be updated it depends on what kind of profile it is: + +A profile shipped by a third party stored in a standard Windows Terminal Fragment location requires the profile & fragment namespace GUID `{f65ddb7e-706b-4499-8a50-40313caf510a}`, the application namespace GUID, and the profile name. For a profile fragment named 'Git Bash' supplied by the application 'Git' the generated GUID is: `{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}`. + +A profile automatically generated by Windows Terminal requires the Windows Terminal internal GUID `{2bde4a90-d05f-401c-9492-e40884ead1d8}` and the profile name. For a profile named 'Ubuntu' automatically generated during WSL installation, the resulting GUID is: `{2c4de342-38b7-51cf-b940-2309a097f518}`. In contrast to the previous fragment example there is no 'application name' involved. + +### Generating a new profile GUID + +To generate a GUID for a completely new profile prior to distributing it you can use the following Python 3 example. It generates a GUID based on the profile & fragment namespace GUID for a profile called 'Git Bash' stored in a standard Windows Terminal Fragments folder under the 'Git' application name, conveniently matching the sanity check. + +```python +import uuid -The only profiles that can be modified through fragments are the default profiles, Command Prompt and PowerShell, as well as [dynamic profiles](./dynamic-profiles.md). To determine the GUID of the profile to be updated, use a Version 5 UUID generator with the following namespace GUID and name: +# The Windows Terminal namespace GUID for custom profiles & fragments +terminalNamespaceGUID = uuid.UUID("{f65ddb7e-706b-4499-8a50-40313caf510a}") -- The namespace GUID: `{2BDE4A90-D05F-401C-9492-E40884EAD1D8}` -- The name of the profile to be updated +# The Application Namespace GUID +appNamespaceGUID = uuid.uuid5(terminalNamespaceGUID, "Git".encode("UTF-16LE").decode("ASCII")) -As a sanity check, a profile called 'Ubuntu' will get the generated GUID: `{2C4DE342-38B7-51CF-B940-2309A097F518}` +# Calculate the example GUID for the 'Git Bash' profile +profileGUID = uuid.uuid5(appNamespaceGUID, "Git Bash".encode("UTF-16LE").decode("ASCII")) + +# Output the GUID +print(profileGUID) + +``` + +### Calculating a GUID for a built in profile + +To calculate a GUID for a built in profile, such as the automatically generated WSL profiles, you can use the following Python 3 example. It calculates a GUID based on the Windows Terminal namespace GUID for a profile called 'Ubuntu' that was automatically generated for the WSL distribution, conveniently matching the sanity check. + +```python +import uuid + +# The Windows Terminal namespace GUID automatically generated profiles +terminalNamespaceGUID = uuid.UUID("{2bde4a90-d05f-401c-9492-e40884ead1d8}") + +# Calculate the example GUID for the 'Git Bash' profile +profileGUID = uuid.uuid5(terminalNamespaceGUID, "Ubuntu".encode("UTF-16LE").decode("ASCII")) + +# Output the GUID +print(profileGUID) + +``` -## Minimum requirements for settings added with fragments +## Minimum requirements for settings added with fragments There are some minimal restrictions on what can be added to user settings using JSON fragments: - For new profiles added via fragments, the new profile must, at a minimum, define a name for itself. -- For new color schemes added via fragments, the new color scheme must define a name for itself, as well as define every color in the color table (i.e. the colors "black" through "brightYellow" in the example image above). +- For new color schemes added via fragments, the new color scheme must define a name for itself, as well as define every color in the color table (i.e. the colors "black" through "brightWhite" in the example image above). ## Where to place the JSON fragment files -The location to place the JSON fragment files varies depending on the installation method of the application that wishes to place them. +The location to place the JSON fragment files varies depending on the installation method of the application that wishes to place them. ### Microsoft Store applications From 8fe25d19b8e3a921fab2c988eff387e47d77a39e Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 20 Jan 2022 15:34:59 -0800 Subject: [PATCH 20/80] FIx to close https://github.com/MicrosoftDocs/terminal/issues/484 --- TerminalDocs/customize-settings/startup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/customize-settings/startup.md b/TerminalDocs/customize-settings/startup.md index c9022350..1924dc8b 100644 --- a/TerminalDocs/customize-settings/startup.md +++ b/TerminalDocs/customize-settings/startup.md @@ -181,8 +181,8 @@ When set to `true`, the terminal window will auto-center itself on the display i This interacts with the other launch settings in the following ways: -* `"initialPosition": x,y`, `"centerOnLaunch": true`, `"launchMode": "default"`: center on the monitor that `x,y` is on. -* `"initialPosition": x,y`, `"centerOnLaunch": true`, `"launchMode": "maximized"`: maximized on the monitor that `x,y` is on (`centerOnLaunch` adds nothing). +* `"initialPosition": "x,y"`, `"centerOnLaunch": true`, `"launchMode": "default"`: center on the monitor that `x,y` is on. +* `"initialPosition": "x,y"`, `"centerOnLaunch": true`, `"launchMode": "maximized"`: maximized on the monitor that `x,y` is on (`centerOnLaunch` adds nothing). * `"initialPosition": `, `"centerOnLaunch": true`, `"launchMode": "default"`: center on the default monitor. * `"initialPosition": `, `"centerOnLaunch": true`, `"launchMode": "focus"`: center and enter focus mode on the default monitor. * `"initialPosition": `, `"centerOnLaunch": true`, `"launchMode": "maximized"`: maximized on the default monitor (`centerOnLaunch` adds nothing). From fdd26852eca382e9e9ebf55a61874acc810a03f4 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 20 Jan 2022 15:42:44 -0800 Subject: [PATCH 21/80] Typo Resolves https://github.com/MicrosoftDocs/terminal/issues/483 --- TerminalDocs/faq.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index d2c260dd..b4292b6b 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -82,7 +82,7 @@ sections: - question: What is conhost.exe? answer: | - The Windows Console host, conhost.exe, is Windows' original command-line user experience. It also hosts Windows' command-line infrastructure and the Windows Console API server, input engine, rendering engine, user preferences, etc. A primary goal of Windows Console is to maintain backward compatibility, thus adding new features became prohibitive and let to the creation of the Windows Terminal. Learn more in the [Windows Terminal open-source repo](https://github.com/Microsoft/terminal#the-windows-console-host) and in the [WIndows Console docs](/windows/console/definitions#console-host). + The Windows Console host, conhost.exe, is Windows' original command-line user experience. It also hosts Windows' command-line infrastructure and the Windows Console API server, input engine, rendering engine, user preferences, etc. A primary goal of Windows Console is to maintain backward compatibility, thus adding new features became prohibitive and led to the creation of the Windows Terminal. Learn more in the [Windows Terminal open-source repo](https://github.com/Microsoft/terminal#the-windows-console-host) and in the [WIndows Console docs](/windows/console/definitions#console-host). - question: Can I save the layout of all of my open console windows when closing Windows Terminal and restore them when starting a new session? answer: | From 223fd23c380e647503baade15afbb28d4763581f Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 20 Jan 2022 16:58:06 -0800 Subject: [PATCH 22/80] Add UTF8 note Resolves https://github.com/MicrosoftDocs/terminal/issues/339 --- TerminalDocs/json-fragment-extensions.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/TerminalDocs/json-fragment-extensions.md b/TerminalDocs/json-fragment-extensions.md index 9086dd1f..3fe62e46 100644 --- a/TerminalDocs/json-fragment-extensions.md +++ b/TerminalDocs/json-fragment-extensions.md @@ -64,6 +64,14 @@ In the `"schemes"` list, a new color scheme called "Postmodern Tango Light" is d Of course, if the developer only wishes to add/modify profiles without adding color schemes (and vice-versa), only the relevant list needs to be present and the other list can be omitted. +> [!NOTE] +> If you plan to use PowerShell to generate fragments, you must use `-Encoding Utf8`: +> `# BAD: PowerShell uses UTF16LE by default` +> `Write-Output $fragmentJson > $fragmentPath` +> `# GOOD: Uses UTF8, so Terminal will read this` +> `Write-Output $fragmentJson | Out-File $fragmentPath -Encoding Utf8` +> If you are using VS Code to edit the JSON, UTF8 is the default, but you can confirm in the bottom status bar. + ## Profile GUIDs As previously stated profile GUIDs are a way to reference profiles and let users update and extend them without worrying about location or name changes. The only profiles that can be modified through fragments are the default profiles, Command Prompt and PowerShell, as well as [dynamic profiles](./dynamic-profiles.md). Providing a GUID is optional, however, strongly encouraged. From c7fafdf77739702a769d72a3e7040f137232cec8 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 20 Jan 2022 17:03:04 -0800 Subject: [PATCH 23/80] Fix note formatting --- TerminalDocs/json-fragment-extensions.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/TerminalDocs/json-fragment-extensions.md b/TerminalDocs/json-fragment-extensions.md index 3fe62e46..7f3073eb 100644 --- a/TerminalDocs/json-fragment-extensions.md +++ b/TerminalDocs/json-fragment-extensions.md @@ -66,10 +66,15 @@ Of course, if the developer only wishes to add/modify profiles without adding co > [!NOTE] > If you plan to use PowerShell to generate fragments, you must use `-Encoding Utf8`: -> `# BAD: PowerShell uses UTF16LE by default` -> `Write-Output $fragmentJson > $fragmentPath` -> `# GOOD: Uses UTF8, so Terminal will read this` -> `Write-Output $fragmentJson | Out-File $fragmentPath -Encoding Utf8` +> ```powershell +> # BAD: PowerShell uses UTF16LE by default +> Write-Output $fragmentJson > $fragmentPath +> ``` +> +> ```powershell +> # GOOD: Uses UTF8, so Terminal will read this +> Write-Output $fragmentJson | Out-File $fragmentPath -Encoding Utf8 +> ``` > If you are using VS Code to edit the JSON, UTF8 is the default, but you can confirm in the bottom status bar. ## Profile GUIDs From 51ca48b7b2aea927aa52e54d77bae653ac61d5ca Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Thu, 3 Feb 2022 10:23:46 -0800 Subject: [PATCH 24/80] Merge release-1.13 into main (#492) Co-authored-by: Matt Wojciakowski Co-authored-by: Mike Griese --- TerminalDocs/customize-settings/actions.md | 92 ++++++++++++++++--- .../customize-settings/interaction.md | 19 +++- .../customize-settings/profile-advanced.md | 21 ++++- .../customize-settings/profile-appearance.md | 11 +-- .../customize-settings/profile-general.md | 27 +++++- TerminalDocs/customize-settings/startup.md | 7 +- TerminalDocs/faq.yml | 8 +- 7 files changed, 154 insertions(+), 31 deletions(-) diff --git a/TerminalDocs/customize-settings/actions.md b/TerminalDocs/customize-settings/actions.md index 065f07de..098cd8d0 100644 --- a/TerminalDocs/customize-settings/actions.md +++ b/TerminalDocs/customize-settings/actions.md @@ -3,7 +3,7 @@ title: Windows Terminal Actions description: Learn how to create custom actions for Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/15/2021 +ms.date: 02/03/2022 ms.topic: how-to --- @@ -132,7 +132,7 @@ ___ ## Application-level commands -### Quit ([Preview](https://aka.ms/terminal-preview)) +### Quit This closes all open terminal windows. A confirmation dialog will appear in the current window to ensure you'd like to close all windows. @@ -144,9 +144,6 @@ This closes all open terminal windows. A confirmation dialog will appear in the { "command": "quit" } ``` -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ### Close window :::row::: @@ -398,12 +395,16 @@ This creates a new tab. Without any arguments, this will open the default profil | ---- | --------- | ------- | ----------- | | `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. | +| `elevate` | Optional | `true`, `false`, `null` | Overrides the [`elevate`](./profile-general.md#automatically-run-as-administrator-preview) property of the profile. When omitted, this action will behave according to the profile's `elevate` setting. When set to `true` or `false`, this action will behave as though the profile was set with `"elevate": true` or `"elevate": false` (respectively). | | `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. In order to enter a new tab title and have that title persist, this must be set to true. | +> [!IMPORTANT] +> The `elevate` property is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + ### Open next tab This opens the tab to the right of the current one. @@ -796,6 +797,7 @@ This halves the size of the active pane and opens another. Without any arguments | `split` | Required | `"vertical"`, `"horizontal"`, `"auto"`, `"up"`, `"right"`, `"down"`, `"left"` | 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. | +| `elevate` | Optional | `true`, `false`, `null` | Overrides the [`elevate`](./profile-general.md#automatically-run-as-administrator-preview) property of the profile. When omitted, this action will behave according to the profile's `elevate` setting. When set to `true` or `false`, this action will behave as though the profile was set with `"elevate": true` or `"elevate": false` (respectively). | | `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. | @@ -805,7 +807,7 @@ This halves the size of the active pane and opens another. Without any arguments | `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`. | > [!IMPORTANT] -> The `"up"`, `"right"`, `"down"`, and `"left"` options for `split` are only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). +> The `elevate` property is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview).
@@ -837,7 +839,7 @@ This copies the selected terminal content to your clipboard. If no selection exi | `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. | -### Keyboard Selection ([Preview](https://aka.ms/terminal-preview)) +### Keyboard selection This modifies an existing selection. If no selection exists, the key chord is sent directly to the terminal. @@ -874,9 +876,6 @@ This modifies an existing selection. If no selection exists, the key chord is se | `direction` | Required | `"left"`, `"right"`, `"up"`, `"down"` | Direction in which the selection endpoint will move. | | `mode` | Required | `"char"`, `"word"`, `"view"`, `"buffer"` | Controls how much the endpoint moves by. | -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ### Paste This inserts the content that was copied onto the clipboard. @@ -986,6 +985,24 @@ This scrolls the screen down to the bottom of the input buffer.
+### Clear buffer + +This action can be used to manually clear the terminal buffer. This is useful for scenarios where you're not sitting at a command-line shell prompt and can't easily run `Clear-Host`/`cls`/`clear`. + +**Command name:** `clearBuffer` + +**Default bindings:** + +```json +{ "command": { "action": "clearBuffer", "clear": "all" } } +``` + +#### Actions + +| Name | Necessity | Accepts | Description | +| ---- | --------- | ------- | ----------- | +| `clear` | Optional | `"screen"`, `"scrollback"`, `"all"` | What part of the screen to clear.
  • `"screen"`: Clear the terminal viewport content. Leaves the scrollback untouched. Moves the cursor row to the top of the viewport (unmodified).
  • `"scrollback"`: Clear the scrollback. Leaves the viewport untouched.
  • `"all"` (_default_): Clear the scrollback and the visible viewport. Moves the cursor row to the top of the viewport.
| + ___ ## Visual adjustment commands @@ -1024,6 +1041,31 @@ This resets the text size to the default value. { "command": "resetFontSize", "keys": "ctrl+numpad_0" } ``` +### Adjust opacity ([Preview](https://aka.ms/terminal-preview)) + +This changes the opacity of the window. If `relative` is set to true, it will adjust the opacity relative to the current opacity. Otherwise, it will set the opacity directly to the given `opacity` + +**Command name:** `adjustOpacity` + +**Default bindings:** + +```json +{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 0 } }, +{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 25 } }, +{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 50 } }, +{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 100 } } +``` + +#### Actions + +| Name | Necessity | Accepts | Description | +| ---- | --------- | ------- | ----------- | +| `opacity` | Optional | Integer | How opaque the terminal should become or how much the opacity should be changed by, depending on the value of `relative` | +| `relative` | Optional | Boolean | If true, then adjust the current opacity by the given `opacity` parameter. If false, set the opacity to exactly that value. | + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + ### 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`. @@ -1061,6 +1103,31 @@ Changes the active color scheme. ___ +## Buffer exporting + +### Export buffer ([Preview](https://aka.ms/terminal-preview)) + +This allows the user to export the text of the buffer to a file. If the file doesn't exist, it will be created. If the file already exists, its contents will be replaced with the Terminal buffer text. + +**Command name:** `exportBuffer` + +**Default bindings:** + +```json +{ "command": { "action": "exportBuffer" } } +``` + +#### Actions + +| Name | Necessity | Accepts | Description | +| ---- | --------- | ------- | ----------- | +| `path` | Optional | String | If provided, then the Terminal will export the buffer contents to the given file. Otherwise, the terminal will open a file picker to choose the file to export to. | + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +___ + ## Global commands ### Global summon @@ -1187,7 +1254,7 @@ If you'd like to change the behavior of the `quakeMode` action, we recommended c ___ -## Run multiple actions ([Preview](https://aka.ms/terminal-preview)) +## Run multiple actions This action allows the user to bind multiple sequential actions to one command. @@ -1221,9 +1288,6 @@ This action allows the user to bind multiple sequential actions to one command. }} ``` -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). -
___ diff --git a/TerminalDocs/customize-settings/interaction.md b/TerminalDocs/customize-settings/interaction.md index 85953bc4..b6539de5 100644 --- a/TerminalDocs/customize-settings/interaction.md +++ b/TerminalDocs/customize-settings/interaction.md @@ -3,7 +3,7 @@ title: Windows Terminal Interaction Settings description: Learn how to customize interaction settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/05/2021 +ms.date: 02/03/2022 ms.topic: how-to --- @@ -59,6 +59,23 @@ When this is set to `true` and you copy text in a rectangular (block) selection ___ +## Trim trailing whitespace on paste ([Preview](https://aka.ms/terminal-preview)) + +When enabled, the terminal will automatically trim trailing whitespace characters when pasting text to the terminal. + +**Property name:** `trimPaste` + +**Necessity:** Optional + +**Accepts:** `true`, `false` + +**Default value:** `true` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +___ + ## Word delimiters This determines the word delimiters used in a double-click selection. Word delimiters are characters that specify where the boundary is between two words. The most common examples are spaces, semicolons, commas, and periods. diff --git a/TerminalDocs/customize-settings/profile-advanced.md b/TerminalDocs/customize-settings/profile-advanced.md index 3c46bda0..2b465c38 100644 --- a/TerminalDocs/customize-settings/profile-advanced.md +++ b/TerminalDocs/customize-settings/profile-advanced.md @@ -3,7 +3,7 @@ title: Windows Terminal Advanced Profile Settings description: Learn how to customize the advanced profile settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/19/2021 +ms.date: 02/03/2022 ms.topic: how-to --- @@ -137,6 +137,25 @@ Controls what happens when the application emits a BEL character. When set to `" ___ +## Experimental text rendering engine ([Preview](https://aka.ms/terminal-preview)) + +Enables use of the experimental text rendering engine for the profile. This is an experimental feature and its continued existence is not guaranteed. A new instance of the profile needs to be opened in order for this setting to take effect. + +**Property name:** `experimental.useAtlasEngine` + +**Necessity:** Optional + +**Accepts:** `true`, `false` + +**Default value:** `false` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +
+ +___ + ## Unique identifier Profiles can use a GUID as a unique identifier. To make a profile your default profile, it needs a GUID for the `defaultProfile` global setting. diff --git a/TerminalDocs/customize-settings/profile-appearance.md b/TerminalDocs/customize-settings/profile-appearance.md index c1600bbc..091b1598 100644 --- a/TerminalDocs/customize-settings/profile-appearance.md +++ b/TerminalDocs/customize-settings/profile-appearance.md @@ -3,7 +3,7 @@ title: Windows Terminal Appearance Profile Settings description: Learn how to customize the appearance profile settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/08/2021 +ms.date: 02/03/2022 ms.topic: how-to --- @@ -328,7 +328,7 @@ ___ ## Transparency -### Opacity ([Preview](https://aka.ms/terminal-preview)) +### Opacity :::row::: :::column span=""::: @@ -356,7 +356,7 @@ When `useAcrylic` is set to `true`, the window will use the acrylic material to > Prior to Windows Terminal version 1.12, this setting was `acrylicOpacity`, was a float that accepted 0.0-1.0 which defaulted to 0.5, and the opacity would only apply if `useAcrylic` was set to true. On 1.12+, `acrylicOpacity` will gracefully continue to work as the equivalent `opacity` value. > [!IMPORTANT] -> Unblurred opacity (`"useAcrylic": false`) only works on Windows 11 or above with [Windows Terminal Preview](https://aka.ms/terminal-preview). +> Unblurred opacity (`"useAcrylic": false`) only works on Windows 11. ### Enable acrylic @@ -462,7 +462,7 @@ This sets the background color of a selection within the profile. This will over **Accepts:** Color as a string in hex format: `"#rgb"` or `"#rrggbb"` -### Adjust indistinguishable colors ([Preview](https://aka.ms/terminal-preview)) +### Adjust indistinguishable colors When set to true, this will (when necessary) adjust the foreground color to make it more visible, based on the background color. @@ -474,9 +474,6 @@ When set to true, this will (when necessary) adjust the foreground color to make **Default value:** `true` -> [!IMPORTANT] -> This feature only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ### Cursor color This sets the cursor color of the profile. This will override the `cursorColor` set in the color scheme if `colorScheme` is set. diff --git a/TerminalDocs/customize-settings/profile-general.md b/TerminalDocs/customize-settings/profile-general.md index 68e99e60..e26d63e1 100644 --- a/TerminalDocs/customize-settings/profile-general.md +++ b/TerminalDocs/customize-settings/profile-general.md @@ -3,7 +3,7 @@ title: Windows Terminal General Profile Settings description: Learn how to customize the general profile settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 04/14/2021 +ms.date: 02/03/2022 ms.topic: how-to --- @@ -105,7 +105,32 @@ If set, this will replace the `name` as the title to pass to the shell on startu **Accepts:** String
+___ + +## Automatically run as Administrator ([Preview](https://aka.ms/terminal-preview)) + +If set, this profile will automatically open up in an "elevated" window (running as Administrator) by default. If you run this profile from an unelevated window, then a new elevated terminal window will be created to host this profile. If you launch this profile from an already elevated window, then it will open as a new tab. + +When this property is set to `false`, opening this profile in an elevated window will not launch an _unelevated_ window to host this profile. The profile will simply open in the elevated window, running as Administrator. + +If you set this property in `profiles.defaults`, then _all_ profiles will launch as Administrator by default, unless overrided by specifically setting this to false. + +This property can be overridden in the [`newTab`](./actions.md#new-tab) and [`splitPane`](./actions.md#split-a-pane) actions, with the `elevate` property. + +Elevated and unelevated tabs cannot exist in the same terminal window. For more details, please see the [FAQ](./../faq.yml#can-you-have-have-tabs-running-as-administrator--elevated--in-unelevated-terminal-windows). + +**Property name:** `elevate` +**Necessity:** Optional + +**Accepts:** `true`, `false` + +**Default value:** `false` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +
___ ## Hide profile from dropdown diff --git a/TerminalDocs/customize-settings/startup.md b/TerminalDocs/customize-settings/startup.md index 1924dc8b..a7cd7c7f 100644 --- a/TerminalDocs/customize-settings/startup.md +++ b/TerminalDocs/customize-settings/startup.md @@ -3,7 +3,7 @@ title: Windows Terminal Startup Settings description: Learn how to customize startup settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/08/2021 +ms.date: 02/03/2022 ms.topic: how-to --- @@ -64,7 +64,7 @@ Note: if the Windows Terminal startup task entry is disabled either by org polic ___ -## Behavior when starting a new terminal session ([Preview](https://aka.ms/terminal-preview)) +## Behavior when starting a new terminal session When set to `"defaultProfile"`, Windows Terminal will start a new session by opening a single tab with your default profile. @@ -86,9 +86,6 @@ Note: Currently, Windows Terminal will save the following information: **Default value:** `"defaultProfile"` -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). -
___ diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index b4292b6b..2c16cf2b 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -3,7 +3,7 @@ metadata: title: Windows Terminal FAQ description: Frequently asked questions about Windows Terminal, such as how to start terminal in administrator mode, how to save a terminal session, and more. ms.topic: troubleshooting - ms.date: 01/06/2022 + ms.date: 02/03/2022 ms.author: mattwoj author: mattwojo manager: jken @@ -86,7 +86,7 @@ sections: - question: Can I save the layout of all of my open console windows when closing Windows Terminal and restore them when starting a new session? answer: | - Yes! As of [Windows Terminal Preview v1.12.2922.0](https://github.com/microsoft/terminal/releases/tag/v1.12.2922.0), you can now save window pane layouts upon closing a terminal session with the [firstWindowPreference](./customize-settings/startup.md#behavior-when-starting-a-new-terminal-session-preview) global setting. + Yes! As of [Windows Terminal Preview v1.12.2922.0](https://github.com/microsoft/terminal/releases/tag/v1.12.2922.0), you can now save window pane layouts upon closing a terminal session with the [firstWindowPreference](./customize-settings/startup.md#behavior-when-starting-a-new-terminal-session) global setting. - question: What is being planned for Windows Terminal? Is there a development roadmap or feature request list that I can contribute to? answer: | @@ -100,6 +100,10 @@ sections: answer: | The PSReadLine module is responsible for setting the colors and behavior of your PowerShell command line. You can set colors for specific attributes of your PowerShell prompt by using the [Set-PSReadLineOption, see Example 4: Set multiple color options](/powershell/module/psreadline/set-psreadlineoption#example-4--set-multiple-color-options). + - question: Can you have have tabs running as Administrator (elevated) in unelevated Terminal windows? + answer: | + No. For more technical details, refer to [this spec](https://github.com/microsoft/terminal/blob/main/doc/specs/%235000%20-%20Process%20Model%202.0/%231032%20-%20Elevation%20Quality%20of%20Life%20Improvements.md#background) and [this doc](https://github.com/microsoft/terminal/blob/main/doc/Niksa.md#elevation). + # - question: Is there a way to sync your terminal settings across devices? # answer: | # TBD From ea2e3c65300dfdf43295633b4d32cb5a1444e014 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 3 Feb 2022 15:06:23 -0800 Subject: [PATCH 25/80] Minor intro rewrite (#487) --- TerminalDocs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/index.md b/TerminalDocs/index.md index 76a73776..54c514f4 100644 --- a/TerminalDocs/index.md +++ b/TerminalDocs/index.md @@ -9,7 +9,7 @@ ms.topic: overview # What is Windows Terminal? -Windows Terminal is a modern terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and Windows Subsystem for Linux (WSL). Its main features include multiple tabs, panes, Unicode and UTF-8 character support, a GPU accelerated text rendering engine, and the ability to create your own themes and customize text, colors, backgrounds, and shortcuts. +Windows Terminal is a modern host application for the command-line shells you already love, like Command Prompt, PowerShell, and bash (via Windows Subsystem for Linux (WSL)). Its main features include multiple tabs, panes, Unicode and UTF-8 character support, a GPU accelerated text rendering engine, and the ability to create your own themes and customize text, colors, backgrounds, and shortcuts. > [!div class="nextstepaction"] > [Install Windows Terminal](https://aka.ms/terminal) From 9d401a638a8d548685fe802311e200aa8edb4d0a Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 3 Feb 2022 15:16:22 -0800 Subject: [PATCH 26/80] typo fix --- TerminalDocs/tutorials/new-tab-same-directory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index fc5c3335..370bcab5 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -42,7 +42,7 @@ This will append `$e]9;9;$P$e\` to your current prompt. When cmd evaluates this * the `$e` with the escape character * the `$p` with the current working directory -Note that the above command will only work for the current `cmd.exe` session. To set the value permantently, AFTER running the above command, you'll want to run +Note that the above command will only work for the current `cmd.exe` session. To set the value permanently, AFTER running the above command, you'll want to run ```cmd setx PROMPT %PROMPT% From fd344579eaa5c6b42f1d8175577b25280c550474 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Thu, 3 Feb 2022 15:48:27 -0800 Subject: [PATCH 27/80] Remove start from PowerShell commands --- TerminalDocs/command-line-arguments.md | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index 7c0284a3..6a52a97f 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -485,31 +485,6 @@ Execution aliases do not work in WSL distributions. If you want to use wt.exe fr Windows Terminal uses the semicolon character `;` as a delimiter for separating commands in the `wt` command line. Unfortunately, PowerShell also uses `;` as a command separator. To work around this, you can use the following tricks to run multiple `wt` commands from PowerShell. In all the following examples, a new terminal window is created with three panes - one running Command Prompt, one with PowerShell, and the last one running WSL. -The following examples use the `Start-Process` command to run `wt`. For more information on why the terminal uses `Start-Process`, see [Using start](#using-start) below. - -### Single quoted parameters - -In this example, the `wt` parameters are wrapped in single quotes (`'`). This syntax is useful if nothing is being calculated. - -```powershell -start wt 'new-tab "cmd" ; split-pane -p "Windows PowerShell" ; split-pane -H wsl.exe' -``` - -### Escaped quotes - -When passing a value contained in a variable to the `wt` command line, use the following syntax: - -```powershell -$ThirdPane = "wsl.exe" -start wt "new-tab cmd ; split-pane -p `"Windows PowerShell`" ; split-pane -H $ThirdPane" -``` - -Note the usage of `` ` `` to escape the double-quotes (`"`) around "Windows PowerShell" in the `-p` parameter to the `split-pane` parameter. - -### Using `start` - -All the above examples explicitly used `start` to launch the terminal. - The following examples do not use `start` to run the command line. Instead, there are two other methods of escaping the command line: * Only escaping the semicolons so that `PowerShell` will ignore them and pass them straight to `wt`. From 7c209109d8b4e6305966686d1756b9a3d08c9863 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Tue, 8 Feb 2022 13:31:09 -0800 Subject: [PATCH 28/80] winget link fix --- TerminalDocs/tutorials/custom-prompt-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 60105b45..b23c46f8 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -40,7 +40,7 @@ To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](/package-manager/winget/), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). +If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](windows/package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). ### Install Oh My Posh for PowerShell From 269670c9fa6cf332ed09056b96c4569688203b02 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Tue, 8 Feb 2022 13:34:38 -0800 Subject: [PATCH 29/80] Link fix --- TerminalDocs/tutorials/custom-prompt-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index b23c46f8..a9921bf6 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -40,7 +40,7 @@ To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](windows/package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). +If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](./package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). ### Install Oh My Posh for PowerShell From dfe55d08ad06a251c10c57ffea4d34fa12780ec2 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Tue, 8 Feb 2022 13:42:52 -0800 Subject: [PATCH 30/80] link fix --- TerminalDocs/tutorials/custom-prompt-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index a9921bf6..112f8272 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -40,7 +40,7 @@ To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](./package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). +If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](./../package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). ### Install Oh My Posh for PowerShell From a7a0eca79f21590877ca16a60bd1a51de8f8681c Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Tue, 8 Feb 2022 13:50:17 -0800 Subject: [PATCH 31/80] link fix --- TerminalDocs/tutorials/custom-prompt-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 112f8272..595409f5 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -40,7 +40,7 @@ To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](./../package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). +If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](../../package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). ### Install Oh My Posh for PowerShell From 42d9b0d8289a06e8a27bffa5dc160c0e7a543a12 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Wed, 16 Feb 2022 10:24:40 -0800 Subject: [PATCH 32/80] Add `bellsound` profile setting (#508) --- .../customize-settings/profile-advanced.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/TerminalDocs/customize-settings/profile-advanced.md b/TerminalDocs/customize-settings/profile-advanced.md index 2b465c38..a65bdaa9 100644 --- a/TerminalDocs/customize-settings/profile-advanced.md +++ b/TerminalDocs/customize-settings/profile-advanced.md @@ -137,6 +137,23 @@ Controls what happens when the application emits a BEL character. When set to `" ___ +## Bell sound ([Preview](https://aka.ms/terminal-preview)) + +When `bellStyle` is set to `"all"` or `"audible"`, this allows you to choose the audio file for the bell. If you have an array of sounds set, the terminal will pick one at random. + +**Property name:** `bellSound` + +**Necessity:** Optional + +**Accepts:** File location as a string or an array of file locations as strings + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +
+ +___ + ## Experimental text rendering engine ([Preview](https://aka.ms/terminal-preview)) Enables use of the experimental text rendering engine for the profile. This is an experimental feature and its continued existence is not guaranteed. A new instance of the profile needs to be opened in order for this setting to take effect. From 0509e60e98936647924172b4011aeab8c5fb1d7a Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Wed, 16 Feb 2022 19:30:15 +0100 Subject: [PATCH 33/80] Fix typos found by codespell (#501) --- TerminalDocs/customize-settings/actions.md | 2 +- TerminalDocs/customize-settings/profile-general.md | 2 +- TerminalDocs/faq.yml | 2 +- TerminalDocs/json-fragment-extensions.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/TerminalDocs/customize-settings/actions.md b/TerminalDocs/customize-settings/actions.md index 098cd8d0..d0661218 100644 --- a/TerminalDocs/customize-settings/actions.md +++ b/TerminalDocs/customize-settings/actions.md @@ -611,7 +611,7 @@ This creates a new window. Without any arguments, this will open the default pro | `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. | +| `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 inherited from profile settings. | ### Rename window diff --git a/TerminalDocs/customize-settings/profile-general.md b/TerminalDocs/customize-settings/profile-general.md index e26d63e1..510d7469 100644 --- a/TerminalDocs/customize-settings/profile-general.md +++ b/TerminalDocs/customize-settings/profile-general.md @@ -113,7 +113,7 @@ If set, this profile will automatically open up in an "elevated" window (running When this property is set to `false`, opening this profile in an elevated window will not launch an _unelevated_ window to host this profile. The profile will simply open in the elevated window, running as Administrator. -If you set this property in `profiles.defaults`, then _all_ profiles will launch as Administrator by default, unless overrided by specifically setting this to false. +If you set this property in `profiles.defaults`, then _all_ profiles will launch as Administrator by default, unless overridden by specifically setting this to false. This property can be overridden in the [`newTab`](./actions.md#new-tab) and [`splitPane`](./actions.md#split-a-pane) actions, with the `elevate` property. diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index 2c16cf2b..a167586a 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -46,7 +46,7 @@ sections: answer: | To exit [focus mode](./customize-settings/actions.md#toggle-focus-mode), which hides the tabs and title bar on Windows Terminal, open the terminal command palette (Ctrl+Shift+P), find "toggle focus mode", then hit enter. - ![Toggle focus mode setting in Windows Terminal command pallette](./images/toggle-focus-mode.png) + ![Toggle focus mode setting in Windows Terminal command palette](./images/toggle-focus-mode.png) You may also want to ensure that your launch mode is not set to "focus" in the Startup settings. diff --git a/TerminalDocs/json-fragment-extensions.md b/TerminalDocs/json-fragment-extensions.md index 7f3073eb..f6248bac 100644 --- a/TerminalDocs/json-fragment-extensions.md +++ b/TerminalDocs/json-fragment-extensions.md @@ -145,7 +145,7 @@ The location to place the JSON fragment files varies depending on the installati ### Microsoft Store applications -For applications installed through the Microsoft Store (or similar), the application must declare itself to be an app extension. Learn more about how to [Create an host an app extenstion](/windows/uwp/launch-resume/how-to-create-an-extension). The necessary section is replicated here. The appxmanifest file of the package must include: +For applications installed through the Microsoft Store (or similar), the application must declare itself to be an app extension. Learn more about how to [Create and host an app extension](/windows/uwp/launch-resume/how-to-create-an-extension). The necessary section is replicated here. The appxmanifest file of the package must include: ```xml Date: Wed, 16 Feb 2022 12:38:56 -0600 Subject: [PATCH 34/80] Change step to view themes on documentation site (#505) --- TerminalDocs/tutorials/custom-prompt-setup.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 595409f5..0ce7b047 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -62,11 +62,7 @@ You may also want to enter this command to ensure you have the latest updates: ` ### Choose and apply a PowerShell prompt theme -To browse the Oh My Posh prompt themes, use the command: - -```powershell -Get-PoshThemes -``` +You may browse the full list of themes on the [Oh My Posh themes page](https://ohmyposh.dev/docs/themes). Choose a theme and update your PowerShell profile with this command. (You can replace `notepad` with the text editor of your choice.) From 7e39a2e3d38ad0a8ee5001aed3534716481af1dd Mon Sep 17 00:00:00 2001 From: Alex Buck Date: Wed, 16 Feb 2022 13:39:44 -0500 Subject: [PATCH 35/80] Set ms.topic: faq where YamlMime:FAQ (#506) --- TerminalDocs/faq.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index a167586a..a845f5b8 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -2,13 +2,12 @@ metadata: title: Windows Terminal FAQ description: Frequently asked questions about Windows Terminal, such as how to start terminal in administrator mode, how to save a terminal session, and more. - ms.topic: troubleshooting + ms.topic: faq ms.date: 02/03/2022 ms.author: mattwoj author: mattwojo manager: jken ms.reviewer: cinnamon - title: Windows Terminal FAQ summary: | Find answers to some of the most frequently asked questions about Windows Terminal. From 33241e7bbaa84e3f5b693dae5a0ed5128f4ba7d0 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Wed, 16 Feb 2022 10:56:31 -0800 Subject: [PATCH 36/80] Fix pkgmgr link --- TerminalDocs/tutorials/custom-prompt-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 0ce7b047..484e2376 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -40,7 +40,7 @@ To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](../../package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). +If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](/windows/package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). ### Install Oh My Posh for PowerShell From 9f7b4313375ae1dc944977e9f890bfe63bd9dd27 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 7 Mar 2022 19:26:26 -0500 Subject: [PATCH 37/80] troubleshooting: clarify WSL `startingDirectory` entry (#516) * troubleshooting: Linux paths support in 'startingDirectory' was added in 1.11.2921.0 In 7cd48bc (startingDirectory path for WSL no longer requires prefix, 2022-01-07), the "Set your WSL distribution to start in the home directory" section of the troubleshooting guide was updated to mention that WSL paths can now be directly referenced, following microsoft/terminal@a2a6050 (When launching wsl, promote the starting directory to --cd (#9223), 2021-08-02). The text mentions this feature was added in Windows Terminal 1.12.3472.0, but it actually dates back to v1.11.2421.0 (Preview) and v1.11.2921.0 (Stable). Update the text to mention the stable version, and link to this version in the GitHub releases. Also slightly improve the wording (s/are now/can now be/). * troubleshooting: remove confusing 'Important' note about WSL 'startingDirectory' In e7f739e (Docs updates for 1.11 release (#397), 2021-08-31), an "Important" note was added to the "Set your WSL distribution to start in the home directory" section of the troubleshooting page to mention that 'startingDirectory' now accepts Linux-style paths, following microsoft/terminal@a2a6050 (When launching wsl, promote the starting directory to --cd (#9223), 2021-08-02). The note mentions that Linux-styled paths were accepted "on newer versions of Windows", presumably meaning newer than 1903. Indeed, that version was at the time mentioned in the text as the first Windows vesion supporting the '//wsl$/' P9 prefix (it had been mentioned since the WSL startingDirectory troubleshooting entry was created in da815cc (Review troubleshooting page, 2020-05-04). The text of the section was updated in 7cd48bc (startingDirectory path for WSL no longer requires prefix, 2022-01-07) to add an example with a Linux-style path, and to mention that this feature was added in Windows Terminal itself (not in Windows), thus removing the mention of Windows 1903. However, the "Important" note was left, and it still confusingly mentions that Linux-style paths are accepted on "newer" versions of Windows, without mentioning newer than what. Remove the note altogether. * .gitattributes: mark '*.md' as Markdown files Denote Markdown files as such with the 'diff' Git attribute [1]. This allows various Git commands (diff [2, 3], grep [4, 5], log [6], blame [7]) to show in which part of the "code" the changes are located in the hunk header, i.e. the previous commit would be shown as diff --git a/TerminalDocs/troubleshooting.md b/TerminalDocs/troubleshooting.md index 4a880fa..2c9d14d 100644 --- a/TerminalDocs/troubleshooting.md +++ b/TerminalDocs/troubleshooting.md @@ -40,8 +40,6 @@ ## Set your WSL distribution to start in the home `~` directory when launched } ``` -> [!IMPORTANT] -> On newer versions of Windows, `startingDirectory` can accept Linux-style paths. ## Setting the tab title Notice how the hunk header indicates the changes are in the "Set your WSL distribution to start in the home" section. The history of that specific entry can now be interrogated using git log -L:"Set your WSL distribution":TerminalDocs/troubleshooting.md [1] https://git-scm.com/docs/gitattributes#_defining_a_custom_hunk_header [2] https://git-scm.com/docs/git-diff#_generating_patch_text_with_p [3] https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--W [4] https://git-scm.com/docs/git-grep#Documentation/git-grep.txt--p [5] https://git-scm.com/docs/git-grep#Documentation/git-grep.txt--W [6] https://git-scm.com/docs/git-log#Documentation/git-log.txt--Lltfuncnamegtltfilegt [7] https://git-scm.com/docs/git-blame#Documentation/git-blame.txt--Lltfuncnamegt --- .gitattributes | 5 ++++- TerminalDocs/troubleshooting.md | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitattributes b/.gitattributes index 9fb85ec4..91045217 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,4 +11,7 @@ # Denote all files that are truly binary and should not be modified. *.png binary -*.jpg binary \ No newline at end of file +*.jpg binary + +# Denote Markdown files as such +*.md diff=markdown diff --git a/TerminalDocs/troubleshooting.md b/TerminalDocs/troubleshooting.md index 996c7fc8..2c9d14da 100644 --- a/TerminalDocs/troubleshooting.md +++ b/TerminalDocs/troubleshooting.md @@ -20,7 +20,7 @@ If you click on the "settings" button in the dropdown, the Terminal will attempt ## Set your WSL distribution to start in the home `~` directory when launched -By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\`). This is a Windows path. For WSL distributions, the file systems are now directly referenced, as of Windows Terminal [version 1.12.3472.0](https://github.com/microsoft/terminal/releases). You can use `/home/` to directly refer to your home folder. For example, the following setting will launch the "Ubuntu-20.04" distribution in its home file path: +By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\`). This is a Windows path. For WSL distributions, the file systems can now be directly referenced, as of Windows Terminal [version 1.11.2921.0](https://github.com/microsoft/terminal/releases/tag/v1.11.2921.0). You can use `/home/` to directly refer to your home folder. For example, the following setting will launch the "Ubuntu-20.04" distribution in its home file path: ```json { @@ -40,8 +40,6 @@ If you are using an earlier version of Windows Terminal, WSL may require using t } ``` -> [!IMPORTANT] -> On newer versions of Windows, `startingDirectory` can accept Linux-style paths. ## Setting the tab title From 4941a4082629a339ab1b912e89d06ccf1439c055 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Mon, 7 Mar 2022 16:35:39 -0800 Subject: [PATCH 38/80] Remove version specifics relating to WSL paths --- TerminalDocs/troubleshooting.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/TerminalDocs/troubleshooting.md b/TerminalDocs/troubleshooting.md index 2c9d14da..4c045c62 100644 --- a/TerminalDocs/troubleshooting.md +++ b/TerminalDocs/troubleshooting.md @@ -18,9 +18,9 @@ If you click on the "settings" button in the dropdown, the Terminal will attempt > [!TIP] > You can also use the settings UI to configure your settings if you are using [Windows Terminal Preview](https://aka.ms/terminal-preview). You can learn how to open the settings UI on the [Actions page](./customize-settings/actions.md#application-level-commands). -## Set your WSL distribution to start in the home `~` directory when launched +## Set your WSL distribution to start in the home `~` directory when launched in older versions of Windows Terminal -By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\`). This is a Windows path. For WSL distributions, the file systems can now be directly referenced, as of Windows Terminal [version 1.11.2921.0](https://github.com/microsoft/terminal/releases/tag/v1.11.2921.0). You can use `/home/` to directly refer to your home folder. For example, the following setting will launch the "Ubuntu-20.04" distribution in its home file path: +By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\`). This is a Windows path. For WSL distributions running a new version of Windows Terminal, the file systems can enter `~` to set this home path. In older versions of Windows Terminal, you can use `/home/` to directly refer to your home folder. For example, the following setting will launch the "Ubuntu-20.04" distribution in its home file path: ```json { @@ -30,7 +30,7 @@ By default, the `startingDirectory` of a profile is `%USERPROFILE%` (`C:\Users\< } ``` -If you are using an earlier version of Windows Terminal, WSL may require using the `\\wsl$\` prefix when referring to a distribution's home path for the `startingDirectory` setting. For example, in earlier versions of Windows Terminal the following setting will launch the "Ubuntu-18.04" distribution in its home file path: +If you are using a very early version of Windows Terminal, WSL may require using the `\\wsl$\` prefix when referring to a distribution's home path for the `startingDirectory` setting. For example, the following setting will launch the "Ubuntu-18.04" distribution in its home file path: ```json { @@ -40,6 +40,8 @@ If you are using an earlier version of Windows Terminal, WSL may require using t } ``` +> [!IMPORTANT] +> On newer versions of Windows, `startingDirectory` can accept Linux-style paths. ## Setting the tab title From bbd96840b895b5d341e3bc5b926fc914cd3c191e Mon Sep 17 00:00:00 2001 From: Adrien Clairembault <42734840+AdrienClairembault@users.noreply.github.com> Date: Tue, 8 Mar 2022 01:42:15 +0100 Subject: [PATCH 39/80] New tab same directory (zsh) (#513) --- TerminalDocs/tutorials/new-tab-same-directory.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 370bcab5..b6ef2e68 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -96,6 +96,18 @@ PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "$( The `PROMPT_COMMAND` variable in bash tells bash what command to run before displaying the prompt. The `printf` statement is what we're using to append the sequence for setting the working directory with the Terminal. The `$(wslpath -w "$PWD")` bit will invoke the `wslpath` executable to convert the current directory into its Windows-like path. The `${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}` bit is [some bash magic](https://unix.stackexchange.com/a/466100) to make sure we append this command to any existing command (if you've already set `PROMPT_COMMAND` somewhere else.) +#### `zsh` + +Add the following lines to the end of your `.zshrc` file: + +```zsh +keep_current_path() { + printf "\e]9;9;%s\e\\" "$(wslpath -w "$PWD")" +} +precmd_functions+=(keep_current_path) +``` + +The `precmd_functions` hook tells zsh what commands to run before displaying the prompt. The `printf` statement is what we're using to append the sequence for setting the working directory with the Terminal. The `$(wslpath -w "$PWD")` bit will invoke the `wslpath` executable to convert the current directory into its Windows-like path. Using `precmd_functions+=` make sure we append the `keep_current_path` function to any existing function already defined for this hook. > [!NOTE] > Don't see your favorite shell here? If you figure it out, feel free to open a PR to contribute a solution for your preferred shell! From 455fecdc890d33b0ffe87846649d4d98279c41bc Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Mon, 7 Mar 2022 16:47:39 -0800 Subject: [PATCH 40/80] Add acrylic issues to troubleshooting (#518) * Add acrylic issues to troubleshooting doc * Add autohide cursor setting * Add windows settings differentiator --- TerminalDocs/troubleshooting.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/TerminalDocs/troubleshooting.md b/TerminalDocs/troubleshooting.md index 4c045c62..759be15f 100644 --- a/TerminalDocs/troubleshooting.md +++ b/TerminalDocs/troubleshooting.md @@ -3,7 +3,7 @@ title: Windows Terminal Troubleshooting description: Learn fixes to common obstacles in Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/08/2021 +ms.date: 03/07/2022 ms.topic: overview --- @@ -119,21 +119,22 @@ Application developers are encouraged to choose either Windows API functions _or ### Keyboard service warning Starting in Windows Terminal 1.5, the Terminal will display a warning if the "Touch Keyboard and Handwriting Panel Service" is disabled. This service is needed by the operating system to properly route input events to the Terminal application (as well as many other applications on Windows). If you see this warning, you can follow these steps to re-enable the service: + 1. In the run dialog, run `services.msc` - ![services.msc in the run dialog](https://user-images.githubusercontent.com/18356694/97891741-c81eed00-1cf4-11eb-9d48-7b94fede5294.png) + ![services.msc in the run dialog](https://user-images.githubusercontent.com/18356694/97891741-c81eed00-1cf4-11eb-9d48-7b94fede5294.png) 2. Find the "Touch Keyboard and Handwriting Panel Service" - ![Touch Keyboard and Handwriting Panel Service in Services.msc](https://user-images.githubusercontent.com/18356694/97891813-e1279e00-1cf4-11eb-91c8-69a5c6da6c3d.png) + ![Touch Keyboard and Handwriting Panel Service in Services.msc](https://user-images.githubusercontent.com/18356694/97891813-e1279e00-1cf4-11eb-91c8-69a5c6da6c3d.png) 3. Open the "Properties" for this service - ![service properties](https://user-images.githubusercontent.com/18356694/97891923-03212080-1cf5-11eb-90cc-821a4fbf16ba.png) + ![service properties](https://user-images.githubusercontent.com/18356694/97891923-03212080-1cf5-11eb-90cc-821a4fbf16ba.png) 4. Change the "startup type" to "Automatic" - ![service startup type](https://user-images.githubusercontent.com/18356694/97892043-25b33980-1cf5-11eb-8833-a2e65a306a79.png) + ![service startup type](https://user-images.githubusercontent.com/18356694/97892043-25b33980-1cf5-11eb-8833-a2e65a306a79.png) 5. Hit "Ok", and restart the PC. @@ -164,3 +165,15 @@ To reset your settings back to the original default settings, delete your [setti > [!IMPORTANT] > As of Windows Terminal version 1.10 or greater, you'll also need to delete the `state.json` file in the same directory as the `settings.json` file to fully reset the settings to the defaults. + +## Why is Acrylic opacity not making my Windows Terminal background transparent? + +You can set the transparency of a terminal window with the [`useAcrylic` property](./customize-settings/profile-appearance.md#transparency). There are a few reasons why your opacity setting may not be working for Acrylic, including: + +- As a system-wide policy, acrylic is only enabled for the foreground window. So if you activate any other window than the Terminal, the Terminal's acrylic will turn off. +- Acrylic doesn't work if your GPU hardware does not support it. If you're running an app in a Virtual Machine (VM) or over remote desktop, acrylic likely will not work. +- Acrylic can be disabled by the operating system for a number of reasons, like being in power saver (low-battery) mode or when accessing a machine using Remote Desktop. + +## Why does my mouse pointer disappear when hovering over a window and typing? + +This cursor auto-hiding behavior is by design, but can be disabled in the by searching in Windows Settings for "Mouse settings" > "Additional Mouse Settings" > "Mouse Properties" > "Pointer Options" > Uncheck "Hide pointer while typing". You may need to restart your Windows Terminal in order for this change to take effect. From 20c9e7925069317f4af1a3a0b3d0731f0acc6741 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 7 Mar 2022 19:53:29 -0500 Subject: [PATCH 41/80] command-palette: simplify example for iterable commands (#511) --- TerminalDocs/command-palette.md | 52 ++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/TerminalDocs/command-palette.md b/TerminalDocs/command-palette.md index c3f86e4b..14922245 100644 --- a/TerminalDocs/command-palette.md +++ b/TerminalDocs/command-palette.md @@ -78,15 +78,10 @@ Create a new tab command for each profile. ```json { - "name": "New tab", - "commands": [ - { - "iterateOn": "profiles", - "icon": "${profile.icon}", - "name": "${profile.name}", - "command": { "action": "newTab", "profile": "${profile.name}" } - } - ] + "iterateOn": "profiles", + "icon": "${profile.icon}", + "name": "${profile.name}", + "command": { "action": "newTab", "profile": "${profile.name}" } } ``` @@ -109,22 +104,33 @@ The above command would behave like the following three commands: ```json { - "name": "New tab...", + "icon": null, + "name": "Command Prompt", + "command": { "action": "newTab", "profile": "Command Prompt" } +}, +{ + "icon": "C:\\path\\to\\icon", + "name": "PowerShell", + "command": { "action": "newTab", "profile": "PowerShell" } +}, +{ + "icon": null, + "name": "Ubuntu", + "command": { "action": "newTab", "profile": "Ubuntu" } +} +``` + +It's also possible to combine nested and iterable commands. For example, you can combine the three "new tab" commands above under a single "New tab" entry in the command palette, as shown in the image above, in the following way: + +```json +{ + "name": "New tab", "commands": [ { - "icon": null, - "name": "Command Prompt", - "command": { "action": "newTab", "profile": "Command Prompt" } - }, - { - "icon": "C:\\path\\to\\icon", - "name": "PowerShell", - "command": { "action": "newTab", "profile": "PowerShell" } - }, - { - "icon": null, - "name": "Ubuntu", - "command": { "action": "newTab", "profile": "Ubuntu" } + "iterateOn": "profiles", + "icon": "${profile.icon}", + "name": "${profile.name}", + "command": { "action": "newTab", "profile": "${profile.name}" } } ] } From 371d016ce276b13bf30d2cada17da3884b87fc1f Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Mon, 7 Mar 2022 16:55:11 -0800 Subject: [PATCH 42/80] Move iterable commands gif lower down --- TerminalDocs/command-palette.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/command-palette.md b/TerminalDocs/command-palette.md index 14922245..2c24c7c9 100644 --- a/TerminalDocs/command-palette.md +++ b/TerminalDocs/command-palette.md @@ -74,8 +74,6 @@ You can currently iterate over the following properties: Create a new tab command for each profile. -![Windows Terminal iterable commands](./images/command-palette-iterable-commands.gif) - ```json { "iterateOn": "profiles", @@ -136,6 +134,8 @@ It's also possible to combine nested and iterable commands. For example, you can } ``` +![Windows Terminal iterable commands](./images/command-palette-iterable-commands.gif) + ## Hiding a command If you would like to keep a command in your key bindings list but not have it appear in the command palette, you can hide it by setting its `name` to `null`. The example below hides the "New tab" action from the command palette. From 5319bb4e2937bcf3a08f1685ab2b81e8930ab6ff Mon Sep 17 00:00:00 2001 From: "Paul \"TBBle\" Hampson" Date: Tue, 8 Mar 2022 11:57:27 +1100 Subject: [PATCH 43/80] Quoted the env-var for `setx PROMPT` (#502) --- TerminalDocs/tutorials/new-tab-same-directory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index b6ef2e68..f0c7555f 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -45,7 +45,7 @@ This will append `$e]9;9;$P$e\` to your current prompt. When cmd evaluates this Note that the above command will only work for the current `cmd.exe` session. To set the value permanently, AFTER running the above command, you'll want to run ```cmd -setx PROMPT %PROMPT% +setx PROMPT "%PROMPT%" ``` #### PowerShell: `powershell.exe` or `pwsh.exe` From 3ca01c183204b8628901e108eb221e633ebf7133 Mon Sep 17 00:00:00 2001 From: Joshua Cook Date: Mon, 7 Mar 2022 19:02:43 -0600 Subject: [PATCH 44/80] Updated --title documentation to specify behavior for panes (#500) --- TerminalDocs/command-line-arguments.md | 30 ++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index 6a52a97f..c7e23a22 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -335,9 +335,9 @@ Execution aliases do not work in WSL distributions. If you want to use wt.exe fr --- -### Tab title +### Pane title -To open a new terminal instance with custom tab titles, use the `--title` argument. To set the title of each tab when opening two tabs, enter: +To open a new terminal instance with custom titles for each terminal pane, use the `--title` argument. To set the title of each pane when opening multiple tabs, enter: #### [Command Prompt](#tab/windows) @@ -363,6 +363,32 @@ Execution aliases do not work in WSL distributions. If you want to use wt.exe fr --- +Panes in the same tab can have different titles, which will reflect on the tab title depending on which pane has focus. To name independent panes, you can set the title after splitting the panes by entering: + + +#### [Command Prompt](#tab/windows) + +```cmd +wt --title pane1 ; split-pane -p "Command Prompt" --title pane2 +``` + +#### [PowerShell](#tab/powershell) + +```powershell +wt --title pane1 `; split-pane -p "Command Prompt" --title pane2 +``` + +#### [Linux](#tab/linux) + +```bash +cmd.exe /c "wt.exe" --title pane1 \; split-pane -p "Command Prompt" --title pane2 +``` + +Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running `cmd.exe`. The `/c` option tells CMD to terminate after running and the `\;` forward-slash + semicolon separates commands. + +--- + + ### Using application title To open a new terminal instance allowing applications within it to set the tab title by sending title change messages, use the `--useApplicationTitle` flag. To suppress these messages, use the `--suppressApplicationTitle` flag. If none of these flags are provided, the behavior is inherited from the profile's settings. To open a tab with title `tabname` that will not be overridden by the application, enter: From 675b72adf08a940aefb804814b79b98b8aa37028 Mon Sep 17 00:00:00 2001 From: Aaron Junker Date: Thu, 31 Mar 2022 22:00:21 +0200 Subject: [PATCH 45/80] push (#520) --- TerminalDocs/tutorials/ssh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/ssh.md b/TerminalDocs/tutorials/ssh.md index 8d1e8015..55c10619 100644 --- a/TerminalDocs/tutorials/ssh.md +++ b/TerminalDocs/tutorials/ssh.md @@ -10,7 +10,7 @@ ms.topic: tutorial # Tutorial: SSH in Windows Terminal -Windows 10 has a built-in SSH client that you can use in Windows Terminal. +Windows has a built-in SSH client that you can use in Windows Terminal. In this tutorial, you'll learn how to set up a profile in Windows Terminal that uses SSH. From cf43c2311e549ee10e9e9e87741d4787992d21ab Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Fri, 8 Apr 2022 15:21:32 -0400 Subject: [PATCH 46/80] json-fragment-extensions: output GUIDs in "registry format" (#515) --- TerminalDocs/json-fragment-extensions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TerminalDocs/json-fragment-extensions.md b/TerminalDocs/json-fragment-extensions.md index f6248bac..f3c1f573 100644 --- a/TerminalDocs/json-fragment-extensions.md +++ b/TerminalDocs/json-fragment-extensions.md @@ -109,8 +109,8 @@ appNamespaceGUID = uuid.uuid5(terminalNamespaceGUID, "Git".encode("UTF-16LE").de # Calculate the example GUID for the 'Git Bash' profile profileGUID = uuid.uuid5(appNamespaceGUID, "Git Bash".encode("UTF-16LE").decode("ASCII")) -# Output the GUID -print(profileGUID) +# Output the GUID as Windows Terminal expects it (enclosed in curly brackets) +print(f"{{{profileGUID}}}") ``` @@ -127,8 +127,8 @@ terminalNamespaceGUID = uuid.UUID("{2bde4a90-d05f-401c-9492-e40884ead1d8}") # Calculate the example GUID for the 'Git Bash' profile profileGUID = uuid.uuid5(terminalNamespaceGUID, "Ubuntu".encode("UTF-16LE").decode("ASCII")) -# Output the GUID -print(profileGUID) +# Output the GUID as Windows Terminal expects it (enclosed in curly brackets) +print(f"{{{profileGUID}}}") ``` From 682ad653f1c88b4afe4e3f9dda44faf02305b329 Mon Sep 17 00:00:00 2001 From: Jan De Dobbeleer <2492783+JanDeDobbeleer@users.noreply.github.com> Date: Mon, 23 May 2022 01:59:49 +0200 Subject: [PATCH 47/80] fix(powerline): adjust docs to reflect oh-my-posh changes (#534) --- TerminalDocs/tutorials/custom-prompt-setup.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 484e2376..6a699c43 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -40,14 +40,12 @@ To set a Nerd Font for use with Oh My Posh and Terminal Icons, open the Windows Oh My Posh enables you to use a full color set to define and render your terminal prompt, including the ability to use built-in themes or create your own custom theme. -If you want to use the same custom prompt themes across both PowerShell and WSL, we recommend installing Oh My Posh using [winget](/windows/package-manager/winget), the official Windows Package Manager. It's included with Windows 11, but you may need to install it if you're running Windows 10. Then follow the `winget` install instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). - ### Install Oh My Posh for PowerShell -To customize your PowerShell prompt, you can install Oh My Posh using the [PowerShell install-module](/powershell/module/powershellget/install-module). Enter the command: +To customize your PowerShell prompt, you can install Oh My Posh using [winget](/windows/package-manager/winget). Enter the command: ```powershell -Install-Module oh-my-posh -Scope CurrentUser +winget install oh-my-posh ``` This will install: @@ -55,10 +53,10 @@ This will install: - `oh-my-posh.exe`: The Windows executable - `themes`: The latest [Oh My Posh themes](https://ohmyposh.dev/docs/themes) -You may also want to enter this command to ensure you have the latest updates: `Update-Module oh-my-posh`. +To ensure you have the latest updates, you can use the following command: `winget upgrade oh-my-posh`. > [!NOTE] -> If you are more familiar with the [Scoop](https://scoop.sh/) installer or [Chocolatey](https://chocolatey.org/) package manager, these can also be used for installing on Windows, just follow the instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/windows). +> If you are more familiar with the [Scoop](https://scoop.sh/) installer or a manual installation method that allows automation, these can also be used for installing on Windows, just follow the instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/installation/windows). ### Choose and apply a PowerShell prompt theme @@ -73,8 +71,7 @@ notepad $PROFILE Add the following to the end of your PowerShell profile file to set the `paradox` theme. (Replace `paradox` with the theme of your choice.) ```powershell -Import-Module oh-my-posh -Set-PoshPrompt -Theme paradox +oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\paradox.omp.json" | Invoke-Expression ``` Now, each new PowerShell instance will start by importing Oh My Posh and setting your command line theme. @@ -88,7 +85,7 @@ Oh My Posh now allows you to customize WSL prompts, just like you would a PowerS ### Install Oh My Posh for WSL -We recommend installing Oh My Posh for WSL, whether using Bash, Zsh, or something else, by following the [Linux install guide in the Oh My Posh docs](https://ohmyposh.dev/docs/linux). +We recommend installing Oh My Posh for WSL, whether using Bash, Zsh, or something else, by following the [Linux install guide in the Oh My Posh docs](https://ohmyposh.dev/docs/installation/linux). Currently the recommended path for customizing WSL prompts with Oh My Posh uses the [Homebrew package manager](https://brew.sh/) for installation. (Homebrew works with WSL now!) When installing Homebrew for Linux, be sure to follow [Next steps](https://docs.brew.sh/Homebrew-on-Linux#install) instructions to add Homebrew to your PATH and to your bash shell profile script. @@ -109,12 +106,12 @@ eval "$(oh-my-posh --init --shell bash --config ~/jandedobbeleer.omp.json)" You can replace `jandedobbeleer.omp.json` with the name of whichever theme you prefer to use as long as it's copied to your `$Home` folder. -Alternatively, if you are using oh-my-posh in both Windows with PowerShell and with WSL, you can share your PowerShell theme with WSL by pointing to a theme in your Windows user's home folder. In your WSL distribution's `.profile` path, replace ~ with the path: `/mnt/c/Users/`. Replacing `` with your own Windows username. You may also need to add `$env:POSH_PATH` to your $PATH if you have only installed the Oh My Posh executable for PowerShell. +Alternatively, if you are using oh-my-posh in both Windows with PowerShell and with WSL, you can share your PowerShell theme with WSL by pointing to a theme in your Windows user's home folder. In your WSL distribution's `.profile` path, replace ~ with the path: `/mnt/c/Users/`. Replacing `` with your own Windows username. -You can [customize the Oh My Posh themes](https://ohmyposh.dev/docs/linux#customize) if desired. +You can [customize the Oh My Posh themes](https://ohmyposh.dev/docs/installation/customize) if desired. ## Use Terminal-Icons to add missing folder or file icons From 0781e4c4fec948f8637def6c016d735971be9bab Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Sun, 22 May 2022 17:58:40 -0700 Subject: [PATCH 48/80] Merge release-1.14 into main (#544) Co-authored-by: Kayla Cinnamon Co-authored-by: Carlos Zamora --- TerminalDocs/command-line-arguments.md | 4 +- TerminalDocs/customize-settings/actions.md | 132 +++++++----------- TerminalDocs/customize-settings/appearance.md | 22 ++- .../customize-settings/interaction.md | 9 +- .../customize-settings/profile-advanced.md | 25 +++- .../customize-settings/profile-general.md | 7 +- 6 files changed, 93 insertions(+), 106 deletions(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index c7e23a22..3248dd9d 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -3,7 +3,7 @@ title: Windows Terminal command line arguments description: Learn how to create command line arguments for Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/15/2021 +ms.date: 05/24/2022 ms.topic: how-to --- @@ -49,7 +49,7 @@ Below is the full list of supported commands and options for the `wt` command li | `new-tab`, `nt` | `--tabColor` | Creates a new tab with the tab color assigned. | Hex color as #RGB or #RRGGBB | > [!TIP] -> If you change the title of a tab in Windows Terminal and want that title to persist, you must enable the [suppressApplicationTitle](./customize-settings/actions.md#actions-6) option by setting it to `true`. +> If you change the title of a tab in Windows Terminal and want that title to persist, you must enable the [suppressApplicationTitle](./customize-settings/profile-advanced#suppress-title-changes) option by setting it to `true`. ### `Split-pane` command diff --git a/TerminalDocs/customize-settings/actions.md b/TerminalDocs/customize-settings/actions.md index d0661218..2941825e 100644 --- a/TerminalDocs/customize-settings/actions.md +++ b/TerminalDocs/customize-settings/actions.md @@ -3,7 +3,7 @@ title: Windows Terminal Actions description: Learn how to create custom actions for Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 02/03/2022 +ms.date: 05/24/2022 ms.topic: how-to --- @@ -190,7 +190,7 @@ This lets you navigate through your search matches. { "command": { "action": "findMatch", "direction": "prev" } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -223,7 +223,7 @@ Without the `target` field, the custom settings file will be opened. { "command": { "action": "openSettings", "target": "defaultsFile" }, "keys": "ctrl+alt+," }, ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -296,7 +296,7 @@ _This command is not currently bound in the default settings_. { "command": { "action": "sendInput", "input": "\u001b[A" }, "keys": "" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -314,7 +314,7 @@ This closes the tab at a given index. If no index is provided, use the focused t **Command name:** `closeTab` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -332,7 +332,7 @@ This closes all tabs except for the one at an index. If no index is provided, us { "command": "closeOtherTabs" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -350,7 +350,7 @@ This closes the tabs following the tab at an index. If no index is provided, use { "command": "closeTabsAfter" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -370,7 +370,7 @@ This makes a copy of the current tab's profile and directory and opens it. This ### 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. +This creates a new tab. Without any arguments, this will open the default profile in a new tab. If an index is not specified, the default profile's equivalent setting will be used. If the index doesn't map to a profile, the keys are passed directly to the terminal (or ignored if no keys were used to invoke the action). **Command name:** `newTab` @@ -389,22 +389,19 @@ This creates a new tab. Without any arguments, this will open the default profil { "command": { "action": "newTab", "index": 8 }, "keys": "ctrl+shift+9" } ``` -#### Actions +#### Parameters | 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. | -| `elevate` | Optional | `true`, `false`, `null` | Overrides the [`elevate`](./profile-general.md#automatically-run-as-administrator-preview) property of the profile. When omitted, this action will behave according to the profile's `elevate` setting. When set to `true` or `false`, this action will behave as though the profile was set with `"elevate": true` or `"elevate": false` (respectively). | +| `elevate` | Optional | `true`, `false`, `null` | Overrides the [`elevate`](./profile-general.md#automatically-run-as-administrator) property of the profile. When omitted, this action will behave according to the profile's `elevate` setting. When set to `true` or `false`, this action will behave as though the profile was set with `"elevate": true` or `"elevate": false` (respectively). | | `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. In order to enter a new tab title and have that title persist, this must be set to true. | -> [!IMPORTANT] -> The `elevate` property is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ### Open next tab This opens the tab to the right of the current one. @@ -417,7 +414,7 @@ This opens the tab to the right of the current one. { "command": "nextTab", "keys": "ctrl+tab" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -435,7 +432,7 @@ This opens the tab to the left of the current one. { "command": "prevTab", "keys": "ctrl+shift+tab" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -484,7 +481,7 @@ This opens a specific tab depending on the index. { "command": { "action": "switchToTab", "index": 8 }, "keys": "ctrl+alt+9" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -508,7 +505,7 @@ _This command is not currently bound in the default settings_. { "command": { "action": "renameTab", "title": null }, "keys": "" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -544,7 +541,7 @@ _This command is not currently bound in the default settings_. { "command": { "action": "setTabColor", "color": null }, "keys": "" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -578,7 +575,7 @@ This command moves the tab "backward" and "forward", which is equivalent to "lef { "command": { "action": "moveTab", "direction": "forward" } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -602,7 +599,7 @@ This creates a new window. Without any arguments, this will open the default pro { "command": "newWindow", "keys": "ctrl+shift+n" }, ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -631,7 +628,7 @@ _This command is not currently bound in the default settings_. { "command": { "action": "renameWindow", "name": null }, "keys": "" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -709,7 +706,7 @@ This changes focus to a different pane depending on the direction. Setting the ` { "command": { "action": "moveFocus", "direction": "previous" }, "keys": "ctrl+alt+left" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -751,7 +748,7 @@ This changes the size of the active pane. { "command": { "action": "resizePane", "direction": "up" }, "keys": "alt+shift+up" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -790,14 +787,14 @@ This halves the size of the active pane and opens another. Without any arguments { "command": { "action": "splitPane", "split": "left" } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | | `split` | Required | `"vertical"`, `"horizontal"`, `"auto"`, `"up"`, `"right"`, `"down"`, `"left"` | 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. | -| `elevate` | Optional | `true`, `false`, `null` | Overrides the [`elevate`](./profile-general.md#automatically-run-as-administrator-preview) property of the profile. When omitted, this action will behave according to the profile's `elevate` setting. When set to `true` or `false`, this action will behave as though the profile was set with `"elevate": true` or `"elevate": false` (respectively). | +| `elevate` | Optional | `true`, `false`, `null` | Overrides the [`elevate`](./profile-general.md#automatically-run-as-administrator) property of the profile. When omitted, this action will behave according to the profile's `elevate` setting. When set to `true` or `false`, this action will behave as though the profile was set with `"elevate": true` or `"elevate": false` (respectively). | | `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. | @@ -806,9 +803,6 @@ This halves the size of the active pane and opens another. Without any arguments | `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`. | -> [!IMPORTANT] -> The `elevate` property is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). -
___ @@ -832,50 +826,13 @@ This copies the selected terminal content to your clipboard. If no selection exi { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+insert" } ``` -#### Actions +#### Parameters | 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. | -### Keyboard selection - -This modifies an existing selection. If no selection exists, the key chord is sent directly to the terminal. - -**Command name:** `updateSelection` - -**Default bindings:** - -```json -// Move by character -{ "command": {"action": "updateSelection", "direction": "left", "mode": "char" }, "keys": "shift+left" }, -{ "command": {"action": "updateSelection", "direction": "right", "mode": "char" }, "keys": "shift+right" }, -{ "command": {"action": "updateSelection", "direction": "up", "mode": "char" }, "keys": "shift+up" }, -{ "command": {"action": "updateSelection", "direction": "down", "mode": "char" }, "keys": "shift+down" }, - -// Move by word -{ "command": {"action": "updateSelection", "direction": "left", "mode": "word" }, "keys": "ctrl+shift+left" }, -{ "command": {"action": "updateSelection", "direction": "right", "mode": "word" }, "keys": "ctrl+shift+right" }, - -// Move by viewport -{ "command": {"action": "updateSelection", "direction": "left", "mode": "view" }, "keys": "shift+home" }, -{ "command": {"action": "updateSelection", "direction": "right", "mode": "view" }, "keys": "shift+end" }, -{ "command": {"action": "updateSelection", "direction": "up", "mode": "view" }, "keys": "shift+pgup" }, -{ "command": {"action": "updateSelection", "direction": "down", "mode": "view" }, "keys": "shift+pgdn" }, - -// Move by buffer -{ "command": {"action": "updateSelection", "direction": "up", "mode": "buffer" }, "keys": "ctrl+shift+home" }, -{ "command": {"action": "updateSelection", "direction": "down", "mode": "buffer" }, "keys": "ctrl+shift+end" }, -``` - -#### Actions - -| Name | Necessity | Accepts | Description | -| ---- | --------- | ------- | ----------- | -| `direction` | Required | `"left"`, `"right"`, `"up"`, `"down"` | Direction in which the selection endpoint will move. | -| `mode` | Required | `"char"`, `"word"`, `"view"`, `"buffer"` | Controls how much the endpoint moves by. | - ### Paste This inserts the content that was copied onto the clipboard. @@ -893,6 +850,21 @@ This inserts the content that was copied onto the clipboard. { "command": "paste", "keys": "shift+insert" } ``` +### Select all ([Preview](https://aka.ms/terminal-preview)) + +This selects all of the content in the text buffer. + +**Command name:** `selectAll` + +**Default bindings:** + +```json +{ "command": "selectAll", "keys": "ctrl+shift+a" } +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). +
___ @@ -911,7 +883,7 @@ This scrolls the screen up by the number of rows defined by `"rowsToScroll"`. If { "command": "scrollUp", "keys": "ctrl+shift+up" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -929,7 +901,7 @@ This scrolls the screen down by the number of rows defined by `"rowsToScroll"`. { "command": "scrollDown", "keys": "ctrl+shift+down" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -997,7 +969,7 @@ This action can be used to manually clear the terminal buffer. This is useful fo { "command": { "action": "clearBuffer", "clear": "all" } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -1022,7 +994,7 @@ This changes the text size by a specified point amount. { "command": { "action": "adjustFontSize", "delta": -1 }, "keys": "ctrl+numpad_minus" } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -1041,7 +1013,7 @@ This resets the text size to the default value. { "command": "resetFontSize", "keys": "ctrl+numpad_0" } ``` -### Adjust opacity ([Preview](https://aka.ms/terminal-preview)) +### Adjust opacity This changes the opacity of the window. If `relative` is set to true, it will adjust the opacity relative to the current opacity. Otherwise, it will set the opacity directly to the given `opacity` @@ -1056,16 +1028,13 @@ This changes the opacity of the window. If `relative` is set to true, it will ad { "command": { "action": "adjustOpacity", "relative": false, "opacity": 100 } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | | `opacity` | Optional | Integer | How opaque the terminal should become or how much the opacity should be changed by, depending on the value of `relative` | | `relative` | Optional | Boolean | If true, then adjust the current opacity by the given `opacity` parameter. If false, set the opacity to exactly that value. | -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ### 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`. @@ -1087,7 +1056,7 @@ Changes the active color scheme. **Command name:** `setColorScheme` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -1105,7 +1074,7 @@ ___ ## Buffer exporting -### Export buffer ([Preview](https://aka.ms/terminal-preview)) +### Export buffer This allows the user to export the text of the buffer to a file. If the file doesn't exist, it will be created. If the file already exists, its contents will be replaced with the Terminal buffer text. @@ -1117,15 +1086,12 @@ This allows the user to export the text of the buffer to a file. If the file doe { "command": { "action": "exportBuffer" } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | | `path` | Optional | String | If provided, then the Terminal will export the buffer contents to the given file. Otherwise, the terminal will open a file picker to choose the file to export to. | -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ___ ## Global commands @@ -1153,7 +1119,7 @@ _This command is not currently bound in the default settings_. { "keys": "", "command": { "action": "globalSummon" } } ``` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | @@ -1260,7 +1226,7 @@ This action allows the user to bind multiple sequential actions to one command. **Command name:** `multipleActions` -#### Actions +#### Parameters | Name | Necessity | Accepts | Description | | ---- | --------- | ------- | ----------- | diff --git a/TerminalDocs/customize-settings/appearance.md b/TerminalDocs/customize-settings/appearance.md index 2afca423..7f7f8cd7 100644 --- a/TerminalDocs/customize-settings/appearance.md +++ b/TerminalDocs/customize-settings/appearance.md @@ -3,7 +3,7 @@ title: Windows Terminal Appearance Settings description: Learn how to customize appearance settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/08/2021 +ms.date: 05/24/2022 ms.topic: how-to --- @@ -219,5 +219,21 @@ When this is set to `true`, closing a window with multiple tabs open _will_ requ :::column span=""::: ![Windows Terminal confirm close all tabs](./../images/confirm-close-all-tabs.png) -:::column-end::: -:::row-end::: +
+ +___ + +## Use a background image for the entire window ([Preview](https://aka.ms/terminal-preview)) + +When set to `true`, the background image for the currently focused profile is expanded to encompass the entire window, beneath other panes. This is an experimental feature, and its continued existence is not guaranteed. + +**Property name:** `experimental.useBackgroundImageForWindow` + +**Necessity:** Optional + +**Accepts:** `true`, `false` + +**Default value:** `false` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). diff --git a/TerminalDocs/customize-settings/interaction.md b/TerminalDocs/customize-settings/interaction.md index b6539de5..65e96588 100644 --- a/TerminalDocs/customize-settings/interaction.md +++ b/TerminalDocs/customize-settings/interaction.md @@ -3,7 +3,7 @@ title: Windows Terminal Interaction Settings description: Learn how to customize interaction settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 02/03/2022 +ms.date: 05/24/2022 ms.topic: how-to --- @@ -53,13 +53,13 @@ When this is set to `true` and you copy text in a rectangular (block) selection **Accepts:** `true`, `false` -**Default value:** `false` +**Default value:** `true`
___ -## Trim trailing whitespace on paste ([Preview](https://aka.ms/terminal-preview)) +## Trim trailing whitespace on paste When enabled, the terminal will automatically trim trailing whitespace characters when pasting text to the terminal. @@ -71,9 +71,6 @@ When enabled, the terminal will automatically trim trailing whitespace character **Default value:** `true` -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ___ ## Word delimiters diff --git a/TerminalDocs/customize-settings/profile-advanced.md b/TerminalDocs/customize-settings/profile-advanced.md index a65bdaa9..2d41aedc 100644 --- a/TerminalDocs/customize-settings/profile-advanced.md +++ b/TerminalDocs/customize-settings/profile-advanced.md @@ -3,7 +3,7 @@ title: Windows Terminal Advanced Profile Settings description: Learn how to customize the advanced profile settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 02/03/2022 +ms.date: 05/24/2022 ms.topic: how-to --- @@ -137,7 +137,7 @@ Controls what happens when the application emits a BEL character. When set to `" ___ -## Bell sound ([Preview](https://aka.ms/terminal-preview)) +## Bell sound When `bellStyle` is set to `"all"` or `"audible"`, this allows you to choose the audio file for the bell. If you have an array of sounds set, the terminal will pick one at random. @@ -147,18 +147,29 @@ When `bellStyle` is set to `"all"` or `"audible"`, this allows you to choose the **Accepts:** File location as a string or an array of file locations as strings -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). +___ + +## Experimental text rendering engine + +Enables use of the experimental text rendering engine for the profile. This is an experimental feature and its continued existence is not guaranteed. A new instance of the profile needs to be opened in order for this setting to take effect. + +**Property name:** `experimental.useAtlasEngine` + +**Necessity:** Optional + +**Accepts:** `true`, `false` + +**Default value:** `false`
___ -## Experimental text rendering engine ([Preview](https://aka.ms/terminal-preview)) +## VT passthrough mode ([Preview](https://aka.ms/terminal-preview)) -Enables use of the experimental text rendering engine for the profile. This is an experimental feature and its continued existence is not guaranteed. A new instance of the profile needs to be opened in order for this setting to take effect. +When set to true, directs the PTY for this connection to use pass-through mode instead of the original Conhost PTY simulation engine. This is an experimental feature, and its continued existence is not guaranteed. -**Property name:** `experimental.useAtlasEngine` +**Property name:** `experimental.connection.passthroughMode` **Necessity:** Optional diff --git a/TerminalDocs/customize-settings/profile-general.md b/TerminalDocs/customize-settings/profile-general.md index 510d7469..cb7a4554 100644 --- a/TerminalDocs/customize-settings/profile-general.md +++ b/TerminalDocs/customize-settings/profile-general.md @@ -3,7 +3,7 @@ title: Windows Terminal General Profile Settings description: Learn how to customize the general profile settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 02/03/2022 +ms.date: 05/24/2022 ms.topic: how-to --- @@ -107,7 +107,7 @@ If set, this will replace the `name` as the title to pass to the shell on startu
___ -## Automatically run as Administrator ([Preview](https://aka.ms/terminal-preview)) +## Automatically run as Administrator If set, this profile will automatically open up in an "elevated" window (running as Administrator) by default. If you run this profile from an unelevated window, then a new elevated terminal window will be created to host this profile. If you launch this profile from an already elevated window, then it will open as a new tab. @@ -127,9 +127,6 @@ Elevated and unelevated tabs cannot exist in the same terminal window. For more **Default value:** `false` -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). -
___ From 26c486ffbaccabe0b8f6bda3b598b7ad76acf7e3 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Sun, 22 May 2022 18:00:13 -0700 Subject: [PATCH 49/80] Fix link --- TerminalDocs/command-line-arguments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index 3248dd9d..ac9d3234 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -49,7 +49,7 @@ Below is the full list of supported commands and options for the `wt` command li | `new-tab`, `nt` | `--tabColor` | Creates a new tab with the tab color assigned. | Hex color as #RGB or #RRGGBB | > [!TIP] -> If you change the title of a tab in Windows Terminal and want that title to persist, you must enable the [suppressApplicationTitle](./customize-settings/profile-advanced#suppress-title-changes) option by setting it to `true`. +> If you change the title of a tab in Windows Terminal and want that title to persist, you must enable the [suppressApplicationTitle](./customize-settings/profile-advanced.md#suppress-title-changes) option by setting it to `true`. ### `Split-pane` command From b80f3cf6ca9ae98c6a55e0d6d8528ed27a5cd380 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 9 Jun 2022 14:56:11 -0700 Subject: [PATCH 50/80] Add package id command for winget (#548) --- TerminalDocs/images/oh-my-posh-winget.png | Bin 0 -> 73682 bytes TerminalDocs/tutorials/custom-prompt-setup.md | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 TerminalDocs/images/oh-my-posh-winget.png diff --git a/TerminalDocs/images/oh-my-posh-winget.png b/TerminalDocs/images/oh-my-posh-winget.png new file mode 100644 index 0000000000000000000000000000000000000000..4cfd17c3f7522d11cb73f5b68e21f8a3e5b13b0f GIT binary patch literal 73682 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 literal 0 HcmV?d00001 diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 6a699c43..f2f24e5b 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -53,6 +53,10 @@ This will install: - `oh-my-posh.exe`: The Windows executable - `themes`: The latest [Oh My Posh themes](https://ohmyposh.dev/docs/themes) +You will need to agree to the source terms and may run into the instance that more than one package is available. In this case, select package ID that you wish to use and re-enter the command: `winget install `. + +![Screenshot of winget install oh my posh packages.](../images/oh-my-posh-winget.png) + To ensure you have the latest updates, you can use the following command: `winget upgrade oh-my-posh`. > [!NOTE] From 51425a8aac4669bef2360c2e892a23e78371a89d Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Wed, 6 Jul 2022 11:38:02 -0500 Subject: [PATCH 51/80] clarify (#551) --- TerminalDocs/install.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TerminalDocs/install.md b/TerminalDocs/install.md index 40021659..652558cf 100644 --- a/TerminalDocs/install.md +++ b/TerminalDocs/install.md @@ -19,7 +19,10 @@ To try the latest preview features, you may also want to [install Windows Termin > [!NOTE] > If you don't have access to the Microsoft Store, the builds are published on the **[GitHub releases page](https://github.com/microsoft/terminal/releases)**. If you install from GitHub, Windows Terminal will not automatically update with new versions. For additional installation options using a package manager (winget, chocolatey, scoop), see the **[Windows Terminal product repo](https://github.com/microsoft/terminal#other-install-methods)**. -## Set your default terminal application ([Preview](https://aka.ms/terminal-preview)) +## Set your default terminal application + +> [!IMPORTANT] +> This feature is only available in [Windows 11](https://www.microsoft.com/windows/). To open any command line application with Windows Terminal, set it as your default terminal application. @@ -28,9 +31,6 @@ To open any command line application with Windows Terminal, set it as your defau ![Screenshot of Windows Terminal Startup default in Settings UI](./images/settings-default-shell.png) -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). - ## Set your default terminal profile After installation, when you open Windows Terminal, it will start with the [PowerShell](/powershell) command line as the default profile in the open tab. From 41875810b9c47d57fe7441bdd445410586fbcef1 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Wed, 6 Jul 2022 10:38:48 -0700 Subject: [PATCH 52/80] Merge release-1.15 into main (#554) * Document keyboard selection (#552) * minor tweaks * Document scroll marks * Fix warning * Remove old preview labels Co-authored-by: Carlos Zamora --- TerminalDocs/customize-settings/actions.md | 121 +++++++++++++++++- TerminalDocs/customize-settings/appearance.md | 7 +- .../customize-settings/profile-advanced.md | 39 +++++- TerminalDocs/selection.md | 85 ++++++++++++ 4 files changed, 239 insertions(+), 13 deletions(-) create mode 100644 TerminalDocs/selection.md diff --git a/TerminalDocs/customize-settings/actions.md b/TerminalDocs/customize-settings/actions.md index 2941825e..3b1c9694 100644 --- a/TerminalDocs/customize-settings/actions.md +++ b/TerminalDocs/customize-settings/actions.md @@ -3,7 +3,7 @@ title: Windows Terminal Actions description: Learn how to create custom actions for Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 05/24/2022 +ms.date: 07/06/2022 ms.topic: how-to --- @@ -823,7 +823,8 @@ This copies the selected terminal content to your clipboard. If no selection exi // In defaults.json { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+shift+c" }, -{ "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+insert" } +{ "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+insert" }, +{ "command": { "action": "copy", "singleLine": false }, "keys": "enter" } ``` #### Parameters @@ -850,7 +851,7 @@ This inserts the content that was copied onto the clipboard. { "command": "paste", "keys": "shift+insert" } ``` -### Select all ([Preview](https://aka.ms/terminal-preview)) +### Select all This selects all of the content in the text buffer. @@ -862,6 +863,48 @@ This selects all of the content in the text buffer. { "command": "selectAll", "keys": "ctrl+shift+a" } ``` +### Mark mode ([Preview](https://aka.ms/terminal-preview)) + +This toggles mark mode. Mark mode is a mode where you can use the keyboard to create a selection at the cursor's position in the terminal. + +**Command name:** `markMode` + +**Default bindings:** + +```json +{ "command": "markMode", "keys": "ctrl+shift+m" }, +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +### Switch selection marker ([Preview](https://aka.ms/terminal-preview)) + +When modifying a selection using the keyboard, you are moving one end of the selection around. You can use this action to switch to the other selection marker. + +**Command name:** `switchSelectionEndpoint` + +**Default bindings:** + +```json +{ "command": "switchSelectionEndpoint" }, +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +### Toggle block selection ([Preview](https://aka.ms/terminal-preview)) + +Makes the exisiting selection a block selection, meaning that the selected area is a rectangle, as opposed to wrapping to the beginning and end of each line. + +**Command name:** `toggleBlockSelection` + +**Default bindings:** + +```json +{ "command": "toggleBlockSelection" }, +``` + > [!IMPORTANT] > This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). @@ -1068,6 +1111,78 @@ Changes the active color scheme. { "command": { "action": "setColorScheme", "colorScheme": "Campbell" }, "keys": "" } ``` +### Experimental add scroll mark ([Preview](https://aka.ms/terminal-preview)) + +Adds a scroll mark to the text buffer. If there's a selection, the mark is placed at the selection, otherwise it's placed at the cursor row. This is an experimental feature, and its continued existence is not guaranteed. + +**Command name:** `addMark` + +#### Parameters + +| Name | Necessity | Accepts | Description | +| ---- | --------- | ------- | ----------- | +| `color` | Optional | String, in hex format: `"#rgb"` or `"#rrggbb"` | The color of the mark. | + +**Example binding:** + +```json +{ "command": { "action": "addMark", "color": "#ff00ff" } } +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +### Experimental scroll to mark ([Preview](https://aka.ms/terminal-preview)) + +Scrolls to the scroll mark in the given direction. This is an experimental feature, and its continued existence is not guaranteed. + +**Command name:** `scrollToMark` + +#### Parameters + +| Name | Necessity | Accepts | Description | +| ---- | --------- | ------- | ----------- | +| `direction` | Required | `"first"`, `"previous"`, `"next"`, `"last"` | The direction in which to scroll. | + +**Example binding:** + +```json +{ "command": { "action": "scrollToMark", "direction": "previous" } } +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +### Experimental clear mark ([Preview](https://aka.ms/terminal-preview)) + +Clears scroll mark at the current position, either at a selection if there is one or at the cursor position. This is an experimental feature, and its continued existence is not guaranteed. + +**Command name:** `clearMark` + +**Example binding:** + +```json +{ "command": { "action": "clearMark" } } +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +### Experimental clear all marks ([Preview](https://aka.ms/terminal-preview)) + +Clears all scroll marks in the text buffer. This is an experimental feature, and its continued existence is not guaranteed. + +**Command name:** `clearAllMarks` + +**Example binding:** + +```json +{ "command": { "action": "clearAllMarks" } } +``` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). +
___ diff --git a/TerminalDocs/customize-settings/appearance.md b/TerminalDocs/customize-settings/appearance.md index 7f7f8cd7..4f7a8ce9 100644 --- a/TerminalDocs/customize-settings/appearance.md +++ b/TerminalDocs/customize-settings/appearance.md @@ -3,7 +3,7 @@ title: Windows Terminal Appearance Settings description: Learn how to customize appearance settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 05/24/2022 +ms.date: 07/06/2022 ms.topic: how-to --- @@ -223,7 +223,7 @@ When this is set to `true`, closing a window with multiple tabs open _will_ requ ___ -## Use a background image for the entire window ([Preview](https://aka.ms/terminal-preview)) +## Use a background image for the entire window When set to `true`, the background image for the currently focused profile is expanded to encompass the entire window, beneath other panes. This is an experimental feature, and its continued existence is not guaranteed. @@ -234,6 +234,3 @@ When set to `true`, the background image for the currently focused profile is ex **Accepts:** `true`, `false` **Default value:** `false` - -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). diff --git a/TerminalDocs/customize-settings/profile-advanced.md b/TerminalDocs/customize-settings/profile-advanced.md index 2d41aedc..ad615042 100644 --- a/TerminalDocs/customize-settings/profile-advanced.md +++ b/TerminalDocs/customize-settings/profile-advanced.md @@ -3,7 +3,7 @@ title: Windows Terminal Advanced Profile Settings description: Learn how to customize the advanced profile settings within Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 05/24/2022 +ms.date: 07/06/2022 ms.topic: how-to --- @@ -149,6 +149,38 @@ When `bellStyle` is set to `"all"` or `"audible"`, this allows you to choose the ___ +## Scroll marks ([Preview](https://aka.ms/terminal-preview)) + +The following settings modify how scroll marks behave in Windows Terminal. + +### Experimental automatically add scroll marks ([Preview](https://aka.ms/terminal-preview)) + +Automatically marks prompts when set to `true`. This is an experimental feature, and its continued existence is not guaranteed. + +**Property name:** `experimental.autoMarkPrompts` + +**Necessity:** Optional + +**Accepts:** `true`, `false` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +### Experimental show marks on scrollbar ([Preview](https://aka.ms/terminal-preview)) + +Displays marks on the scrollbar when set to `true`. This is an experimental feature, and its continued existence is not guaranteed. + +**Property name:** `experimental.showMarksOnScrollbar` + +**Necessity:** Optional + +**Accepts:** `true`, `false` + +> [!IMPORTANT] +> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). + +___ + ## Experimental text rendering engine Enables use of the experimental text rendering engine for the profile. This is an experimental feature and its continued existence is not guaranteed. A new instance of the profile needs to be opened in order for this setting to take effect. @@ -165,7 +197,7 @@ Enables use of the experimental text rendering engine for the profile. This is a ___ -## VT passthrough mode ([Preview](https://aka.ms/terminal-preview)) +## VT passthrough mode When set to true, directs the PTY for this connection to use pass-through mode instead of the original Conhost PTY simulation engine. This is an experimental feature, and its continued existence is not guaranteed. @@ -177,9 +209,6 @@ When set to true, directs the PTY for this connection to use pass-through mode i **Default value:** `false` -> [!IMPORTANT] -> This feature is only available in [Windows Terminal Preview](https://aka.ms/terminal-preview). -
___ diff --git a/TerminalDocs/selection.md b/TerminalDocs/selection.md new file mode 100644 index 00000000..33b21249 --- /dev/null +++ b/TerminalDocs/selection.md @@ -0,0 +1,85 @@ +--- +title: Selection +description: Learn how to select text in Windows Terminal. +author: cinnamon-msft +ms.author: cinnamon +ms.date: 07/06/2022 +ms.topic: how-to +--- + +# Selecting text in Windows Terminal + +Selecting text is straightforward in Windows Terminal, but there are a lot of additional features in this space that make it even better. + +## Mouse support + +Left-click and drag your mouse to create a selection. Double-click expands the selection by word, whereas triple-click expands by line. + +If you are holding the Alt key, you will create a block selection (as opposed to a line selection). Block selections create a rectangular region that do not wrap to the end of the line. + +If you are holding the Shift key, you can explicitly expand the selection to a specific point on the terminal without the need to click and drag. + +Once you have a selection present, you have a few options. A single left-click will clear your selection. If you actually want to use it, you can right-click to copy the selected text to your clipboard and clear the selection. If you right-click again, the contents of your clipboard will then be pasted into the terminal. + +> [!NOTE] +> Windows Terminal supports mouse input in Windows Subsystem for Linux (WSL) applications as well as Windows applications that use virtual terminal (VT) input. This means applications such as [tmux](https://github.com/tmux/tmux/wiki) and [Midnight Commander](https://www.linuxhelp.com/how-to-install-midnight-commander-in-linux) will recognize when you select items in the terminal window. If an application is in mouse mode, you can hold down Shift to make a selection instead of sending VT input. + +## Keyboard support + +You can create a selection by using the `selectAll` or `markMode` actions. The `selectAll` action selects all the text in the buffer. The `markMode` action toggles a special mode where a selection is created at the cursor's position in the terminal. When in mark mode, you can use the following non-configurable key bindings to move the cursor around: + +| Key binding | Result | +| ----------- | ------ | +| Arrow keys | Move by character in the specified direction | +| Ctrl + Left | Move to the beginning of the previous or existing word | +| Ctrl + Right | Move to the end of the next or existing word | +| Home | Move to the beginning of the line | +| End | Move to the end of the line | +| Pgup | Move up by a page (viewport) | +| Pgdn | Move down by a page (viewport) | +| Ctrl + Home | Move to the beginning of the buffer | +| Ctrl + End | Move to the end of the buffer | + +Regardless of being in mark mode, you can expand an existing selection using the following non-configurable key bindings: + +| Key binding | Result | +| ----------- | ------ | +| Shift + Arrow keys | Expand by character in the specified direction | +| Ctrl + Left | Expand to the beginning of the previous or existing word | +| Ctrl + Right | Expand to the end of the next or existing word | +| Shift + Home | Expand to the beginning of the line | +| Shift + End | Expand to the end of the line | +| Shift + Pgup | Expand up by a page (viewport) | +| Shift + Pgdn | Expand down by a page (viewport) | +| Ctrl + Shift + Home | Expand to the beginning of the buffer | +| Ctrl + Shift + End | Expand to the end of the buffer | + +Use the `toggleBlockSelection` action to transform the existing selection into a block selection. + +Any selection created or modified by the keyboard also displays selection markers to indicate which end of the selection is actively being moved. You can use the `switchSelectionEndpoint` action to begin moving the other end of the selection. + +Once you have a selection present, you have a few options. You can use the ESC key to clear the selection. Alternatively, most key input clears the selection and passes the key event directly to the underlying shell. If you actually want to use the selected text, you can use the `copy` action to copy it to your clipboard. + +## Copying selected text + +As mentioned above, selected text can be copied with a right-click or the `copy` action. However, there are a number of settings regarding copying text that you can customize: +- Copying formatted text + - You can use the `copyFormatting` global setting to also copy the formatting of the selected text itself to the clipboard. This allows you to copy the terminal's font information such as foreground color, background color, and font. + - If you want to limit copying the formatting to certain key bindings (or commands), you can modify the `copyFormatting` parameter on a `copy` action. +- Copying as a single line + - You can copy text as a single line using the `singleLine` parameter in the `copy` action. +- Removing trailing whitespace from block selections + - You can remove the trailing whitespace from a block selection using the `trimBlockSelection` global setting. + +You can also use the `copyOnSelect` global setting to have newly selected text automatically copied to your clipboard. With this setting enabled, if a selection is present, right-clicking the terminal copies and pastes the selected text to your terminal. + +> [!NOTE] +> If `copyOnSelect` is enabled, modifying the selection using the keyboard does not automatically copy the newly selected text. You will need to manually copy the text using the `copy` action or by right-clicking the terminal. + +## Customizing the appearance of selections + +Color schemes let you customize the selection color using the `selectionBackground` property in a color scheme. Alternatively, you can override the selection color for a specific profile using the `selectionBackground` profile setting. + +## Customizing word delimiters + +As mentioned above, double-clicking and using Ctrl + Shift + Arrow keys (or Ctrl + Arrow keys when in mark mode) allow you to navigate by word. However, words can be separated by more than just whitespace. You can customize these word boundaries using the `wordDelimiters` global setting. \ No newline at end of file From d83b79aef11585ff6f9cf14345c7769876893c6f Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Wed, 6 Jul 2022 10:42:29 -0700 Subject: [PATCH 53/80] Add selection to TOC --- TerminalDocs/TOC.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TerminalDocs/TOC.yml b/TerminalDocs/TOC.yml index 95afc2fe..f6609f02 100644 --- a/TerminalDocs/TOC.yml +++ b/TerminalDocs/TOC.yml @@ -30,6 +30,8 @@ href: command-palette.md - name: Search href: search.md + - name: Selection + href: selection.md - name: Panes href: panes.md - name: Dynamic profiles From 7dbc720a8168aaab18c8e5b7997c0d4d499a28e2 Mon Sep 17 00:00:00 2001 From: Alexey Grigorev Date: Fri, 8 Jul 2022 00:09:26 +0200 Subject: [PATCH 54/80] Instructions for MINGW (#525) * Instructions for MINGW - Added instructions for MINGW - Added a link to this file, so it's easier to find it for people who'd like to contribue * Update TerminalDocs/tutorials/new-tab-same-directory.md Co-authored-by: Philippe Blain Co-authored-by: Philippe Blain --- TerminalDocs/tutorials/new-tab-same-directory.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index f0c7555f..6e1dfa00 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -84,6 +84,16 @@ function prompt } ``` +#### MINGW + +For MINGW, Git Bash and Cygwin, you need to modify the `PROMT_COMMAND` for WSL: replace `wslpath` with `cygpath`. + +Add the following line to the end of your `.bashrc` file: + +```bash +PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "`cygpath -w $PWD`"' +``` + ### WSL #### `bash` @@ -110,7 +120,8 @@ precmd_functions+=(keep_current_path) The `precmd_functions` hook tells zsh what commands to run before displaying the prompt. The `printf` statement is what we're using to append the sequence for setting the working directory with the Terminal. The `$(wslpath -w "$PWD")` bit will invoke the `wslpath` executable to convert the current directory into its Windows-like path. Using `precmd_functions+=` make sure we append the `keep_current_path` function to any existing function already defined for this hook. > [!NOTE] -> Don't see your favorite shell here? If you figure it out, feel free to open a PR to contribute a solution for your preferred shell! +> Don't see your favorite shell here? If you figure it out, feel free to [open a PR](https://github.com/MicrosoftDocs/terminal/edit/main/TerminalDocs/tutorials/new-tab-same-directory.md) +> to contribute a solution for your preferred shell! ## Using actions to duplicate the path From 1671a252dbe6c94e356f1c1fdc40cffcdb6b4839 Mon Sep 17 00:00:00 2001 From: Carlos Zamora Date: Thu, 7 Jul 2022 15:14:40 -0700 Subject: [PATCH 55/80] Add missing [Shift] in key binding (#557) --- TerminalDocs/selection.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/selection.md b/TerminalDocs/selection.md index 33b21249..3032f0c5 100644 --- a/TerminalDocs/selection.md +++ b/TerminalDocs/selection.md @@ -45,8 +45,8 @@ Regardless of being in mark mode, you can expand an existing selection using the | Key binding | Result | | ----------- | ------ | | Shift + Arrow keys | Expand by character in the specified direction | -| Ctrl + Left | Expand to the beginning of the previous or existing word | -| Ctrl + Right | Expand to the end of the next or existing word | +| Ctrl + Shift + Left | Expand to the beginning of the previous or existing word | +| Ctrl + Shift + Right | Expand to the end of the next or existing word | | Shift + Home | Expand to the beginning of the line | | Shift + End | Expand to the end of the line | | Shift + Pgup | Expand up by a page (viewport) | From e4f65a77991e48b6b4a2205ee60600844293ef85 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 7 Jul 2022 15:32:26 -0700 Subject: [PATCH 56/80] Fix PowerShell commands Based on https://github.com/MicrosoftDocs/terminal/issues/527 --- TerminalDocs/command-line-arguments.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index ac9d3234..b0909312 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -431,7 +431,7 @@ wt --tabColor #009999 ; new-tab --tabColor #f59218 #### [PowerShell](#tab/powershell) ```powershell -wt --tabColor #009999 ; new-tab --tabColor #f59218 +wt --tabColor '#009999' `; new-tab --tabColor '#f59218' ``` #### [Linux](#tab/linux) @@ -448,7 +448,7 @@ Execution aliases do not work in WSL distributions. If you want to use wt.exe fr When `--tabColor` is set for a tab, it is associated with the first pane of this tab. Hence in a tab with multiple panes, the color will be applied only if the first pane is in focus. To set the tab color for additional panes, you will need to add the `--tabColor` parameter to the `split-pane` subcommand as well. In the example below, a tab with two panes is created with tab colors specified for each pane: ```powershell -wt new-tab --tabColor #009999 ; split-pane --tabColor #f59218 +wt new-tab --tabColor '#009999' `; split-pane --tabColor '#f59218' ``` ### Color scheme From 91a996e7150e01e23a128c959ebdc6a552c12d4b Mon Sep 17 00:00:00 2001 From: Tobi <22715034+twobiers@users.noreply.github.com> Date: Fri, 8 Jul 2022 03:48:34 +0200 Subject: [PATCH 57/80] Add Starship example (#530) Co-authored-by: Matt Wojciakowski --- .../tutorials/new-tab-same-directory.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 6e1dfa00..47df0e76 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -65,7 +65,7 @@ function prompt { #### PowerShell with posh-git -If you're using posh-git, then that will already modify your prompt. In that case, you'll want to only add the necessary output to the already modified prompt. The following example is a lightly modified version of this example from [the ConEmu docs](https://conemu.github.io/en/ShellWorkDir.html#PowerShellPoshGit): +If you're using [posh-git](https://github.com/dahlbyk/posh-git), then that will already modify your prompt. In that case, you'll want to only add the necessary output to the already modified prompt. The following example is a lightly modified version of this example from [the ConEmu docs](https://conemu.github.io/en/ShellWorkDir.html#PowerShellPoshGit): ```powershell function prompt @@ -84,6 +84,21 @@ function prompt } ``` +#### PowerShell with Starship + +If you're using [Starship](http://starship.rs/), then that will already modify your prompt. In that case, you'll want to only add the necessary output to the already modified prompt. + +```powershell +function Invoke-Starship-PreCommand { + $loc = $($executionContext.SessionState.Path.CurrentLocation); + $prompt = "$([char]27)]9;12$([char]7)" + if ($loc.Provider.Name -eq "FileSystem") + { + $prompt += "$([char]27)]9;9;`"$($loc.Path)`"$([char]7)" + } + $host.ui.Write($prompt) +} + #### MINGW For MINGW, Git Bash and Cygwin, you need to modify the `PROMT_COMMAND` for WSL: replace `wslpath` with `cygpath`. From a394b14681197b5a10756d70f5210014a6cc5d81 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Fri, 8 Jul 2022 10:50:33 -0700 Subject: [PATCH 58/80] Add Fish shell Resolves https://github.com/MicrosoftDocs/terminal/issues/523 --- TerminalDocs/tutorials/new-tab-same-directory.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 47df0e76..3c73afc2 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -3,7 +3,7 @@ title: Opening a tab/pane in the same directory description: In this tutorial, you learn how to configure your shell to allow Windows Terminal to open tabs in the same path. author: zadjii-msft ms.author: migrie -ms.date: 11/18/2021 +ms.date: 07/08/2022 ms.topic: tutorial #Customer intent: As a developer or IT admin, I want to open tabs in the same working directory as my current tab. --- @@ -134,6 +134,20 @@ precmd_functions+=(keep_current_path) The `precmd_functions` hook tells zsh what commands to run before displaying the prompt. The `printf` statement is what we're using to append the sequence for setting the working directory with the Terminal. The `$(wslpath -w "$PWD")` bit will invoke the `wslpath` executable to convert the current directory into its Windows-like path. Using `precmd_functions+=` make sure we append the `keep_current_path` function to any existing function already defined for this hook. +#### Fish + +If you're using [Fish shell](https://fishshell.com/), add the following lines to the end of your config file located at `~/.config/fish/config.fish`: + +```bash +function storePathForWindowsTerminal --on-variable PWD + if test -n "$WT_SESSION" + printf "\e]9;9;%s\e\\" (wslpath -w "$PWD") + end +end +``` + +This function will be called whenever the current path is changed to confirm the current session is opened by Windows Terminal (verifying $WT_SESSION) and sending Operating System Command (OSC 9;9;), with the Windows equivalent path (`wslpath -w`) of current path. + > [!NOTE] > Don't see your favorite shell here? If you figure it out, feel free to [open a PR](https://github.com/MicrosoftDocs/terminal/edit/main/TerminalDocs/tutorials/new-tab-same-directory.md) > to contribute a solution for your preferred shell! From 00bcff65a35ad824b163847e3ff8a1382397e1e6 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Fri, 8 Jul 2022 11:39:42 -0700 Subject: [PATCH 59/80] Move Mingw under WSL section --- .../tutorials/new-tab-same-directory.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 3c73afc2..70d41893 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -8,7 +8,7 @@ ms.topic: tutorial #Customer intent: As a developer or IT admin, I want to open tabs in the same working directory as my current tab. --- -# Tutorial: Opening a tab/pane in the same directory in Windows Terminal +# Tutorial: Opening a tab or pane in the same directory in Windows Terminal Typically, the "new tab" and "split pane" actions will always open a new tab/pane in whatever the `startingDirectory` is for that profile. However, on other platforms, it's common for new tabs to automatically use the working directory of the current tab as the starting directory for a new tab. This allows the user to quickly multitask in a single directory. @@ -99,16 +99,6 @@ function Invoke-Starship-PreCommand { $host.ui.Write($prompt) } -#### MINGW - -For MINGW, Git Bash and Cygwin, you need to modify the `PROMT_COMMAND` for WSL: replace `wslpath` with `cygpath`. - -Add the following line to the end of your `.bashrc` file: - -```bash -PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "`cygpath -w $PWD`"' -``` - ### WSL #### `bash` @@ -148,6 +138,16 @@ end This function will be called whenever the current path is changed to confirm the current session is opened by Windows Terminal (verifying $WT_SESSION) and sending Operating System Command (OSC 9;9;), with the Windows equivalent path (`wslpath -w`) of current path. +#### MINGW + +For MINGW, Git Bash and Cygwin, you need to modify the `PROMT_COMMAND` for WSL: replace `wslpath` with `cygpath`. + +Add the following line to the end of your `.bashrc` file: + +```bash +PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "`cygpath -w $PWD`"' +``` + > [!NOTE] > Don't see your favorite shell here? If you figure it out, feel free to [open a PR](https://github.com/MicrosoftDocs/terminal/edit/main/TerminalDocs/tutorials/new-tab-same-directory.md) > to contribute a solution for your preferred shell! From 4a2df314315d9fdf20d9219c63525d30002253e1 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Fri, 8 Jul 2022 14:40:27 -0700 Subject: [PATCH 60/80] Add focus mode tip Resolves https://github.com/MicrosoftDocs/terminal/issues/528 --- TerminalDocs/tips-and-tricks.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/TerminalDocs/tips-and-tricks.md b/TerminalDocs/tips-and-tricks.md index 552826d1..d883e909 100644 --- a/TerminalDocs/tips-and-tricks.md +++ b/TerminalDocs/tips-and-tricks.md @@ -3,7 +3,7 @@ title: Windows Terminal tips and tricks description: In this page, you will find tips and tricks to help improve your Windows Terminal experience. author: cinnamon-msft ms.author: cinnamon -ms.date: 10/08/2021 +ms.date: 07/08/2022 ms.topic: how-to --- @@ -130,6 +130,24 @@ Navigating to the parent directory with a key binding may also be helpful. You can also use this functionality to run builds or test scripts. +## Focus mode + +"Focus mode" hides the title bar and tabs normally located at the top of Windows Terminal, letting you focus only on the terminal content. It is similar to ["Zen mode"](https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_zen-mode) in Visual Studio Code. + +To enter focus mode, open the [command pallette](./command-palette.md) using `Ctrl` + `Shift` + `p`, enter "focus mode", and select "Toggle focus mode." To exit focus mode, repeat these same steps. + +To set focus mode to launch every time you start Windows Terminal, open the **Settings** (`Ctrl` + `,`) and select the **Startup** tab. Under **Launch mode**, select **Focus** (or **Maximized focus**, which is focus mode with your terminal window maximized). Select **Save** before exiting. The next time you launch the Windows Terminal, it will open up in focus mode. To stop Windows Terminal from launching in focus mode, follow these same steps, but select **Default** from the list of **Launch mode** options. + +To add a shortcut key (or keybinding) for entering focus mode, open the `settings.json` file (`Ctrl` + `Shift` + `,`). Inside your `settings.json` file, find the [`"actions":`](./customize-settings/actions.md) section and add the following command: + +```json +{ "command": "toggleFocusMode", "keys": "ctrl+f12" } +``` + +Replace "ctrl+f12" with the shortcut / keybinding of your choice, but be sure not to repeat any existing keybindings from the Actions list. You can also see a list of Actions with associated keybindings, and **+ Add new** bindings, in the **Actions** tab of the Windows Terminal **Settings** dashboard. Remember to **Save** after making any changes. You can now toggle focus mode using the "action" shortcut key that you created. (In the case of our example, `Shift` + `F12`). + +To learn more about this command, see [`toggleFocusMode`](/windows/terminal/customize-settings/actions#toggle-focus-mode). + ## Quake mode "Quake mode" is the name for the special mode the terminal enters when naming a window `_quake`. When a window is in quake mode: From 2562bf53f5b13a224c703fe6645ff6f397f1d242 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Fri, 8 Jul 2022 14:55:16 -0700 Subject: [PATCH 61/80] Change bashrc config to bash_profile Recommended in https://github.com/MicrosoftDocs/terminal/issues/556 so that the `PROMPT_COMMAND` variable isn't repeatedly appended on the start of every bash process. Resolves https://github.com/MicrosoftDocs/terminal/issues/556 --- TerminalDocs/tutorials/new-tab-same-directory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 70d41893..35d79ac2 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -103,7 +103,7 @@ function Invoke-Starship-PreCommand { #### `bash` -Add the following line to the end of your `.bashrc` file: +Add the following line to the end of your `.bash_profile` config file: ```bash PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "$(wslpath -w "$PWD")"' From 17c95742d332d1a8ae43f5dca3cc0395a37e7818 Mon Sep 17 00:00:00 2001 From: Alex Buck Date: Wed, 13 Jul 2022 17:38:01 -0400 Subject: [PATCH 62/80] [BULK UPDATE] DocuTune - Fix build validation issues: docs-link-absolute (#553) --- .openpublishing.redirection.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 9d94aa46..cf4d8c2f 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -2,27 +2,27 @@ "redirections": [ { "source_path": "TerminalDocs/customize-settings/key-bindings.md", - "redirect_url": "https://docs.microsoft.com/windows/terminal/customize-settings/actions", + "redirect_url": "/windows/terminal/customize-settings/actions", "redirect_document_id": true }, { "source_path": "TerminalDocs/customize-settings/global-settings.md", - "redirect_url": "https://docs.microsoft.com/windows/terminal/customize-settings/startup", + "redirect_url": "/windows/terminal/customize-settings/startup", "redirect_document_id": true }, { "source_path": "TerminalDocs/customize-settings/profile-settings.md", - "redirect_url": "https://docs.microsoft.com/windows/terminal/customize-settings/profile-general", + "redirect_url": "/windows/terminal/customize-settings/profile-general", "redirect_document_id": true }, { "source_path": "TerminalDocs/get-started.md", - "redirect_url": "https://docs.microsoft.com/windows/terminal/install", + "redirect_url": "/windows/terminal/install", "redirect_document_id": true }, { "source_path": "TerminalDocs/tutorials/powerline-setup.md", - "redirect_url": "https://docs.microsoft.com/windows/terminal/tutorials/custom-prompt-setup", + "redirect_url": "/windows/terminal/tutorials/custom-prompt-setup", "redirect_document_id": true } ] From 9ad8b875dfec17afcb5e3e0151f1ac3826f7f242 Mon Sep 17 00:00:00 2001 From: Hans Kilian Date: Wed, 3 Aug 2022 22:29:20 +0200 Subject: [PATCH 63/80] Update interaction.md (#562) You left click to block select --- TerminalDocs/customize-settings/interaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/customize-settings/interaction.md b/TerminalDocs/customize-settings/interaction.md index 65e96588..48f304d6 100644 --- a/TerminalDocs/customize-settings/interaction.md +++ b/TerminalDocs/customize-settings/interaction.md @@ -45,7 +45,7 @@ ___ ## Remove trailing white-space in rectangular selection -When this is set to `true` and you copy text in a rectangular (block) selection to the clipboard, trailing white-spaces are removed from each line. When it's set to `false`, the white-spaces are preserved, ensuring that all lines have the same length. To copy text in a rectangular (block) selection, hold down the Alt key, right-click, and drag your mouse over the text area you want to select. This can be useful for selecting text columns, etc. +When this is set to `true` and you copy text in a rectangular (block) selection to the clipboard, trailing white-spaces are removed from each line. When it's set to `false`, the white-spaces are preserved, ensuring that all lines have the same length. To copy text in a rectangular (block) selection, hold down the Alt key, click and drag your mouse over the text area you want to select. This can be useful for selecting text columns, etc. **Property name:** `trimBlockSelection` From 3f7d5a0dcfd53e4c4ab8fd500a71b1962ae4277a Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 1 Sep 2022 14:03:39 -0700 Subject: [PATCH 64/80] Address changed wt.exe behavior as identified in https://github.com/MicrosoftDocs/terminal/issues/507 --- TerminalDocs/command-line-arguments.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index b0909312..d25c98cc 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -18,12 +18,15 @@ You can use `wt.exe` to open a new instance of Windows Terminal from the command ## Command line syntax -The `wt` command line accepts two types of values: **options** and **commands**. **Options** are a list of flags and other parameters that can control the behavior of the `wt` command line as a whole. **Commands** provide the action, or list of actions separated by semicolons, that should be implemented. If no command is specified, then the command is assumed to be `new-tab` by default. +The `wt` command line accepts two types of values: **options** and **commands**. **Options** are a list of flags and other parameters that can control the behavior of the `wt` command line as a whole. **Commands** provide the action, or list of actions separated by semicolons, that should be implemented. If no command is specified, then the command is assumed to be `new-window` by default. ```cmd wt [options] [command ; ] ``` +> [!NOTE] +> The behavior of the `wt.exe` command may be affected by the [`windowingBehavior` property](./customize-settings/startup.md#new-instance-behavior). This setting can be adjusted to default between opening a new window or opening a new tab. + To display a help message listing the available command line arguments, enter: `wt -h`, `wt --help`, `wt -?`, or `wt /?`. ## Options and commands From 887bf04df645a35a0e71c3dbeb30b54064670f42 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 1 Sep 2022 14:21:08 -0700 Subject: [PATCH 65/80] Add note on upgrading Oh My Posh --- TerminalDocs/tutorials/custom-prompt-setup.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index f2f24e5b..4c694996 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -60,6 +60,7 @@ You will need to agree to the source terms and may run into the instance that mo To ensure you have the latest updates, you can use the following command: `winget upgrade oh-my-posh`. > [!NOTE] +> If you want to upgrade your installation of Oh My Posh to the latest version in PowerShell, you may want to first remove the OMP module's cached files and uninstall the old module. There are instructions on how to do this in the [Oh My Posh docs](https://ohmyposh.dev/docs/migrating#migration-steps). > If you are more familiar with the [Scoop](https://scoop.sh/) installer or a manual installation method that allows automation, these can also be used for installing on Windows, just follow the instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/installation/windows). ### Choose and apply a PowerShell prompt theme From a6b1a90f819d6c86c76a6bf45be5e143ec19da66 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 1 Sep 2022 14:26:43 -0700 Subject: [PATCH 66/80] Add note about restoring CWD Alternative way to set up is in issue https://github.com/MicrosoftDocs/terminal/issues/546. Adding this note to resolve https://github.com/MicrosoftDocs/terminal/issues/546. --- TerminalDocs/tutorials/custom-prompt-setup.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index 4c694996..b8cadff0 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -84,6 +84,9 @@ Now, each new PowerShell instance will start by importing Oh My Posh and setting > [!NOTE] > This is not your Windows Terminal profile. Your PowerShell profile is a script that runs every time PowerShell starts. [Learn more about PowerShell profiles](/powershell/module/microsoft.powershell.core/about/about_profiles). +> [!TIP] +> Oh My Posh can be configured to restore the current working directory by enabling `osc99` in the General Settings. See the [Oh My Posh docs](https://ohmyposh.dev/docs/configuration/overview#general-settings). + ## Customize your WSL prompt with Oh My Posh Oh My Posh now allows you to customize WSL prompts, just like you would a PowerShell prompt using [built-in themes](https://ohmyposh.dev/docs/themes). From 901065508d78d24d7d7294456ea99e68de52a3c0 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 1 Sep 2022 14:40:05 -0700 Subject: [PATCH 67/80] Add specific command for OMP install and version check --- TerminalDocs/tutorials/custom-prompt-setup.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/TerminalDocs/tutorials/custom-prompt-setup.md b/TerminalDocs/tutorials/custom-prompt-setup.md index b8cadff0..295461b7 100644 --- a/TerminalDocs/tutorials/custom-prompt-setup.md +++ b/TerminalDocs/tutorials/custom-prompt-setup.md @@ -57,10 +57,16 @@ You will need to agree to the source terms and may run into the instance that mo ![Screenshot of winget install oh my posh packages.](../images/oh-my-posh-winget.png) -To ensure you have the latest updates, you can use the following command: `winget upgrade oh-my-posh`. +To use the Microsoft Store version of Oh My Posh, which will automatically update when new versions are available, use the command: + +```powershell +winget install XP8K0HKJFRXGCK +``` + +Enter `oh-my-posh --version` to confirm the version number of your Oh My Posh installation. To ensure you have the latest updates, you can use the following command: `winget upgrade oh-my-posh`. > [!NOTE] -> If you want to upgrade your installation of Oh My Posh to the latest version in PowerShell, you may want to first remove the OMP module's cached files and uninstall the old module. There are instructions on how to do this in the [Oh My Posh docs](https://ohmyposh.dev/docs/migrating#migration-steps). +> If you want to install the newest version of Oh My Posh in PowerShell, you may want to first remove the OMP module's cached files and uninstall the old module. There are instructions on how to do this in the [Oh My Posh docs](https://ohmyposh.dev/docs/migrating#migration-steps). > If you are more familiar with the [Scoop](https://scoop.sh/) installer or a manual installation method that allows automation, these can also be used for installing on Windows, just follow the instructions in the [Oh My Posh docs](https://ohmyposh.dev/docs/installation/windows). ### Choose and apply a PowerShell prompt theme From 3dbf2f35dd621bed49cc6f001695c98f35f26e7f Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 1 Sep 2022 14:56:25 -0700 Subject: [PATCH 68/80] Add FAQ for terminal vs shell Resolves https://github.com/MicrosoftDocs/terminal/issues/405 --- TerminalDocs/faq.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TerminalDocs/faq.yml b/TerminalDocs/faq.yml index a845f5b8..786b346a 100644 --- a/TerminalDocs/faq.yml +++ b/TerminalDocs/faq.yml @@ -35,6 +35,10 @@ sections: answer: | Windows Terminal will support any command line or shell that you have on your machine, including those that are included with Windows like PowerShell or Windows Command Prompt (cmd.exe), as well as any Linux distribution that can be installed with [WSL](/windows/wsl/), Azure Cloud Shell, Git Bash, etc. The terminal will automatically detect when you've installed a Linux distribution with WSL and create a profile for you. It can also save your Azure credentials, so you can quickly log in quickly to Azure Cloud Shell. + - question: What is the difference between a shell and a terminal? + answer: | + Windows Terminal is basically a host that enables you to run multiple command-line apps or shells side-by-side in customizable environment using tabs or window panes. Examples of "shell" applications include `cmd.exe` (the traditional Windows Command Prompt), `powershell`, or `zsh`. These are text-only applications that provide streams of characters and don't care about how they are rendered to the user. They are also sometimes referred to as "command-line client" applications. On the other hand, "terminal" applications, like Windows Terminal, gnome-terminal, xterm, iterm2, or hyper, are all graphical applications that can be used to render the output of command-line clients, customizing things like font, text size, colors, etc. On Windows, if you run `cmd.exe`, the operating system will create an instance of `conhost.exe` as the "terminal" for displaying the `cmd.exe` command-line client. The same thing happens for PowerShell, the system creates a new conhost window for any client not already connected to a terminal of some kind. Any terminal can run any command-line client application, so Windows Terminal can run any shell you prefer, such as Bash using Windows Subsystem for Linux (WSL). + - question: How can I manually add a shell? answer: | In your [settings.json file](./install.md#settings-json-file), you can create or modify profiles that run any command-line executable. In the settings.json file, set "commandline" to whatever you want. For example, powershell --> "pwsh.exe". From 5c0782831182b9ba9284f29e8afa67b0fe0a8d77 Mon Sep 17 00:00:00 2001 From: Alex Buck Date: Thu, 1 Sep 2022 17:58:16 -0400 Subject: [PATCH 69/80] [BULK UPDATE] DocuTune - Fix build validation issues: docs-link-absolute (#577) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9dd97ac0..d9e9fe2a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ ## Welcome to the Windows Terminal Documentation Source Code -This repository contains the source code (primarily written in markdown) for Windows Terminal documentation. Find the live documentation at: https://docs.microsoft.com/windows/terminal/ +This repository contains the source code (primarily written in markdown) for Windows Terminal documentation. Find the live content at [Windows Terminal documentation](https://docs.microsoft.com/windows/terminal/). -To contribute to these docs, select the "Edit" link found on each of the live docs pages to open the source code file for that page. For a [markdown authoring reference](https://docs.microsoft.com/contribute/markdown-reference) and additional help on how to contribute, visit the [Microsoft docs contributor guide](https://docs.microsoft.com/contribute/). +To contribute to these docs, select the "Edit" link found on each of the live docs pages to open the source code file for that page. For a [markdown authoring reference](https://docs.microsoft.com/contribute/markdown-reference) and additional help on how to contribute, visit our [contributor guide](https://docs.microsoft.com/contribute/). To file an issue with the documentation, use the feedback link at the bottom of the live docs page or select the "Issues" tab above. Please first search existing issues to see whether your issue is already being addressed. ## Where do I file product issues? -To [file an issue](https://github.com/microsoft/terminal/issues) or [contribute to](https://github.com/microsoft/terminal/pulls) the actual Windows Terminal product, please visit the [Windows Terminal product repo](https://github.com/microsoft/terminal). +To [file an issue](https://github.com/microsoft/terminal/issues) or [contribute to](https://github.com/microsoft/terminal/pulls) the actual Windows Terminal product, please visit the [Windows Terminal product repo](https://github.com/microsoft/terminal). **Thank you for your contributions!!!** From e9d6528efd8e319069daa9d6580b127598aaba08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Costa?= Date: Thu, 1 Sep 2022 23:39:07 +0100 Subject: [PATCH 70/80] Add missing code block closing backticks (#571) Adds missing code block closing backticks on line 101 which was causing the following sections to render incorrectly. --- TerminalDocs/tutorials/new-tab-same-directory.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 35d79ac2..623195f3 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -98,6 +98,7 @@ function Invoke-Starship-PreCommand { } $host.ui.Write($prompt) } +``` ### WSL From 420a07faf7d548b0ef69914bf7d3b2c5f1cca1ec Mon Sep 17 00:00:00 2001 From: Haroon Ali Shah Date: Fri, 2 Sep 2022 07:41:17 +0900 Subject: [PATCH 71/80] Update custom-schemes.md (#576) Mis-placed semicolon. --- TerminalDocs/custom-terminal-gallery/custom-schemes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/custom-terminal-gallery/custom-schemes.md b/TerminalDocs/custom-terminal-gallery/custom-schemes.md index 354825c9..717808fc 100644 --- a/TerminalDocs/custom-terminal-gallery/custom-schemes.md +++ b/TerminalDocs/custom-terminal-gallery/custom-schemes.md @@ -18,7 +18,7 @@ Copy the JSON from the **"schemes"** section into the correct section in [settin Before: ```json -"schemes:" [], +"schemes": [], ``` After: From 24fe576a33d2d02e6d287bc3b3d8d361e0477fff Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Mon, 12 Sep 2022 21:26:28 -0700 Subject: [PATCH 72/80] Merge release-1.16 into main (#584) Co-authored-by: Matt Wojciakowski Co-authored-by: Mike Griese Co-authored-by: Carlos Zamora Co-authored-by: Sergey <45919738+serd2011@users.noreply.github.com> --- .../custom-terminal-gallery/theme-gallery.md | 66 ++++++++ TerminalDocs/customize-settings/actions.md | 12 ++ TerminalDocs/customize-settings/appearance.md | 19 ++- TerminalDocs/customize-settings/themes.md | 155 ++++++++++++++++++ .../images/Under-Construction-Theme.png | Bin 0 -> 29253 bytes .../images/seamless-theme-example.gif | Bin 0 -> 90157 bytes TerminalDocs/selection.md | 4 +- 7 files changed, 253 insertions(+), 3 deletions(-) create mode 100644 TerminalDocs/custom-terminal-gallery/theme-gallery.md create mode 100644 TerminalDocs/customize-settings/themes.md create mode 100644 TerminalDocs/images/Under-Construction-Theme.png create mode 100644 TerminalDocs/images/seamless-theme-example.gif diff --git a/TerminalDocs/custom-terminal-gallery/theme-gallery.md b/TerminalDocs/custom-terminal-gallery/theme-gallery.md new file mode 100644 index 00000000..a616ccbc --- /dev/null +++ b/TerminalDocs/custom-terminal-gallery/theme-gallery.md @@ -0,0 +1,66 @@ +--- +title: Windows Terminal Themes Gallery +description: Some sample theme configurations for Windows Terminal. +author: zadjii-msft +ms.author: migrie +ms.date: 09/13/2022 +ms.topic: sample +--- + +# Theme gallery ([Preview](https://aka.ms/terminal-preview)) + +Below are some examples of [Themes](/customize-settings/themes.md). + +## Seamless + +![Windows Terminal Seamless Theme](./../images/seamless-theme-example.gif) + +```json +{ + "name": "Seamless", + "tab": + { + "background": "terminalBackground", + "unfocusedBackground": "#FFFFFF00", + "showCloseButton": "always" + }, + "tabRow": + { + "background": "terminalBackground", + "unfocusedBackground": "#2C2C2CFF" + }, + "window": + { + "applicationTheme": "dark" + } +}, +``` + +## Under Construction + +![Windows Terminal Under Construction Theme](./../images/Under-Construction-Theme.png) + +```json +{ + "name": "Under Contruction", + "tab": + { + "background": "#FFFF00FF", + "showCloseButton": "always", + "unfocusedBackground": "#88440088" + }, + "tabRow": + { + "background": "#FF8800FF", + "unfocusedBackground": "#202020FF" + }, + "window": + { + "applicationTheme": "light", + "useMica": true + } +}, +``` + +(Color scheme is based on [Fun Forrest](https://github.com/mbadolato/iTerm2-Color-Schemes/blob/master/windowsterminal/FunForrest.json)) + diff --git a/TerminalDocs/customize-settings/actions.md b/TerminalDocs/customize-settings/actions.md index 3b1c9694..c5b2a45c 100644 --- a/TerminalDocs/customize-settings/actions.md +++ b/TerminalDocs/customize-settings/actions.md @@ -851,6 +851,18 @@ This inserts the content that was copied onto the clipboard. { "command": "paste", "keys": "shift+insert" } ``` +### Expand selection to word ([Preview](https://aka.ms/terminal-preview)) + +If a selection exists, this expands the selection to fully encompass any words partially selected. + +**Command name:** `expandSelectionToWord` + +**Default bindings:** + +```json +{ "command": "expandSelectionToWord" } +``` + ### Select all This selects all of the content in the text buffer. diff --git a/TerminalDocs/customize-settings/appearance.md b/TerminalDocs/customize-settings/appearance.md index 4f7a8ce9..794fb957 100644 --- a/TerminalDocs/customize-settings/appearance.md +++ b/TerminalDocs/customize-settings/appearance.md @@ -33,7 +33,7 @@ This sets the theme of the application. `"system"` will use the same theme as Wi **Necessity:** Optional -**Accepts:** `"system"`, `"dark"`, `"light"` +**Accepts:** `"system"`, `"dark"`, `"light"`, name of custom [theme](./themes.md) **Default value:** `"system"` @@ -58,7 +58,6 @@ When this is set to `true`, tabs are always displayed. When it's set to `false` > [!NOTE] > This setting has no effect when `showTabsInTitlebar` is `true`. - **Property name:** `alwaysShowTabs` **Necessity:** Optional @@ -78,6 +77,22 @@ When this is set to `true`, tabs are always displayed. When it's set to `false` ___ +## Position of newly created tabs ([Preview](https://aka.ms/terminal-preview)) + +Specifies where new tabs appear in the tab row. When this is set to `"afterLastTab"`, new tabs appear at the end of the tab row. When it's set to `"afterCurrentTab"`, new tabs appear after the current tab. + +**Property name:** `newTabPosition` + +**Necessity:** Optional + +**Accepts:** `"afterLastTab"`, `"afterCurrentTab"` + +**Default value:** `"afterLastTab"` + +
+ +___ + ## Hide the title bar :::row::: diff --git a/TerminalDocs/customize-settings/themes.md b/TerminalDocs/customize-settings/themes.md new file mode 100644 index 00000000..078d35bb --- /dev/null +++ b/TerminalDocs/customize-settings/themes.md @@ -0,0 +1,155 @@ +--- +title: Windows Terminal Theme Settings +description: Learn how to customize the theme settings within Windows Terminal. +author: zadjii-msft +ms.author: migrie +ms.date: 09/12/2022 +ms.topic: how-to +--- + +# Theme settings in Windows Terminal ([Preview](https://aka.ms/terminal-preview)) + +The settings listed below affect the visuals of the terminal window itself, rather than the appearance of an individual tab/pane. These settings are currently only editable directly in the [settings.json file](../install.md#settings-json-file) and are not configurable via the settings UI. + +```json +"theme": "dark" +"themes": +[ + // THEME OBJECTS +] +``` + +For some example themes, take a look at the [Themes gallery](/custom-terminal-gallery/theme-gallery.md). + +Each theme in the `themes` list is comprised of a collection of property objects, that specify the properties of individual elements of the application. For example, the default `"dark"` theme is the following: + +```json +{ + "name": "dark", + "window": { + "applicationTheme": "dark" + }, + "tab": { + "background": "terminalBackground", + "unfocusedBackground": "#00000000" + }, + "tabRow": { + "unfocusedBackground": "#333333FF" + } +}, +``` + +## Theme name + +This is the name of the theme. Names should be unique. The names `dark`, `light`, and `system` are reserved for the built-in default themes. + +**Property name:** `name` + +**Necessity:** Required + +**Accepts:** Name of theme as a string + +
+ +___ + +## Window + +### Application theme + +This is the theme that will be applied to the terminal unless other colors are specified. `"system"` will use the same theme as Windows. + +**Property name:** `applicationTheme` + +**Necessity:** Optional + +**Accepts:** `"system"`, `"dark"`, `"light"` + +**Default value:** `"dark"` + +
+ +___ + +## Tab row + +These settings are used to configure the appearance of the tab row. When `showTabsInTitlebar` is `true` (the default), this configures the title bar. + +### Background color + +The color of the tab row when the window is in the foreground. + +**Property name:** `background` + +**Necessity:** Optional + +**Accepts:** a [theme color](#theme-colors). + +### Inactive background color + +The color of the tab row when the window is inactive. + +**Property name:** `unfocusedBackground` + +**Necessity:** Optional + +**Accepts:** a [theme color](#theme-colors). + +
+ +___ + +## Tabs + +### Background color + +The color of the active tab. Setting a `tabColor` in a profile will override this value. Similarly, setting a color at runtime with the tab color picker will override this color. + +This color is always treated as a solid color, even if set to a `terminalBackground` of a pane with an acrylic background. + +**Property name:** `background` + +**Necessity:** Optional + +**Accepts:** a [theme color](#theme-colors). + +### Inactive background color + +The color of inactive tabs. Setting a `tabColor` in a profile will override this value. Similarly, setting a color at runtime with the tab color picker will override this color. + +This color is always treated as a solid color, even if set to a `terminalBackground` of a pane with an acrylic background. + +When set to `terminalBackground` or `accent`, this will automatically use an alpha value of 30%, to be semi-transparent. + +**Property name:** `unfocusedBackground` + +**Necessity:** Optional + +**Accepts:** a [theme color](#theme-colors). + +### Show close button + +Configures how the "close" button on the tab should appear. This accepts the following values: +* `"always"`: Always show tab close buttons. +* `"hover"`: Show the tab close button on the active tab, and any tabs that are hovered with the mouse. +* `"never"`: Never show tab close buttons. This also disables the ability to close the tab with the middle mouse button. + +**Property name:** `showCloseButton` + +**Necessity:** Optional + +**Accepts:** `"always"`, `"hover"`, `"never"` + +**Default value:** `"always"` + +
+ +___ + +## Theme colors + +The colors used in themes both accept RGBA color values, as well as a few special strings for custom values. The accepted values are as follows: + +* `"#rgb`, `"#rrggbb`, `"#rrggbbaa`: An RGB color value. When the alpha chanel is omitted, these colors default to a fully opaque alpha channel. +* `"accent"`: This is a special value that means "the accent color set in the system settings". +* `"terminalBackground"`: This is a special value evaluated to mean "the background color of the active terminal pane". If there are multiple panes in a tab, then this is the color of the active one. This always uses the `background` of the profile - it ignores anything from a `backgroundImage`, if set. diff --git a/TerminalDocs/images/Under-Construction-Theme.png b/TerminalDocs/images/Under-Construction-Theme.png new file mode 100644 index 0000000000000000000000000000000000000000..8e68dad2c4d1335b0011fcfc8fda8ae8e8194680 GIT binary patch literal 29253 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%0A6IN}#uuTHMDPLVB3VX01) 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 literal 0 HcmV?d00001 diff --git a/TerminalDocs/selection.md b/TerminalDocs/selection.md index 3032f0c5..feaea000 100644 --- a/TerminalDocs/selection.md +++ b/TerminalDocs/selection.md @@ -40,6 +40,8 @@ You can create a selection by using the `selectAll` or `markMode` actions. The ` | Ctrl + Home | Move to the beginning of the buffer | | Ctrl + End | Move to the end of the buffer | +When in mark mode, you can use Tab or Shift + Tab to navigate to the next or previous hyperlink in the buffer. Windows Terminal can automatically detect hyperlinks if [`experimental.detectUrls`](/windows/terminal/customize-settings/interaction#automatically-detect-urls-and-make-them-clickable) is enabled. + Regardless of being in mark mode, you can expand an existing selection using the following non-configurable key bindings: | Key binding | Result | @@ -82,4 +84,4 @@ Color schemes let you customize the selection color using the `selectionBackgrou ## Customizing word delimiters -As mentioned above, double-clicking and using Ctrl + Shift + Arrow keys (or Ctrl + Arrow keys when in mark mode) allow you to navigate by word. However, words can be separated by more than just whitespace. You can customize these word boundaries using the `wordDelimiters` global setting. \ No newline at end of file +As mentioned above, double-clicking and using Ctrl + Shift + Arrow keys (or Ctrl + Arrow keys when in mark mode) allow you to navigate by word. However, words can be separated by more than just whitespace. You can customize these word boundaries using the `wordDelimiters` global setting. From e25ebc9586fb85e224b589087c273a67b45f39f5 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Tue, 13 Sep 2022 09:54:44 -0700 Subject: [PATCH 73/80] Merge release-1.16 into main (#586) Co-authored-by: Matt Wojciakowski Co-authored-by: Mike Griese Co-authored-by: Carlos Zamora Co-authored-by: Sergey <45919738+serd2011@users.noreply.github.com> --- TerminalDocs/custom-terminal-gallery/theme-gallery.md | 2 +- TerminalDocs/customize-settings/themes.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TerminalDocs/custom-terminal-gallery/theme-gallery.md b/TerminalDocs/custom-terminal-gallery/theme-gallery.md index a616ccbc..9845b935 100644 --- a/TerminalDocs/custom-terminal-gallery/theme-gallery.md +++ b/TerminalDocs/custom-terminal-gallery/theme-gallery.md @@ -9,7 +9,7 @@ ms.topic: sample # Theme gallery ([Preview](https://aka.ms/terminal-preview)) -Below are some examples of [Themes](/customize-settings/themes.md). +Below are some examples of [Themes](./../customize-settings/themes.md). ## Seamless diff --git a/TerminalDocs/customize-settings/themes.md b/TerminalDocs/customize-settings/themes.md index 078d35bb..cba90e5b 100644 --- a/TerminalDocs/customize-settings/themes.md +++ b/TerminalDocs/customize-settings/themes.md @@ -19,7 +19,7 @@ The settings listed below affect the visuals of the terminal window itself, rath ] ``` -For some example themes, take a look at the [Themes gallery](/custom-terminal-gallery/theme-gallery.md). +For some example themes, take a look at the [Themes gallery](./../custom-terminal-gallery/theme-gallery.md). Each theme in the `themes` list is comprised of a collection of property objects, that specify the properties of individual elements of the application. For example, the default `"dark"` theme is the following: @@ -57,7 +57,7 @@ ___ ### Application theme -This is the theme that will be applied to the terminal unless other colors are specified. `"system"` will use the same theme as Windows. +This sets the UI theme of the application. This will stylize items such as buttons, the command palette, and other application UI elements. It can either be light or dark. `"system"` will use the same theme as Windows. **Property name:** `applicationTheme` From 09a783f69f3fe88820b6aa859616a1fb67de3358 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon Date: Tue, 13 Sep 2022 10:34:31 -0700 Subject: [PATCH 74/80] Release-1.16 into main (#587) Co-authored-by: Matt Wojciakowski Co-authored-by: Mike Griese Co-authored-by: Carlos Zamora Co-authored-by: Sergey <45919738+serd2011@users.noreply.github.com> --- TerminalDocs/TOC.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TerminalDocs/TOC.yml b/TerminalDocs/TOC.yml index f6609f02..d17379f8 100644 --- a/TerminalDocs/TOC.yml +++ b/TerminalDocs/TOC.yml @@ -24,6 +24,8 @@ href: customize-settings/profile-appearance.md - name: Profile - Advanced href: customize-settings/profile-advanced.md + - name: Themes + href: customize-settings/themes.md - name: Command line arguments href: command-line-arguments.md - name: Command palette From 49b2e0c7cf4b1a9d47b325e1e92ba561f51bcd98 Mon Sep 17 00:00:00 2001 From: Alex Buck Date: Tue, 20 Sep 2022 20:11:20 -0400 Subject: [PATCH 75/80] [BULK UPDATE] DocuTune - Rebranding links (#592) --- README.md | 4 ++-- TerminalDocs/command-line-arguments.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d9e9fe2a..8fd27bbc 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ ## Welcome to the Windows Terminal Documentation Source Code -This repository contains the source code (primarily written in markdown) for Windows Terminal documentation. Find the live content at [Windows Terminal documentation](https://docs.microsoft.com/windows/terminal/). +This repository contains the source code (primarily written in markdown) for Windows Terminal documentation. Find the live content at [Windows Terminal documentation](https://learn.microsoft.com/windows/terminal/). -To contribute to these docs, select the "Edit" link found on each of the live docs pages to open the source code file for that page. For a [markdown authoring reference](https://docs.microsoft.com/contribute/markdown-reference) and additional help on how to contribute, visit our [contributor guide](https://docs.microsoft.com/contribute/). +To contribute to these docs, select the "Edit" link found on each of the live docs pages to open the source code file for that page. For a [markdown authoring reference](https://learn.microsoft.com/contribute/markdown-reference) and additional help on how to contribute, visit our [contributor guide](https://learn.microsoft.com/contribute/). To file an issue with the documentation, use the feedback link at the bottom of the live docs page or select the "Issues" tab above. Please first search existing issues to see whether your issue is already being addressed. diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index d25c98cc..2ac6c474 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -93,7 +93,7 @@ To start an instance of Windows Terminal and have it execute a command, call `wt Here's an example of calling Windows Terminal to pass a [ping](/windows-server/administration/windows-commands/ping) command argument to echo an IP address: ```powershell -wt ping docs.microsoft.com +wt ping learn.microsoft.com ``` Here's an example of calling Windows Terminal to open a new tab with a PowerShell command line, confirming to call the [Start-Service](/powershell/module/microsoft.powershell.management/start-service) command, and opening another new tab with Windows Command Prompt open to the `/k` directory: From 12dc6774f50f8340c04ff5383c4bd38c23282cf4 Mon Sep 17 00:00:00 2001 From: Matt Wojciakowski Date: Thu, 6 Oct 2022 14:29:46 -0700 Subject: [PATCH 76/80] Update with Windows SSH info, location, and image (#598) --- TerminalDocs/images/ssh-optonialfeatures.png | Bin 0 -> 22875 bytes TerminalDocs/tutorials/ssh.md | 12 +++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 TerminalDocs/images/ssh-optonialfeatures.png diff --git a/TerminalDocs/images/ssh-optonialfeatures.png b/TerminalDocs/images/ssh-optonialfeatures.png new file mode 100644 index 0000000000000000000000000000000000000000..b85ff0f0d2056c6c9adc20431046ff5249bebc4b GIT binary patch literal 22875 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 literal 0 HcmV?d00001 diff --git a/TerminalDocs/tutorials/ssh.md b/TerminalDocs/tutorials/ssh.md index 55c10619..9101159b 100644 --- a/TerminalDocs/tutorials/ssh.md +++ b/TerminalDocs/tutorials/ssh.md @@ -3,16 +3,22 @@ title: Windows Terminal SSH description: In this tutorial, learn how to set up an SSH connection in Windows Terminal. author: cinnamon-msft ms.author: cinnamon -ms.date: 05/19/2020 +ms.date: 10/06/2022 ms.topic: tutorial #Customer intent: As a developer or IT admin, I want to set up am SSH connection in Windows Terminal so that I can connect to other servers. --- # Tutorial: SSH in Windows Terminal -Windows has a built-in SSH client that you can use in Windows Terminal. +Windows has a built-in SSH client that you can use in Windows Terminal. In this tutorial, you'll learn how to set up a profile in Windows Terminal that uses SSH. -In this tutorial, you'll learn how to set up a profile in Windows Terminal that uses SSH. +## Access Windows SSH Client + +The latest builds of Windows 10 and Windows 11 include a built-in SSH server and client that are based on OpenSSH, a connectivity tool for remote sign-in that uses the SSH protocol. OpenSSH encrypts all traffic between client and server to eliminate eavesdropping, connection hijacking, and other attacks. + +By default, the OpenSSH client will be located in the directory: `C:\Windows\System32\OpenSSH`. You can also check that it is installed in Windows Settings > Apps > Optional features, then search for "OpenSSH" in your installed features. + +![OpenSSH feature in Windows Settings](../images/ssh-optonialfeatures.png) ## Create a profile From 0f4316a10f9d794bca30f9913670526379cdac25 Mon Sep 17 00:00:00 2001 From: Sergey <45919738+serd2011@users.noreply.github.com> Date: Fri, 7 Oct 2022 00:35:12 +0300 Subject: [PATCH 77/80] Adds missing `:::column-end::: :::row-end:::` (#566) --- TerminalDocs/customize-settings/appearance.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TerminalDocs/customize-settings/appearance.md b/TerminalDocs/customize-settings/appearance.md index 794fb957..721d1289 100644 --- a/TerminalDocs/customize-settings/appearance.md +++ b/TerminalDocs/customize-settings/appearance.md @@ -234,6 +234,9 @@ When this is set to `true`, closing a window with multiple tabs open _will_ requ :::column span=""::: ![Windows Terminal confirm close all tabs](./../images/confirm-close-all-tabs.png) +:::column-end::: +:::row-end::: +
___ From 519d50d9c8e24695bf54525d2f87105f918f37f4 Mon Sep 17 00:00:00 2001 From: Osemudiamhen Ughu <76438025+oseughu@users.noreply.github.com> Date: Thu, 6 Oct 2022 22:36:04 +0100 Subject: [PATCH 78/80] Edit: Typo in Line 143 in `PROMPT_COMMAND` (#568) --- TerminalDocs/tutorials/new-tab-same-directory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index 71029720..c0525b45 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -143,7 +143,7 @@ This function will be called whenever the current path is changed to confirm the #### MINGW -For MINGW, Git Bash and Cygwin, you need to modify the `PROMT_COMMAND` for WSL: replace `wslpath` with `cygpath`. +For MINGW, Git Bash and Cygwin, you need to modify the `PROMPT_COMMAND` for WSL: replace `wslpath` with `cygpath`. Add the following line to the end of your `.bashrc` file: From ec52974852a39746bff78d1e4019679a682207fd Mon Sep 17 00:00:00 2001 From: Osemudiamhen Ughu <76438025+oseughu@users.noreply.github.com> Date: Thu, 6 Oct 2022 22:37:01 +0100 Subject: [PATCH 79/80] Add double quotes to $PWD on line 148 (#569) This will help print the current working directory correctly if it has a space in its name. It was previously stated on line 109 in the WSL example. --- TerminalDocs/tutorials/new-tab-same-directory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerminalDocs/tutorials/new-tab-same-directory.md b/TerminalDocs/tutorials/new-tab-same-directory.md index c0525b45..70d1207d 100644 --- a/TerminalDocs/tutorials/new-tab-same-directory.md +++ b/TerminalDocs/tutorials/new-tab-same-directory.md @@ -148,7 +148,7 @@ For MINGW, Git Bash and Cygwin, you need to modify the `PROMPT_COMMAND` for WSL: Add the following line to the end of your `.bashrc` file: ```bash -PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "`cygpath -w $PWD`"' +PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "`cygpath -w "$PWD"`"' ``` > [!NOTE] From 347712d4089abc6e86fc0df5eb2b5d7ce20e3828 Mon Sep 17 00:00:00 2001 From: Ian O'Neill Date: Thu, 6 Oct 2022 23:23:55 +0100 Subject: [PATCH 80/80] 1.17 - Add documentation for `--pos` and `--size` cmdline args (#591) * 1.17 - Add documentation for `--pos` and `--size` cmdline args * Add minor wording tweak Co-authored-by: Matt Wojciakowski --- TerminalDocs/command-line-arguments.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TerminalDocs/command-line-arguments.md b/TerminalDocs/command-line-arguments.md index 2ac6c474..b295e60f 100644 --- a/TerminalDocs/command-line-arguments.md +++ b/TerminalDocs/command-line-arguments.md @@ -40,6 +40,8 @@ Below is the full list of supported commands and options for the `wt` command li | `--fullscreen`, `-F` | Launches the terminal as full screen. | | `--focus`, `-f` | Launches the terminal in the focus mode. Can be combined with `maximized`. | | `--window`, `-w` `` | Launches the terminal in a specific window. | +| `--pos` `x,y` | (Only available in [Preview](https://aka.ms/terminal-preview)) Launches the terminal at the specified x and y coordinate on the screen. | +| `--size` `c,r` | (Only available in [Preview](https://aka.ms/terminal-preview)) Launches the terminal with the specified number of columns and rows. | ### `New-tab` command