소프트웨어 개발은 까다로운 작업입니다. 하루의 끝에는 까다로운 해석기를 위한 이상한 언어로 지시를 작성하는 전체 작업이며, 이는 당신이 작업한 모든 것을 종료시킬 것입니다. 이제 Windows 터미널을 설치하고 더 나은 방법을 발견할 시간입니다.
이 궁극적인 가이드에서는 개발자들에게 최고의 콘솔 중 하나인 Windows 터미널에 대해 배울 것입니다. Windows 터미널의 거의 모든 기능에 대해 자세히 알아보게 될 것입니다. 명령줄에서 Windows에서 작업하는 데 어떻게 도움이 될 수 있는지 배우게 될 것입니다.
Windows 터미널은 탭, 창 등과 같은 현대적인 터미널 기능으로 콘솔 경험을 향상시킵니다. console 세션을 전환하지 않고도 Windows PowerShell 또는 cmd.exe와 함께 완전한 Linux 셸을 실행할 수도 있습니다.
이 문서는 여러 Windows 터미널 기능에 대한 안내서가 될 것입니다. 작업 중심적인 튜토리얼이므로 준비가 되어 작업에 착수할 준비를 하세요!
전제조건
Windows 터미널을 설치하고 사용하기 위한 요구 사항은 매우 기본적입니다. Windows 10 빌드 1903 (2019년 5월) 이상이 설치된 컴퓨터가 필요합니다. 이 문서의 모든 데모를 따라하려면 몇 가지 다른 도구도 설치해야 합니다:
- Windows Subsystem for Linux (WSL) 기능이 활성화되어 Linux 배포판이 설치되어 있어야 합니다 (모든 데모는 Ubuntu 20.04를 사용합니다).
- 비주얼 스튜디오 코드 (VS 코드)
- Python과 함께 설치된 풍부한 텍스트 라이브러리
- 비주얼 스튜디오 2019 이상 버전에는 다음이 필요합니다:
- Windows 10 1903 SDK가 설치되어 있어야 합니다.
- 데스크톱 개발용 C++ 컴포넌트가 설치되어 있어야 합니다.
- 유니버설 윈도우 플랫폼 개발 컴포넌트가 설치되어 있어야 합니다.
- C++ (v142) 유니버설 윈도우 플랫폼 도구 컴포넌트가 설치되어 있어야 합니다.
터미널 vs. 콘솔 vs. 쉘
이 글에서 많은 용어를 다루게 되므로 처음에는 일부 용어의 차이를 이해하는 것이 중요합니다.
개념이 비슷하더라도 터미널, 콘솔, 쉘은 모두 다른 것이라는 점을 주목해야 합니다. 각각은 고유의 목적을 가지고 있습니다. 스콧 한셀만이 각각의 정의에 대해 훌륭한 블로그 포스트를 작성하였지만, 이 글에서는 다음과 같이 사용됩니다:
- 터미널: 윈도우 터미널 애플리케이션.
- 콘솔: 윈도우 터미널이 아닌 모든 콘솔 호스트 애플리케이션.
- 쉘: 터미널과 운영 체제 사이의 프로그램. (pwsh, cmd, zsh 등)
윈도우 터미널 설치
Windows Terminal을 설치하는 몇 가지 다른 방법이 있지만, 가장 쉬운 방법은 Microsoft Store에서 설치하는 것입니다. 다운로드할 수 있는 두 가지 다른 버전이 있습니다. 표준 Windows Terminal과 Windows Terminal 미리보기.
이 기사를 위해 둘 중 어느 것을 사용해도 괜찮습니다. 설치 과정은 간단하므로 이 기사에서는 다루지 않고 이미 설치했다고 가정합니다.
처음으로 Windows Terminal을 열면 인상적이지 않을 수 있습니다. 그러나 거기에 도달하기 위해 수행해야 할 많은 조정 사항이 있으며, 아래의 창과 같은 창에서 모든 것이 시작됩니다.

