博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows 全新终端 Windows Terminal
阅读量:3525 次
发布时间:2019-05-20

本文共 1326 字,大约阅读时间需要 4 分钟。

本项目包含:

  • Windows Terminal
  • Windows 控制台主机 (conhost.exe)
  • 上述两项目的共享组件
  •  将展示如何使用 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 命令行以来,开发团队已经给控制台增加了很多新特性,包括窗口透明化、基于行的选择以及支持 , , 以及一个  等等。

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

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

共享的组件

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

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

构建一个全新终端

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

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

源码构建

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

git submodule update --init --recursive

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

nuget restore OpenConsole.slnmsbuild OpenConsole.sln

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

原文地址: 

转载地址:http://jnzhj.baihongyu.com/

你可能感兴趣的文章
代理模式之------动态代理
查看>>
Spring实现AOP的三种方式
查看>>
Mybatis-Spring简单的配置和使用,配置事务
查看>>
SpringMVC和Mybatis整合使用的配置文件
查看>>
代码特效插件pycharm
查看>>
python实现tcp客户端从服务端下载文件
查看>>
将字符串 “k:1|k1:2|k2:3|k3:4” 转换成字典{“k”:1,”k1”:2,”k2”:3,”k3”:4}
查看>>
AttributeError: 'tuple' object has no attribute 'decode'
查看>>
node爬虫(牛刀小试)
查看>>
关于vue的seo优化
查看>>
字符串在html中的页面中的换行
查看>>
react父子组件间的通信和传值
查看>>
vue-cli3.0设置环境变量
查看>>
vue父组件直接操作子组件的方法(不通过$emit和$on)
查看>>
vue上传文件到UCloud
查看>>
获取input选择文件的本地地址
查看>>
React绑定全局方法或变量
查看>>
js监听div标签上面的自定义属性
查看>>
navcat如何重置窗口
查看>>
代码注入
查看>>