Этот репозиторий содержит исходный код для:
Терминал Windows
Предварительный просмотр терминала Windows
Хост консоли Windows ( conhost.exe
)
Компоненты, общие для двух проектов
ЦветИнструмент
Примеры проектов, показывающие, как использовать API-интерфейсы консоли Windows.
Связанные репозитории включают:
Документация по терминалу Windows (репозиторий: участие в документации)
Документация по консольному API
Шрифт Cascadia Code
Примечание
Для терминала Windows требуется Windows 10 2004 (сборка 19041) или более поздняя версия.
Установите терминал Windows из Microsoft Store. Это позволяет вам всегда использовать последнюю версию, когда мы выпускаем новые сборки с автоматическими обновлениями.
Это наш предпочтительный метод.
Пользователи, которые не могут установить Windows Terminal из Microsoft Store, выпущенные сборки могут загрузить вручную со страницы «Выпуски» этого репозитория.
Загрузите файл Microsoft.WindowsTerminal_
из раздела «Ресурсы» . Чтобы установить приложение, вы можете просто дважды щелкнуть файл .msixbundle
, и установщик приложения должен запуститься автоматически. Если по какой-либо причине это не удалось, вы можете попробовать следующую команду в командной строке PowerShell:
# ПРИМЕЧАНИЕ. Если вы используете PowerShell 7+, запустите# Import-Module Appx -UseWindowsPowerShell# перед использованием Add-AppxPackage.Add-AppxPackage Microsoft.WindowsTerminal_.msixbundle
Примечание
Если вы устанавливаете Терминал вручную:
Возможно, вам потребуется установить пакет Desktop Framework VC++ v14. Это необходимо только в старых сборках Windows 10 и только в том случае, если вы получаете сообщение об отсутствующих пакетах платформы.
Терминал не будет автоматически обновляться при выпуске новых сборок, поэтому вам необходимо будет регулярно устанавливать последнюю версию Терминала, чтобы получать все последние исправления и улучшения!
Пользователи winget могут загрузить и установить последнюю версию терминала, установив пакет Microsoft.WindowsTerminal
:
winget install --id Microsoft.WindowsTerminal -e
Примечание
Поддержка зависимостей доступна в WinGet версии 1.6.2631 или более поздней. Чтобы установить стабильную версию Терминала 1.18 или новее, убедитесь, что у вас установлена обновленная версия клиента WinGet.
Пользователи Chocolatey могут загрузить и установить последнюю версию терминала, установив пакет microsoft-windows-terminal
:
Шоколадная установка Microsoft-Windows-Terminal
Чтобы обновить терминал Windows с помощью Chocolatey, выполните следующую команду:
Шоколадное обновление Microsoft-Windows-Terminal
Если у вас возникли проблемы при установке/обновлении пакета, перейдите на страницу пакета Windows Terminal и следуйте процедуре сортировки Chocolatey.
Пользователи Scoop могут загрузить и установить последнюю версию терминала, установив пакет windows-terminal
:
черпакное ведро добавить дополнительные принадлежности Scoop установить Windows-терминал
Чтобы обновить терминал Windows с помощью Scoop, выполните следующее:
обновление Windows-терминала
Если у вас возникли проблемы при установке/обновлении пакета, найдите их или сообщите о них на странице проблем в репозитории корзины Scoop Extras.
Windows Terminal Canary — это ночная сборка Windows Terminal. В этой сборке используется новейший код из нашей main
ветки, что дает вам возможность опробовать функции до того, как они попадут в Windows Terminal Preview.
Windows Terminal Canary — наше наименее стабильное предложение, поэтому вы можете обнаружить ошибки до того, как мы успеем их найти.
Windows Terminal Canary доступен в виде дистрибутива установщика приложений и портативного ZIP-дистрибутива.
Дистрибутив App Installer поддерживает автоматические обновления. Из-за ограничений платформы этот установщик работает только в Windows 11.
Дистрибутив Portable ZIP представляет собой портативное приложение. Он не будет автоматически обновляться и не будет автоматически проверять наличие обновлений. Этот портативный ZIP-дистрибутив работает в Windows 10 (19041+) и Windows 11.
Распределение | Архитектура | Связь |
---|---|---|
Установщик приложений | х64, рука64, х86 | скачать |
Портативный ZIP | х64 | скачать |
Портативный ZIP | ARM64 | скачать |
Портативный ZIP | х86 | скачать |
Узнайте больше о типах дистрибутивов Windows Terminal.
План терминала Windows описан здесь и будет обновляться по мере реализации проекта.
Пожалуйста, потратьте несколько минут на просмотр приведенного ниже обзора, прежде чем углубляться в код:
Windows Terminal — это новое, современное, многофункциональное и продуктивное приложение терминала для пользователей командной строки. Он включает в себя множество функций, наиболее часто запрашиваемых сообществом командной строки Windows, включая поддержку вкладок, форматированного текста, глобализации, возможности настройки, тем и стилей и т. д.
Терминалу также необходимо будет соответствовать нашим целям и мерам, чтобы он оставался быстрым и эффективным и не потреблял огромное количество памяти или энергии.
Хост консоли Windows, conhost.exe
, представляет собой оригинальный интерфейс командной строки Windows. Здесь также размещается инфраструктура командной строки Windows и сервер API консоли Windows, механизм ввода, механизм рендеринга, пользовательские настройки и т. д. Код хоста консоли в этом репозитории является фактическим источником, из которого создается conhost.exe
в самой Windows.
С момента приобретения права собственности на командную строку Windows в 2014 году команда добавила в консоль несколько новых функций, включая прозрачность фона, выбор на основе строк, поддержку последовательностей ANSI/виртуального терминала, 24-битный цвет, псевдоконсоль («ConPTY» ) и многое другое.
Однако, поскольку основной целью консоли Windows является обеспечение обратной совместимости, мы не смогли добавить многие функции, которые сообщество (и команда) хотели получить в течение последних нескольких лет, включая вкладки, текст в Юникоде и смайлики.
Эти ограничения побудили нас создать новый терминал Windows.
Вы можете узнать больше об эволюции командной строки в целом и командной строки Windows в частности в этой сопутствующей серии статей в блоге команды командной строки.
При переработке консоли Windows мы значительно модернизировали ее кодовую базу, четко разделив логические сущности на модули и классы, ввели некоторые ключевые точки расширения, заменили несколько старых, собственных коллекций и контейнеров более безопасными и эффективными контейнерами STL, а также сделали код более простым и понятным. безопаснее с помощью библиотек реализации Windows от Microsoft — WIL.
В результате этого капитального ремонта несколько ключевых компонентов консоли стали доступны для повторного использования в любой реализации терминала в Windows. Эти компоненты включают в себя новый механизм макетирования и рендеринга текста на основе DirectWrite, текстовый буфер, способный хранить как UTF-16, так и UTF-8, анализатор/эмиттер VT и многое другое.
Когда мы начали планировать новое приложение Windows Terminal, мы изучили и оценили несколько подходов и стеков технологий. В конечном итоге мы решили, что наши цели будут лучше всего достигнуты, если продолжать инвестиции в нашу кодовую базу C++, что позволит нам повторно использовать некоторые из вышеупомянутых модернизированных компонентов как в существующей консоли, так и в новом терминале. Кроме того, мы поняли, что это позволит нам построить большую часть ядра Терминала как повторно используемый элемент управления пользовательского интерфейса, который другие могут включать в свои собственные приложения.
Результат этой работы содержится в этом репозитории и поставляется в виде приложения Windows Terminal, которое можно загрузить из Microsoft Store или непосредственно из выпусков этого репозитория.
Для получения дополнительной информации о терминале Windows вы можете найти некоторые из этих ресурсов полезными и интересными:
Блог командной строки
Серия блогов о командной строке
Запуск терминала Windows: терминал «Sizzle Video»
Запуск терминала Windows: сеанс сборки 2019
Запуск от имени радио: Show 645 - Терминал Windows с Ричардом Тернером
Подкаст Azure Devops: эпизод 54. Кайла Синнамон и Рич Тернер о DevOps на терминале Windows
Сессия Microsoft Ignite 2019: Современная командная строка Windows: терминал Windows — BRK3321
Причина. Вы запускаете неправильное решение в Visual Studio.
Решение. Убедитесь, что вы создаете и развертываете проект CascadiaPackage
в Visual Studio.
Примечание
OpenConsole.exe
— это просто локально созданный conhost.exe
, классическая консоль Windows, на которой размещается инфраструктура командной строки Windows. OpenConsole используется Windows Terminal для подключения и взаимодействия с приложениями командной строки (через ConPty).
Вся документация проекта находится по адресу aka.ms/terminal-docs. Если вы хотите внести свой вклад в документацию, отправьте запрос на включение в репозиторий документации терминала Windows.
Мы рады работать вместе с вами, нашим замечательным сообществом, над созданием и улучшением Windows Terminal!
ПРЕЖДЕ ЧЕМ приступить к работе над функцией/исправлением , прочтите и следуйте нашему Руководству для участников, чтобы избежать напрасных или дублирующих усилий.
Самый простой способ общения с командой — через вопросы GitHub.
Пожалуйста, сообщайте о новых проблемах, запросах функций и предложениях, но ОБЯЗАТЕЛЬНО ищите похожие открытые/закрытые ранее существующие проблемы, прежде чем создавать новую проблему.
Если вы хотите задать вопрос, который, по вашему мнению, не требует обсуждения (пока), свяжитесь с нами через Twitter:
Кристофер Нгуен, менеджер по продукту: @nguyen_dows
Дастин Хоуэтт, руководитель разработки: @dhowett
Майк Гриз, старший разработчик: @[email protected]
Карлос Самора, разработчик: @cazamor_msft
Панкадж Бходжвани, разработчик
Леонард Хекер, разработчик: @LeonardHecker
Для запуска терминала Windows у вас должна быть установлена Windows 10 2004 (сборка >= 10.0.19041.0) или более поздняя версия.
Вам необходимо включить режим разработчика в приложении «Настройки Windows», чтобы локально установить и запустить терминал Windows.
У вас должен быть установлен PowerShell 7 или более поздняя версия.
У вас должен быть установлен Windows 11 (10.0.22621.0) SDK.
У вас должна быть установлена как минимум VS 2022.
Вам необходимо установить следующие рабочие нагрузки через установщик VS. Примечание. При открытии решения в VS 2022 вам будет предложено автоматически установить недостающие компоненты:
C++ (v143) Инструменты универсальной платформы Windows
Разработка настольных компьютеров на C++
Разработка универсальной платформы Windows
Следующие отдельные компоненты
Для создания тестовых проектов необходимо установить пакет таргетинга .NET Framework.
Этот репозиторий использует подмодули git для некоторых своих зависимостей. Чтобы убедиться, что подмодули восстановлены или обновлены, перед сборкой обязательно запустите следующее:
Обновление подмодуля git --init --recursive
OpenConsole.sln можно собрать из Visual Studio или из командной строки, используя набор удобных скриптов и инструментов в каталоге /tools :
Import-Module .toolsOpenConsole.psm1Set-MsBuildDevEnvironmentInvoke-OpenConsoleBuild
.toolsrazzle.cmd БЧ
Чтобы отладить терминал Windows в VS, щелкните правой кнопкой мыши CascadiaPackage
(в обозревателе решений) и перейдите к свойствам. В меню «Отладка» измените «Процесс приложения» и «Процесс фоновой задачи» на «Только встроенный».
После этого вы сможете собрать и отладить проект терминала, нажав F5 . Обязательно выберите платформу «x64» или «x86» — Терминал не собирается для «Любого процессора» (поскольку Терминал — это приложение C++, а не C#).
? Вы не сможете запустить Терминал напрямую, запустив WindowsTerminal.exe. Более подробную информацию о том, почему, см. в #926, #4043.
Пожалуйста, ознакомьтесь с приведенной ниже краткой документацией о наших методах кодирования.
? Если вы обнаружите, что в этих документах чего-то не хватает, не стесняйтесь вносить свой вклад в любой из наших файлов документации в любом месте репозитория (или напишите несколько новых!)
Эта работа еще продолжается, поскольку мы узнаем, что нам нужно предоставить людям, чтобы они могли эффективно участвовать в нашем проекте.
Стиль кодирования
Организация кода
Исключения в нашей устаревшей кодовой базе
Полезные интеллектуальные указатели и макросы для взаимодействия с Windows в WIL.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.