Windows Terminal에는 네 가지 주요 구성 요소가 있습니다:
- 터미널 창 – 여기에서 대부분의 작업을 수행하고 가장 많이 사용자 정의할 수 있습니다.
- 탭 이름 – Windows Terminal은 탭을 지원하므로 다른 쉘을 사용할 수 있습니다.
- 새 탭 – 이 버튼을 클릭하면 기본 프로필의 새 탭이 열립니다.
- 프로필 목록 – 열 수 있는 프로필 목록이 표시됩니다.
Windows Terminal은 미니멀한 레이아웃을 가지고 있지만, 그 뒤에 숨겨진 많은 기능이 있습니다.
소스에서 터미널 빌드하기
이것은 Windows 터미널입니다. 이 터미널은 마이크로소프트에서 제공되지만, 완전히 오픈 소스이기도 합니다. 따라서 원한다면 기여할 수도 있습니다. 이것은 매우 활발한 C++ 프로그램입니다.
이것은 GA 제품이지만, 작성 시점에서 여전히 몇 가지 작은 버그가 수정 중이며 미래 개발을 위한 로드맵에 기능이 추가될 예정입니다. 아마도 여러분이 이에 기여하는 사람이 될 수도 있습니다!
개발자이고 코드에 진입하고 싶다면 PowerShell에서 Windows 터미널을 빌드할 수 있습니다. 다음 단계를 따르세요:
- git 서브모듈을 업데이트하기 위해
git submodule update --init --recursive
를 실행하세요. - 다음 PowerShell 명령을 실행하세요:
settings.json 파일: 모든 것을 사용자 정의
결국 터미널을 자신만의 것으로 만들고 사용자 정의하고 싶을 것입니다. Windows 터미널의 가장 좋은 점 중 하나는 매우 사용자 정의할 수 있다는 것입니다. Windows 터미널을 사용자 정의하는 가장 일반적인 방법은 %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\ 디렉터리에 있는 settings.json 파일을 편집하는 것입니다.
Settings를 선택하여 프로필 목록에서 settings.json 파일에 액세스할 수도 있습니다.
settings.json 파일은 그래픽 옵션이 제공될 때까지 Windows 터미널의 대부분 사용자 정의 작업을 수행하는 곳입니다.
Windows Terminal 팀은 곧 출시될 예정인 업데이트에서 설정을 관리하기 위한 GUI를 제공할 것을 약속했습니다!
모든 설정을 한 곳에 편리하게 저장하는 것 외에도, 설정을 JSON 파일에 저장하면 소스 제어에 넣을 수 있으며, 다른 기기 간에 이동할 경우 백업할 수도 있습니다.
또한, 설정을 다른 사람들과 공유할 수도 있습니다. 실제로 settings.json의 예시를 확인하려면 여기를 참조하십시오.
settings.json 스키마
Visual Studio Code를 사용하는 경우, 터미널에는 JSON 스키마가 포함되어 있어 settings.json에서 수행하는 모든 사용자 정의를 자동으로 검증하는 데 도움이 됩니다.
변경 사항을 저장하면 (단, settings.json이 유효한 경우) 터미널에서 즉시 변경 사항이 반영되거나 오류가 표시됩니다. 추가적인 새로고침이 필요하지 않습니다.
JSON을 편집하는 데 Visual Studio Code는 필수는 아니지만, Windows Terminal을 사용자 정의하는 경우 강력히 추천됩니다.
현재 Windows Terminal의 모양과 느낌을 제어하는 settings.json의 네 가지 다른 섹션이 있습니다: Globals, Profiles, Schemes 및 Key Bindings. 각 섹션을 살펴보겠습니다.
Globals
globals 섹션은 Windows Terminal의 동작을 결정하는 역할을 담당합니다. 파일의 맨 위에 항상 위치하며, global 섹션은 종료 시 확인, 시각적 테마, 기본 프로필과 같은 항목을 제어합니다. 다음 코드 스니펫에서 예제를 확인할 수 있습니다.
Profiles
A profile is a configuration of the Windows Terminal that has its own shell, theme, and settings. When you open up a Windows Terminal profile, it will open a session with the assigned shell, environment, or WSL distribution. This means you can have different shells open at the same time, or different sessions of the same shell, which can be useful when testing code cross-platform or need to run a background process.
Windows Terminal은 기본적으로 Windows PowerShell, cmd.exe 및 Azure Cloud Shell 세 개의 프로필을 제공합니다. WSL이 설치되어 있다면 각 설치된 WSL 배포본에 대한 프로필도 생성됩니다. 또한 settings.json의 모든 프로필에 적용되는 defaults 섹션도 포함되어 있습니다. 이곳은 이 문서에서 나중에 다룰 유니코드 호환 폰트를 추가하는 좋은 장소입니다.
다음 코드 스니펫에서 프로필이 어떻게 보이는지 예제를 확인할 수 있습니다.
새 프로필 만들기
프로필 설정은 동일한 셸에 변형을 추가하거나 터미널에 사용자 정의 원격 프로필을 추가하려는 경우 유용할 수 있습니다.
settings.json에서 새 Windows 터미널 프로필을 만들려면 다음 단계를 수행해야 합니다:
JSON을 유효하게 만들기 위해 마지막 프로필을 제외한 각 프로필 뒤에 쉼표를 추가해야 합니다.
- 프로필 섹션에서 어떤 프로필이든 복사합니다. 이는 JSON 파일의 list 노드 아래의
[
에서]
까지인 7번째 줄부터 14번째 줄까지입니다. - 임의의 PowerShell 세션에서
[guid]::NewGuid()
를 실행하여 새 GUID를 생성합니다. 생성한 GUID로 새 프로필의guid
현재 값과 교체합니다. GUID는 터미널이 기본 프로필을 설정할 때 무작위로 생성됩니다. - 프로필을 사용자 정의하기 위해 다른 매개변수를 추가하거나 변경합니다.
- settings.json의 내용을 복사하고 JSON Lint 또는 다른 JSON 리터를 통해 유효한지 확인합니다. 문제가 있으면 수정합니다.
- 변경 사항을 저장합니다.
프로필에서 구성할 수 있는 많은 옵션이 있습니다. 설정.json의 기본 섹션에 설정이 있고 새 프로필에서 동일한 설정을 사용하는 경우 기본 설정이 덮어쓰여질 것입니다. 자세한 내용은 Windows 터미널 설정 문서를 확인하세요.
스킴
이 섹션은 Windows 터미널 프로필에 대한 색상 스킴을 참조합니다. 색상 스킴은 터미널에서 나타나는 각 색상에 대해 사용할 16진수 값을 터미널에 알려줍니다. 터미널은 24비트로 색상을 렌더링할 수 있으므로 이러한 색상은 매우 창의적 일 수 있습니다. 각 스킴에는 이름과 16진수 값을 매핑하는 색상 목록이 있으며 아래와 같이 쉽게 변경할 수 있습니다.
Windows 터미널에서 해당 스킴을 사용하는 동안이 배경 및 텍스트 색상과 일치합니다. Visual Studio Code에서 설정.json을 열어 16진수 값을 클릭하면 아래에 실제 색상을 표시하는 그래픽 슬라이더가 표시됩니다.

