terminal - 新しい Windows ターミナルと元の Windows コンソール ホストがすべて同じ場所にあります。

(The new Windows Terminal and the original Windows console host, all in the same place!)

Created at: 2017-08-12 02:38:22
Language: C++
License: MIT

ターミナルロゴ

Windows ターミナル、コンソール、およびコマンドライン リポジトリへようこそ

このリポジトリには、次のソース コードが含まれています。

関連リポジトリには次のものがあります。

Windows ターミナルのインストールと実行

: Windows ターミナルには、Windows 10 2004 (ビルド 19041) 以降が必要です。

マイクロソフトストア【おすすめ】

Microsoft Store から Windows ターミナルをインストールします。これにより、自動アップグレードで新しいビルドがリリースされたときに、常に最新バージョンを使用できます。

これが私たちの推奨する方法です。

その他のインストール方法

GitHub経由

Microsoft Store から Windows ターミナルをインストールできないユーザーは、リリースされたビルドをこのリポジトリのリリース ページから手動でダウンロードできます。

Assetsセクション

Microsoft.WindowsTerminal_<versionNumber>.msixbundle
からファイルをダウンロードします。アプリをインストールするには、ファイルをダブルクリックするだけ で、アプリのインストーラーが自動的に実行されます。何らかの理由で失敗した場合は、PowerShell プロンプトで次のコマンドを試すことができます。
.msixbundle

# NOTE: If you are using PowerShell 7+, please run
# Import-Module Appx -UseWindowsPowerShell
# before using Add-AppxPackage.

Add-AppxPackage Microsoft.WindowsTerminal_<versionNumber>.msixbundle

: ターミナルを手動でインストールする場合:

  • 新しいビルドがリリースされてもターミナルは自動更新されないため、最新の修正と改善をすべて受け取るには、最新のターミナル リリースを定期的にインストールする必要があります。

Windows パッケージ マネージャー CLI (別名 winget) 経由

winget

Microsoft.WindowsTerminal
ユーザーは、 パッケージをインストールすることで、最新のターミナル リリースをダウンロードしてインストールできます。

winget install --id=Microsoft.WindowsTerminal -e

Chocolatey経由(非公式)

Chocolatey

microsoft-windows-terminal
ユーザーは、パッケージをインストールすることで、最新のターミナル リリースをダウンロードしてインストールできます。

choco install microsoft-windows-terminal

Chocolatey を使用して Windows ターミナルをアップグレードするには、次のコマンドを実行します。

choco upgrade microsoft-windows-terminal

パッケージのインストール/アップグレード時に問題が発生した場合は、 Windows ターミナル パッケージ ページに移動し、 Chocolatey トリアージ プロセスに従って ください。

スクープ経由(非公式)

Scoop

windows-terminal
ユーザーは、パッケージをインストールすることで、最新のターミナル リリースをダウンロードしてインストールできます。

scoop bucket add extras
scoop install windows-terminal

Scoop を使用して Windows ターミナルを更新するには、次のコマンドを実行します。

scoop update windows-terminal

パッケージのインストール/更新時に問題が発生した場合は、Scoop Extras バケット リポジトリの問題ページで同じ問題を検索または報告してください。


Windows ターミナルのロードマップ

Windows ターミナルの計画はここで説明されており、プロジェクトの進行に合わせて更新されます。

プロジェクトのビルド ステータス

計画 ビルド ステータス
「ターミナル」 ターミナル ビルド ステータス
カラーツール Colortool ビルド ステータス

ターミナルとコンソールの概要

コードに飛び込む前に、以下の概要を確認してください。

Windows ターミナル

Windows ターミナルは、コマンド ライン ユーザー向けの最新の機能豊富で生産的なターミナル アプリケーションです。タブ、リッチ テキスト、グローバリゼーション、構成可能性、テーマとスタイリングなどのサポートを含む、Windows コマンド ライン コミュニティから最も頻繁に要求される機能の多くが含まれています。

ターミナルは、高速で効率的であり、大量のメモリや電力を消費しないようにするための目標と対策も満たす必要があります。

Windows コンソール ホスト

Windows コンソール ホスト は

conhost.exe
、Windows 独自のコマンド ライン ユーザー エクスペリエンスです。また、Windows のコマンドライン インフラストラクチャと Windows コンソール API サーバー、入力エンジン、レンダリング エンジン、ユーザー設定などもホストします。このリポジトリ内のコンソール ホスト コードは
conhost.exe
、Windows 自体が構築される実際のソースです。

2014 年に Windows コマンドラインの所有権を取得して以来、チームはコンソールにいくつかの新機能を追加しました。これには、背景の透明度、行ベースの選択、ANSI / 仮想端末シーケンスのサポート、24 ビット カラー疑似コンソール ("ConPTY" )など。

ただし、Windows コンソールの主な目的は下位互換性を維持することであるため、タブ、Unicode テキスト、絵文字など、コミュニティ (およびチーム) が過去数年間求めていた多くの機能を追加できませんでした。

これらの制限により、新しい Windows ターミナルが作成されました。

一般的なコマンド ラインの進化、特に Windows コマンド ラインの詳細 については、コマンド ライン チームのブログに掲載されている一連のブログ記事を参照してください。

共有コンポーネント

