Windows 全新终端 Windows Terminal

MIT
C/C++
Windows
微软
2019-05-07
红薯

本项目包含:

  • Windows Terminal
  • Windows 控制台主机 (conhost.exe)
  • 上述两项目的共享组件
  • ColorTool
  • 示例项目 将展示如何使用 Windows Console APIs

Windows Terminal

Windows Terminal 是一个全新的、流行的、功能强大的命令行终端工具。包含很多来社区呼声很高的特性,例如:多 Tab 支持、富文本、多语言支持、可配置、主题和样式,支持 emoji 和基于 GPU 运算的文本渲染等等。

同时该终端依然符合我们的目标和要求,以确保它保持快速、高效,并且不会消耗大量内存和电源。

“Windows Terminal”的图片搜索结果

“Windows Terminal”的图片搜索结果

Windows 控制台主机

Windows 控制台主机程序 conhost.exe是 Windows 原生的命令行体验,它实现了 Windows 的命令行基础架构,同时提供 Windows Console API, 输入引擎、渲染引擎和用户配置信息。本项目中的控制台主机代码实际上是 Windows 中的 conhost.exe 的源码。

控制台的主要目的是对已有控制台应用保持向后兼容性。

自从 2014 年有了 Windows 命令行以来,开发团队已经给控制台增加了很多新特性,包括窗口透明化、基于行的选择以及支持 ANSI / 虚拟终端序列 Virtual Terminal sequences24-bit color, 以及一个 Pseudoconsole ("ConPTY") 等等。

但是由于控制台主要的目标是维护向后兼容性,所以尽管这么多年社区一直希望我们能添加一些特性(例如 Tabs),但是我们不可能再增加这些特性。

诸多限制让我们决定开发一个全新的 Windows Terminal。

共享的组件

在对控制台进行大修的同时,我们对其代码库进行了大量的改进。主要是将逻辑实体清晰地划分为模块和类,引入了一些关键的扩展点,用更安全、更高效的STL容器替换了几个旧的、自制的集合和容器,并通过使用微软的 Wil header 库使代码更简单、更安全。

这项大修工作导致创建了几个对 Windows 上的任何终端实现都有用的关键组件,包括一个新的基于 DirectWrite 的文本布局和渲染引擎、一个能够存储 UTF-16 和 UTF-8 的文本缓冲区以及一个VT解析器/发射器。

构建一个全新终端

当开始构建全新终端应用程序时,我们探索并评估了几种方法和技术堆栈。最终决定继续使用 C++ 开发,并通过共享上述的现代化组件来实现我们的目标,并基于现代 Windows 应用程序平台和 UI 框架之上进行开发。

此外,我们意识到终端的渲染器和输入堆栈可以构建成可重用的 Windows UI 控件,方便其他人可以将其合并到其他应用程序中。

源码构建

该项目使用 git submodules 包含一些相关依赖,要确保子模块被更新,请在构建器使用如下命令检查:

git submodule update --init --recursive

OpenConsole.sln 需要在 Visual Studio 构建或者是使用 MSBuild 在命令行中构建。命令行构建的方法如下:

nuget restore OpenConsole.sln
msbuild OpenConsole.sln

我们还在 tools 目录下提供了一组常用的脚本可以帮助自动化处理构建和运行测试的过程。

的码云指数为
超过 的项目
加载中

评论(49)

ASorb
ASorb

引用来自“ASorb”的评论

linux shell用的很开心

引用来自“幻の上帝”的评论

请先分清 shell 和终端模拟器……这个项目不是 shell ,技术上也并不容易让你用现有的 shell 更开心。 只是要 shell ,根本用不上这个项目—— Linux 能用的主流 shell 在 WSL 上就有,如果非要 Win32 ,MSYS2 之类的也早就能用了。 (……然而不管怎么样,就正经写脚本来说,九成九 shell 都是辣鸡。)
感谢大佬解析
幻の上帝
幻の上帝

引用来自“独孤影”的评论

妈蛋,我已经升级vs2019了,你再发

引用来自“产品哥”的评论

有什么关系吗?

引用来自“独孤影”的评论

不方便编译啊,编译需要vs2017
不升级项目,保留 vs141 的工具集,装点 SDK ,这几天修了一坨低级 bug 以后用 VS2019 编译是没什么压力的。但是运行嘛……
幻の上帝
幻の上帝

引用来自“ASorb”的评论