터미널 테마 (Windows Terminal에서 schemes라고 함)은 터미널 프로그램 세계에서 흔한 것이 아닙니다. 서로 다른 터미널 애플리케이션에서 작동하는 테마 (scheme)를 만드는 단일한 방법은 없지만, 사용하는 애플리케이션에 상관없이 많은 도구를 찾을 수 있습니다. 미리 만들어진 테마를 쉽게 찾을 수 있거나, 직접 만들 수도 있습니다!

키 바인딩
키 바인딩은 Windows Terminal에서 새로운 패널, 탭 또는 복사 및 붙여넣기와 같은 기본 작업에 단축키를 할당하는 방법입니다. 사용자 정의 단축키를 할당할 수 있는 많은 작업이 있으므로 터미널을 편리하게 사용자 정의할 수 있습니다.
다음 코드 스니펫에서 기본 키 바인딩 몇 가지를 볼 수 있습니다.
지금까지 터미널이 원하는 대로 작동하기 시작했을 수도 있지만, 아직 끝나지 않았습니다. 이제 터미널의 외관과 느낌을 계속해서 사용자 정의하는 방법을 배우는 시간입니다.
시각적 설정
귀하는 대부분의 직장 생활에서 화면에서 텍스트를 바라보는 시간을 보내고 있다면, 그 텍스트를 더 쉽게 볼 수 있도록 몇 가지 추가 조치를 취하는 것이 가치가 있습니다. 폰트, 크기 또는 색상을 변경하는 것이든, 새로운 Windows 터미널의 외관에 약간의 시간을 투자하는 것은 전체 근무일 동안 그것을 응시한 후에 큰 이득을 가져올 것입니다.
텍스트 향상
Windows 터미널의 가장 광고되는 기능 중 하나는 24비트 컬러 지원 및 가속된 텍스트 렌더링입니다. 그것은 단독으로는 인상적이지 않게 들릴 수 있지만, powershell.exe 또는 cmd.exe가 텍스트와 색상을 렌더링하는 방식과 비교해보면 얼마나 큰 차이가 있는지 알 수 있습니다. Python의 rich 라이브러리를 사용하여 이를 시연하면, 오래된 콘솔과 Windows 터미널 사이의 렌더링 능력 차이가 얼마나 큰지 명확하게 알 수 있습니다.