Windows コンソールをオーバーホールしながら、コードベースを大幅に最新化し、論理エンティティをモジュールとクラスに明確に分離し、いくつかの重要な拡張ポイントを導入し、いくつかの古い自家製のコレクションとコンテナーをより安全で効率的なSTL コンテナーに置き換え、コードをよりシンプルでシンプルなものにしました。 Microsoft のWindows 実装ライブラリ - WILを使用することで、より安全になります。

このオーバーホールにより、コンソールの主要コンポーネントのいくつかが、Windows 上の任意の端末実装で再利用できるようになりました。これらのコンポーネントには、新しい DirectWrite ベースのテキスト レイアウトおよびレンダリング エンジン、UTF-16 と UTF-8 の両方を格納できるテキスト バッファー、VT パーサー/エミッターなどが含まれます。

新しい Windows ターミナルの作成

新しい Windows ターミナル アプリケーションの計画を開始したとき、いくつかのアプローチとテクノロジ スタックを調査し、評価しました。最終的に、C++ コードベースへの投資を継続することで目標を達成するのが最善であると判断しました。これにより、前述の最新化されたコンポーネントのいくつかを既存のコンソールと新しいターミナルの両方で再利用できるようになります。さらに、これにより、他のユーザーが独自のアプリケーションに組み込むことができる再利用可能な UI コントロールとして、ターミナルのコア自体の多くを構築できることに気付きました。

この作業の結果は、このレポに含まれており、Microsoft Store からダウンロードできる Windows ターミナル アプリケーションとして配信されるか 、このレポのリリースから直接提供されます。


資力

Windows ターミナルの詳細については、次のリソースのいくつかが便利で興味深いものとなる場合があります。


よくある質問

新しいターミナルをビルドして実行しましたが、古いコンソールと同じように見えます

原因: Visual Studio で不適切なソリューションを起動しています。

CascadiaPackage
解決策: Visual Studio でプロジェクトをビルドおよびデプロイしていることを確認してください。

:

OpenConsole.exe
はローカルに構築された
conhost.exe
、Windows のコマンドライン インフラストラクチャをホストする従来の Windows コンソールです。OpenConsole は、( ConPtyを介して) コマンドライン アプリケーションに接続して通信するために、Windows ターミナルによって使用されます 。


ドキュメンテーション

すべてのプロジェクト ドキュメントはaka.ms/terminal-docsにあります。ドキュメントに貢献したい場合は、Windows ターミナル ドキュメント リポジトリでプル リクエストを送信してください。


貢献する

Windows ターミナルを構築および強化するために、私たちの素晴らしいコミュニティである皆さんと協力できることを楽しみにしています。

機能/修正の作業を開始する前に、貢献者のガイドを読んで従い、 無駄な作業や重複した作業を避けるようにしてください。

チームとのコミュニケーション

チームとコミュニケーションをとる最も簡単な方法は、GitHub の問題を使用することです。

新しい問題、機能のリクエスト、および提案を提出してください。ただし、新しい問題を作成する前に、同様のオープン/クローズ済みの既存の問題を検索してください。

(まだ) 問題が発生しないと思われる質問をしたい場合は、Twitter からご連絡ください。

  • Kayla Cinnamon、プログラム マネージャー: @cinnamon_msft
  • ダスティン・ハウエット、エンジニアリング リード: @dhowett
  • Mike Griese、シニア開発者: @zadjii
  • Carlos Zamora、開発者: @cazamor_msft
  • Pankaj Bhojwani、開発者
  • Leonard Hecker、開発者: @LeonardHecker

開発者向けガイダンス

前提条件

コードの構築

このリポジトリは、その依存関係の一部にgit サブモジュールを使用します。サブモジュールが復元または更新されていることを確認するには、ビルドする前に必ず次を実行してください。

git submodule update --init --recursive

OpenConsole.sln は、Visual Studio 内から、または/toolsディレクトリにある一連の便利なスクリプトとツールを使用してコマンド ラインからビルドできます。

PowerShell でのビルド

Import-Module .\tools\OpenConsole.psm1
Set-MsBuildDevEnvironment
Invoke-OpenConsoleBuild

Cmd でのビルド

.\tools\razzle.cmd
bcz

実行とデバッグ

CascadiaPackage
VS で Windows ターミナルをデバッグするには、(ソリューション エクスプローラーで) を右クリックし、プロパティに移動します。[デバッグ] メニューで、[アプリケーション プロセス] と [バックグラウンド タスク プロセス] を [ネイティブのみ] に変更します。

その後、 を押してターミナル プロジェクトをビルドおよびデバッグできるはず F5です。「x64」または「x86」プラットフォームのいずれかを必ず選択してください。ターミナルは「Any Cpu」用にはビルドされません (ターミナルは C# アプリケーションではなく C++ アプリケーションであるため)。

👉WindowsTerminal.exe を実行してターミナルを直接起動することはできません。理由の詳細については、 #926#4043を参照してください。

コーディングガイダンス

当社のコーディング慣行については、以下の簡単なドキュメントを参照してください。

👉これらのドキュメントに欠けているものを見つけた場合は、リポジトリ内の任意のドキュメント ファイルに自由に投稿してください (または新しいドキュメントを作成してください!)。

これは進行中の作業であり、プロジェクトに効果的に貢献するために人々に提供する必要があるものを学んでいます。


行動規範

このプロジェクトは、Microsoft オープン ソース行動規範を採用しています。詳細については、行動規範に関する FAQ を参照するか、 opencode@microsoft.comに連絡して追加の質問やコメントをお寄せください。