Содержание статьи
- 1 Windows Terminal
- 2 Консольный хост Windows
- 3 Общие компоненты
- 4 Строительство нового терминала
- 5 Где я могу загрузить Windows Terminal?
- 6 Я построил и запустил новый терминал, но у меня просто пустое окно приложения!
- 7 Я собрал и запустил новый терминал, но он выглядит как старая консоль! Что дает?
- 8 Я попытался запустить WindowsTerminal.exe, и он вылетел!
- 9 Предпосылки
- 10 Отладка
- 11 Вклад
- 12 Документация
- 13 Общение с командой
- 14 Создание Кодекса
- 15 Руководство по кодированию
Этот репозиторий содержит исходный код для:
- Windows Terminal
- Консольный хост Windows (
conhost.exe
) - Компоненты, общие для двух проектов
- ColorTool
- Примеры проектов, в которых показано, как использовать API-интерфейсы консоли Windows
Другие связанные репозитории включают в себя:
Статус сборки
Проект | Статус сборки |
---|---|
Терминал |
Пожалуйста, уделите несколько минут просмотру приведенного ниже обзора, прежде чем углубляться в код:
Windows Terminal
Windows Terminal — это новое, современное, многофункциональное, производительное терминальное приложение для пользователей командной строки. Он включает в себя многие функции, наиболее часто запрашиваемые сообществом командной строки Windows, включая поддержку вкладок, форматированного текста, глобализации, конфигурируемости, создания тем и стилей и т. Д.
Терминал также должен будет соответствовать нашим целям и мерам, чтобы он оставался быстрым, эффективным и не потреблял огромного количества памяти или энергии.
Консольный хост Windows
Консольный хост Windows, conhost.exe
представляет собой оригинальный интерфейс пользователя командной строки Windows. Он реализует инфраструктуру командной строки Windows и отвечает за размещение API консоли Windows, механизма ввода, механизма рендеринга и пользовательских настроек. Хост-код консоли в этом репозитории является фактическим источником, из которого conhost.exe
собран в самой Windows.
Основная цель консоли — обеспечить обратную совместимость с существующими приложениями консольной подсистемы.
С момента вступления во владение командной строкой Windows в 2014 году команда добавила в консоль несколько новых функций, включая прозрачность окон, выбор на основе строк, поддержку последовательностей ANSI / виртуальных терминалов, 24-битный цвет, псевдоконсоль. («ConPTY») и др.
Однако, поскольку основная цель консоли — поддерживать обратную совместимость, мы не смогли добавить многие функции, о которых просило сообщество, и которые мы хотели добавить в течение последних нескольких лет — как вкладки!
Эти ограничения привели нас к созданию нового терминала Windows.
Общие компоненты
Во время капитального ремонта консоли мы значительно модернизировали ее кодовую базу. Мы четко разделили логические сущности на модули и классы, ввели некоторые ключевые точки расширения, заменили несколько старых домашних коллекций и контейнеров на более безопасные и эффективные контейнеры STL и сделали код проще и безопаснее, используя библиотеку заголовков WIL от Microsoft.
Результатом этой работы по капитальному ремонту стало создание нескольких ключевых компонентов, которые были бы полезны для любой реализации терминала в Windows, включая новый механизм разметки текста и рендеринга на основе DirectWrite, текстовый буфер, способный хранить как UTF-16, так и UTF-. 8, и анализатор / эмиттер VT.
Строительство нового терминала
Когда мы начали создавать новое терминальное приложение, мы исследовали и оценили несколько подходов и технологических стеков. В конечном итоге мы решили, что наши цели будут лучше всего достигнуты, если придерживаться C ++ и делиться вышеупомянутыми модернизированными компонентами, поместив их поверх современной платформы приложений Windows и инфраструктуры пользовательского интерфейса.
Кроме того, мы поняли, что это позволит нам создать рендер и стек ввода терминала в качестве многократно используемого элемента управления пользовательского интерфейса Windows, который другие могут включать в свои приложения.
Где я могу загрузить Windows Terminal?
Двоих файлов для загрузки пока нет.
Терминал Windows находится на очень ранней альфа-стадии и еще не готов для широкой публики. Если вы хотите начать раньше, вы можете попробовать создать его самостоятельно из исходного кода.
В противном случае вам придется подождать до середины июня, чтобы официальная предварительная сборка прекратилась.
Я построил и запустил новый терминал, но у меня просто пустое окно приложения!
Убедитесь, что вы строите для архитектуры своего компьютера. Если на вашем компьютере установлена 64-разрядная версия Windows, измените свою платформу решений на x64.
Чтобы проверить архитектуру своей ОС, перейдите в «Настройки» -> «Система» -> «О программе» (или Win + X -> Система) и в разделе спецификации устройства
проверка для Тип системы
Я собрал и запустил новый терминал, но он выглядит как старая консоль! Что дает?
Во-первых, убедитесь, что вы собираете и развертываете CascadiaPackage
в Visual Studio, НЕ Host.EXE
. OpenConsole.exe
— это просто conhost.exe
та же старая консоль, которую вы знаете и любите. opencon.cmd
запустит openconsole.exe
и, к сожалению, openterm.cmd
в настоящее время не работает.
Во-вторых, попробуйте нажать Ctrl + T . Вкладки скрыты, когда у вас есть только одна вкладка по умолчанию. В будущем пользовательский интерфейс будет сильно отличаться, но на данный момент значения по умолчанию должны выглядеть как значения по умолчанию консоли.
Я попытался запустить WindowsTerminal.exe, и он вылетел!
- Не пытайтесь запустить его без упаковки. Обязательно соберите и разверните
CascadiaPackage
из Visual Studio и запустите приложение Windows Terminal (Dev Build). - Убедитесь, что вы используете правильную версию Windows. Вам нужно быть на сборках Insider или ждать выпуска 1903 года, поскольку Windows Terminal ТРЕБУЕТ функций из последней версии Windows.
Предпосылки
-
Вы должны использовать Windows 1903 (сборка> = 10.0.18362.0) или выше, чтобы запустить Windows Terminal
-
У вас должен быть установлен 1903 SDK (сборка 10.0.18362.0)
-
У вас должен быть установлен по крайней мере VS 2017.
-
Вы должны установить следующие рабочие нагрузки через установщик VS. Если вы используете VS 2019, при открытии решения вам будет предложено автоматически установить недостающие компоненты.
- Разработка рабочего стола с C ++
- Разработка универсальной платформы Windows
- Также установите следующий отдельный компонент:
- C ++ (v141) Универсальные инструменты для платформы Windows
- Также установите следующий отдельный компонент:
-
Вы также должны включить режим разработчика в приложении «Настройки Windows», чтобы локально установить и запустить приложение «Терминал».
Отладка
- Чтобы выполнить отладку в VS, щелкните правой кнопкой мыши CascadiaPackage (из VS Solution Explorer) и перейдите в свойства, в меню «Отладка» измените «Процесс приложения» и «Процесс фоновой задачи» на «Только собственный»
Вклад
Мы рады работать вместе с вами, нашим удивительным сообществом, над созданием и улучшением Windows Terminal!
Мы просим прежде чем вы начнете работать над функцией, которую вы хотели бы добавить, пожалуйста, напишите вопрос описывающий ваши предлагаемые изменения : Мы будем рады работать с вами, чтобы выяснить наилучший подход, обеспечить руководство и наставничество в процессе разработки функций, а также избежать ненужных или дублирующих усилий.
👉 Помните! Ваш вклад может быть включен в будущие версии Windows! Из-за этого все запросы извлечения будут подвергаться тому же уровню контроля качества, стандартов кодирования, производительности, глобализации, доступности и совместимости, что и наши внутренние участники.
⚠ Примечание : Команда командной строки активно работает над этим хранилищем и будет периодически реструктурировать код, чтобы упростить понимание, навигацию, сборку, тестирование и содействие, поэтому действительно ожидают значительных изменений в компоновке кода на регулярной основе .
Документация
Вся документация находится в папке ./ doc
. Если вы хотите внести свой вклад в документацию, отправьте запрос на извлечение.
Общение с командой
Самый простой способ общения с командой — через GitHub. Пожалуйста, регистрируйте новые проблемы, запросы функций и предложения, но НЕ Ищите подобные открытые / закрытые ранее существующие проблемы прежде, чем делать .
Пожалуйста, помогите нам сохранить этот репозиторий в чистоте, включительно и весело! Мы не потерпим никакого оскорбительного, грубого, неуважительного или неуместного поведения. Прочитайте наш Кодекс поведения для более подробной информации.
Если вы хотите задать вопрос, который, по вашему мнению, не является проблемой (пока), обратитесь к нам через Twitter:
Создание Кодекса
Этот репозиторий использует подмодули git для некоторых своих зависимостей. Чтобы убедиться, что подмодули восстановлены или обновлены, обязательно выполните перед сборкой следующее:
Обновление подмодуля git --init --recursive
OpenConsole.sln может быть собран из Visual Studio или из командной строки с использованием MSBuild. Для сборки из командной строки найдите вашу оболочку ниже.
PowerShell
Модуль импорта . Tools OpenConsole.psm1
Set-MsBuildDevEnvironment
Invoke-OpenConsoleBuild
ЦМД
Мы предоставили набор удобных сценариев, а также README в каталоге / tools чтобы помочь автоматизировать процесс создания и запуска тестов.
Руководство по кодированию
Пожалуйста, ознакомьтесь с этими краткими документами ниже, касающимися наших стандартов кодирования и т. Д.
👉 Если вы обнаружите, что чего-то не хватает в этих документах, не стесняйтесь вносить вклад в любой из наших файлов документации в любом месте репозитория (или создавать новые!)
Это незавершенная работа, поскольку мы узнаем, что нам нужно предоставить людям, чтобы они могли внести эффективный вклад в наш проект.
В этом проекте принят открытый кодекс поведения Microsoft.
Для получения дополнительной информации см. FAQ по Кодексу поведения или свяжитесь с opencode@microsoft.com с любыми дополнительными вопросами или комментариями.