Windows 터미널과 rich 라이브러리를 Python에서 열고 powershell.exe
Windows 터미널은 유니코드 문자도 지원하기 때문에 다른 알파벳과 기호, 키릴 문자, 한자 등을 포함한 어떤 문자든 문제없이 렌더링할 수 있습니다. 이는 나중에 다룰 Cascadia Code 폰트 덕분입니다.

Windows 터미널과 powershell.exe에서 일본어 한자로 작성하기
이는 명백한 국제화 이점을 가지지만, 유니코드 및 UTF-8을 지원하는 것은 Windows 터미널이 또한…
이모지 ?
명령 줄 도구에 이모지를 포함하는 것은 유용한 일처럼 보이지 않을 수 있지만, 이제 개발에서 점점 더 중요한 요소가 되고 있습니다. 소프트웨어 엔지니어들은 이모지를 이용하여 커밋과 이슈에 라벨을 달거나, 슬랙이나 마이크로소프트 팀과 같은 앱으로 빠르게 메시지에 응답하며, 심지어 이모지 프로그래밍 언어도 있습니다. 이 중 일부는 분명히 다른 것보다 유용하지만, 이모지가 사라지지 않을 것임은 분명합니다.
아래는 powershell.exe 콘솔에서 이모지를 렌더링하는 예시이며, 동일한 예시를 파이썬의 rich 라이브러리를 사용하여 Windows 터미널에서도 확인할 수 있습니다. The Terminal is pretty
줄의 차이점을 확인해보세요.

파이썬 rich 텍스트 라이브러리를 사용하여 이모지 표시하기
Cascadia 폰트
앞서 언급한 것처럼 Cascadia Code 폰트는 일부 문자를 표시할 수 있게 해줍니다. 그러나 이 폰트에는 리가처와 같이 오랫동안 보기 쉽게 하는 몇 가지 미묘한 변경사항도 있습니다.
참고: Windows 터미널을 디자인한 동일한 팀이 Cascadia Code 폰트를 특별히 Windows 터미널에서 사용하기 위해 디자인했습니다.
Cascadia Code 글꼴은 특수 문자 외에도 리거처를 지원합니다. 리거처는 화면에 표시될 때 약간 다른 모양으로 렌더링되는 기호입니다. Cascadia Code에서 지원하는 리거처 목록은 여기에서 확인할 수 있습니다.

A printout of all the ligatures supported by Cascadia Code. Code here.
리거처를 사용하지 않고도 Cascadia Code의 다른 이점을 원한다면 Windows 터미널에는 Cascadia Mono라는 글꼴이 함께 제공됩니다. 각각에는 powerline을 위한 변형(Cascadia Code PL
및 Cascadia Mono PL
)도 있으며, 이에 대해서는 다음에 설명하겠습니다.
Powerline
Powerline은 원래 vim 플러그인으로 셸에 정보를 추가하며, Linux 세계에서 오랫동안 사용되어 왔습니다. 이 아이디어는 콘솔에서 작업할 때 손끝에서 더 많은 정보를 제공하여 프롬프트에서 더 많은 정보를 사용할 수 있게 하는 것이었습니다.
Powerline은 PowerShell을 비롯한 모든 최신 셸에서 이식, 복제 및 복제되었지만, 이전 콘솔의 제한으로 인해 뭔가 부족했습니다. 터미널은 글리프라고 불리는 특정 기호를 포함하여 이 문제를 해결합니다. 글리프는 powerline에서 프롬프트에 한 눈에 더 많은 정보를 제공하기 위해 사용됩니다.
Powerline in PowerShell
PowerShell에서는 아래의 샘플 코드를 사용하여 powerline과 유사한 프롬프트를 구성할 수 있습니다.
설치된 후 PowerShell 프롬프트에는 git 브랜치 이름 및 원격 및 로컬 저장소 간 커밋과 같은 추가 정보가 표시됩니다. 아래에 예시를 확인할 수 있습니다.