linux shell用的很开心
请先分清 shell 和终端模拟器……这个项目不是 shell ,技术上也并不容易让你用现有的 shell 更开心。 只是要 shell ,根本用不上这个项目—— Linux 能用的主流 shell 在 WSL 上就有,如果非要 Win32 ,MSYS2 之类的也早就能用了。 (……然而不管怎么样,就正经写脚本来说,九成九 shell 都是辣鸡。)
幻の上帝
幻の上帝

引用来自“幻の上帝”的评论

要求 Windows 内核支持不合理,完全可以裁剪出不同的组件。代码质量比较一般,还有忘记 、没管 cl 默认不支持 UTF-8 w/ BOM 之类的基本错误。除了在 issue 找茬只能精神上鼓励一下。
忘记《functional》……现在这边还要手动转义啊……????@红薯 ...
幻の上帝
幻の上帝
要求 Windows 内核支持不合理,完全可以裁剪出不同的组件。代码质量比较一般,还有忘记 、没管 cl 默认不支持 UTF-8 w/ BOM 之类的基本错误。除了在 issue 找茬只能精神上鼓励一下。
ASorb
ASorb
linux shell用的很开心
独孤影
独孤影

引用来自“独孤影”的评论

妈蛋,我已经升级vs2019了,你再发

引用来自“产品哥”的评论

有什么关系吗?
不方便编译啊,编译需要vs2017
产品哥
产品哥

引用来自“独孤影”的评论

妈蛋,我已经升级vs2019了,你再发
有什么关系吗?
独孤影
独孤影
妈蛋,我已经升级vs2019了,你再发
写给三月
写给三月
有git不碰这个

开源倡导者担忧微软垄断开源系统工具

在收购了 GitHub 之后,微软加大了对开源系统的支持力度,允许开发者为其服务添加新的功能。例如在今年的开发者大会(Build 2019)上,微软就开源了全新的 Windows Terminal。随后不久,该公...

05/17 07:23

Build 2019 上微软的开源动作有点不一样

微软今年举办的 Build 开发者大会可谓是抢足风头,大会第一天就放了不少大招:宣布新的命令行终端 Windows Terminal、Windows 10 的 Linux 子系统 WSL 2 将运行真正的 Linux 内核、跳过 .NET...

05/13 08:58

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

eclipse key order by when

Category Command Binding When Source Annotate Class File Ctrl+1 Browsing attached Java Source Run/Debug Inspect Ctrl+Shift+I Chromium Debug Run/Debug Run to Line Ctrl+R Debuggin...

2018/11/19 14:51
1
0
eclipse key order by Category

Category Command Binding When Edit Format Ctrl+Shift+F Editing in Structured Text Editors Edit Restore Last Selection Alt+Shift+Down Editing in Structured Text Editors Edit Open...

2018/11/19 14:57
3
0
史上最全eclispe快捷键

史上最全eclispe快捷键

2016/05/27 18:28
298
0
Hercules Emulator installation and configuration

Release date: 23 July, 2014 Contents 1. Hercules Emulator Overview 2. Hardware and Software Prerequisites 2.1 Hareware Prerequisites 2.2 Software Prerequisites 2.3 Required prog...

2018/05/19 15:56
630
0
【转】防黑客-修改XP远程管理默认端口

自Windows 2000开始,微软提供了一项终端服务(Terminal Server)这项服务可以将远程的桌面传递到到本地。通过该服务,可视化的远程管理可以非常方便的实现。继windows 2000之后,windows x...

2011/12/14 11:57
64
0
VSCode 相关配置记录

之前一直使用eclipse做为开发工具,最近看别人用了VSCode,自己就下载了用一下,感觉非常爽,因为前段可以直接使用VIM的命令(本人是VIM大牛,之前一直在VIM上开发程序)。 1. 使用Cmder代替...

2018/03/06 17:14
171
0
专业地攻击:优秀黑客的Linux基础,part 1(起步)

很多人都会有疑问:‘我怎样才能成为一个很厉害的黑客?’我无法回答你这个问题,只能够通过这个在null bute上看到的系列来告诉你怎样踏入黑客的世界。

2014/01/21 13:29
3.1K
2
how glew and freeglut are configured in windows?

how glew and freeglut are configured?

2014/11/26 12:03
19
0
Windows平台使用eclipse集成msys2控制台

1、安装JDK,eclipse(百度搜索,教程特别多); 2、打开eclipse设置Terminal: windows => Preferences => Terminal, 添加Local Terminal如下图 注意: Path设置为msys2_shell文件的路径 Ar...

2018/01/17 09:41
260
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部