이것은 oh-my-posh의 Paradox 테마로 현재 운영 체제와 PowerShell 버전을 표시하기 위해 일부 사용자 정의가 적용된 것입니다.
Powerline in Bash
Bash에서는 셸 유사한 zsh 또는 fishshell을 설치해야 합니다. 이들은 터미널에 일부 기능과 사용자 정의 강조 기능을 추가하지만 독립적으로 사용하기는 조금 어렵습니다. zsh와 같은 ohmyzsh와 같은 프레임워크도 설치하는 것이 좋습니다. 이를 통해 사용이 훨씬 쉬워집니다. ohmyzsh는 oh-my-posh가 PowerShell 프롬프트에 대해 수행하는 것과 유사한 테마와 bash 프롬프트 사용자 정의가 제공됩니다.
설치된 후 테마를 변경하려면 ~/.zshrc 파일의 ZSH_THEME 속성을 수정하면 됩니다. vim 또는 nano와 같은 편집기를 사용하여 해당 파일을 저장하십시오. 그런 다음 source ~/.zshrc
를 실행하면 변경 사항이 적용됩니다.

zsh에서 agnoster 테마에서 robbyrussell 테마로 변경합니다.
배경 이미지
릴리즈 시 Windows Terminal의 가장 이야기되는 기능 중 하나는 각 프로필에서 이미지를 사용할 수 있는 기능입니다. 지금까지 배경은 settings.json 파일에서 background
태그로 정의된 단일 색상이었습니다.
일부 사람들은 코딩할 때 이미지가 방해가 되는 것으로 생각합니다. 그래서 이미지 대신 단일 색상 배경을 사용하는 예제를 settings.json에 제공합니다.
단일 색상이 설정되면 해당 색상이 해당 프로필의 배경이 됩니다. 프로필에 배경 태그가 설정되지 않은 경우 Windows Terminal은 스키마에 따라 기본값으로 설정됩니다.

위의 예제 프로필은 이 색상을 배경으로 표시합니다.
배경 이미지를 사용하려면 로컬 파일 시스템에 이미지가 있어야 합니다. 현재 터미널은 URL에서 배경 이미지를 지원하지 않습니다. settings.json에서 배경 이미지를 할당하려는 프로필로 이동하세요. 여기서 backgroundImage
태그를 추가하고 이미지의 경로 값을 지정하세요. 아래는 프로필 배경으로 고양이 사진을 설정하는 예제입니다.

자신만의 배경을 사용자 정의하려는 경우, 터미널은 배경과 관련하여 색상을 고려하지 않습니다. 터미널은 현재 프로필 스키마에 있는 색상을 기본값으로 사용합니다. 신중하지 않으면, 밝은 색상의 글꼴을 밝은 색상의 배경에 넣어 읽기가 매우 어려워질 수 있습니다. 모든 배경이 터미널에 적합한 배경은 아닙니다.
터미널 고양이는 배경을 차지하고 있습니다.
settings.json이 여전히 유효한 JSON 파일이며 터미널 스키마를 준수한다면, 터미널을 수동으로 새로 고침하거나 닫고 다시 열 필요없이 배경이 바로 업데이트됩니다. 아래에서 실시간 업데이트의 훌륭한 예를 볼 수 있습니다.

Windows 터미널은 settings.json에서 변경 사항을 저장하면 바로 업데이트됩니다.
이미지 배치
터미널 창에서 이미지는 너무 주의를 분산시킬 수 있으며, 때로는 그렇습니다. 그러나 탭과 프로필을 자주 전환해야 할 때 빠른 참조가 될 수도 있습니다. 아래는 사용 중인 셸을 강조하기 위해 배경 이미지를 사용하는 예시입니다.
위에 표시된 대로 배경 이미지를 설정하려면, 화면에서 이미지의 크기, 위치 및 불투명도를 제어하기 위해 backgroundImage
로 시작하는 세 가지 추가 매개변수가 필요합니다. 어떤 옵션을 사용할 수 있는지 확인하기 위해 항상 문서를 확인하는 것을 기억하세요. 아래에는 위에 표시된 프로필의 예시가 있습니다.

Windows 터미널은 애니메이션 gif도 지원합니다. 따라서 너무 주의를 분산시키지 않는다면, 프로필에서도 재미있는 요소를 추가할 수 있습니다.

고급 Windows 터미널 명령어
이제 터미널이 설정되고 사용자의 취향에 맞게 사용자 정의되었으므로, Windows 터미널의 고급 기능을 탐색해 보는 시간입니다.
다른 커널로 분할 창
Windows 터미널은 여러 개의 창을 지원합니다. 이는 동일한 터미널 창에서 병렬 세션을 실행할 수 있음을 의미합니다. 이 동작은 새로운 것이 아닙니다. 다른 콘솔 응용 프로그램은 수년간 창을 지원해 왔습니다. 그러나 Windows 터미널은 프로필( settings.json에서)을 지원하기 때문에 각 세션을 자체 창에 열 수 있습니다. WSL을 사용하거나 원격 프로필을 사용할 때와 같이 각 세션이 완전히 다른 운영 체제인 경우에도 각 OS에 대한 창을 표시할 수 있습니다.
다양한 프로필의 분할 창을 만들려면 settings.json에서 각 프로필마다 고유한 splitPane
키 바인딩이 있어야합니다. Windows Terminal 프로필의 이름 또는 GUID를 사용하여 profile
매개 변수를 지정함으로써 각각을 나란히 열 수 있습니다.
split
속성은 현재 선택된 창을 기반으로 가장 많은 공간을 제공하는 방향을 선택하는 horizontal
, vertical
, 또는 auto
로 설정할 수 있습니다. 아래에 네 개의 창에 대한 키 바인딩 설정 예시가 나와 있습니다.

Windows Terminal 열기 사용자 정의
확장키를 좋아하지 않거나 CLI로 터미널을 빠르게 열고 싶다면 운이 좋습니다. Windows Terminal에는 원하는 구성으로 자동으로 열 수있는 명령 줄 실행 파일인 wt
가 포함되어 있습니다.
아래에서 터미널을 열 때 다양한 인수를 전달하여 동작을 변경하는 예시를 볼 수 있습니다.

원격 프로필
대부분의 경우 프로필은 로컬 셸을 실행합니다. 그러나 Windows Terminal은 원격 프로필이라는 개념을 통해 원격 세션도 표시할 수 있습니다!
Windows 터미널의 다른 샘플 프로필을 살펴보면, 일부 프로필이 .exe 응용 프로그램을 전혀 사용하지 않는 것을 알 수 있습니다. Windows 터미널은 충분히 유연하여 ssh
명령이나 Enter-PsSession
PowerShell 명령을 사용하여 원격 서버나 다른 셸에 매핑되는 프로필을 만들 수도 있습니다. 심지어 terraform console
을 사용하여 Terraform 세션을 실행할 수도 있습니다! 아래 프로필에서 해당 예시를 볼 수 있습니다.
commandline
매개변수를 사용하여 settings.json의 프로필 섹션에서 거의 모든 것을 자체 Windows 터미널 프로필로 열 수 있으며 대화형으로 로그인할 필요가 없습니다.

Python REPL을 열고 Windows 터미널 프로필로 AWS EC2 인스턴스에 대한 SSH 연결 열기
요약
이 시점에서 Windows 터미널에 익숙해지고 사용자 정의 설정을 구성하고 편리한 설정을 만들 수 있어야 합니다. 터미널의 외관과 작동을 제어하기 위해 프로필과 키 바인딩을 사용자 정의할 수 있으며 터미널에서 사용할 수 있는 글꼴, 글리프 및 문자를 수정하는 방법을 알아야 합니다.
명령 줄 도구는 어디서든 사라지지 않습니다. 개발자와 엔지니어는 여전히 이를 사용해야 합니다. 새로운 Windows 터미널은 소프트웨어 개발이 화면에서 작은 텍스트를 바라보는 일이 멈추지 않게 할 것입니다. 그러나 이를 훨씬 쉽게 할 수 있게 만들어 줄 것입니다!
Source:
https://adamtheautomator.com/install-windows-terminal/