详解 – Windows Terminal
导读 | Windows Terminal 是一个全新的、流行的、功能强大的命令行终端工具。包含很多来社区呼声很高的特性,例如:多 Tab 支持、富文本、多语言支持、可配置、主题和样式,支持 emoji 和基于 GPU 运算的文本渲染等等。 |
同时该终端依然符合我们的目标和要求,以确保它保持快速、高效,并且不会消耗大量内存和电源。
Windows 控制台主机
Windows 控制台主机程序 conhost.exe是 Windows 原生的命令行体验,它实现了 Windows 的命令行基础架构,同时提供 Windows Console API, 输入引擎、渲染引擎和用户配置信息。本项目中的控制台主机代码实际上是 Windows 中的 conhost.exe 的源码。
控制台的主要目的是对已有控制台应用保持向后兼容性。
自从 2014 年有了 Windows 命令行以来,开发团队已经给控制台增加了很多新特性,包括窗口透明化、基于行的选择以及支持 ANSI / 虚拟终端序列 Virtual Terminal sequences, 24-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 在命令行中构建。命令行构建的方法如下:
nugetrestoreOpenConsole.slnmsbuildOpenConsole.sln
我们还在 tools
目录下提供了一组常用的脚本可以帮助自动化处理构建和运行测试的过程。
项目包含:
Windows Terminal
Windows 控制台主机 (conhost.exe)
上述两项目的共享组件
ColorTool
示例项目 将展示如何使用 Windows Console APIs
原文来自:https://www.linuxprobe.com/windows-terminal-2.html
详解 – Windows Terminal相关推荐
- smss.exe是什么进程?详解Windows会话管理器中的smss.exe
smss.exe是什么进程?详解Windows会话管理器中的smss.exe 进程综述 smss.exe是什么进程?详解Windows会话管理器中的smss.exe-冯金伟博客园smss.exe是什么 ...
- tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法
Windows下调整Tomcat启动参数 Tomcat默认可以使用的内存为128MB,对于访问数比较多.比较吃内存的应用来说,这是不够的.我们可以通过调整Java虚拟机的启动参数来增加Tomcat可使 ...
- 服务器给站点读写权限,IIS7目录权限设置的问题详解Windows服务器操作系统 -电脑资料...
今天自己把服务器安装了windows 2008同时也是iis7了,但是在设置权限时有些小问题不了解后来百度了才知道解决办法, 前段时间在windows server 2008 r2 (x64)服务器上 ...
- xp系统本地服务器环境配置,Windows XP安装Apache环境图文详解Windows服务器操作系统 -电脑资料...
本文章来简单的介绍Windows XP安装Apache环境图文方法,有需要了解的朋友可参考参考, 双击 apache_2.2.8-win32-x86-no_ssl.msi 文件,开始安装 Apache ...
- 详解Windows开机自动运行
详解Windows开机自动运行 一.经典的启动--"启动"文件夹 单击"开始→程序",你会发现一个"启动"菜单,这就是最经典的Windows ...
- java环境变量设置详解_JAVA环境变量配置详解(Windows)
JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME指向的 ...
- 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程
@TOC初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程 [1]什么是windows API Windows API 中文翻译过来就是windows应用程序接口(Applica ...
- 详解Windows RT版和Win8标准版/专业版/企业版区别
详解Windows RT版和Win8标准版/专业版/企业版区别 Win8版本到底有哪些? Windows 8的各版本有什么不同.差别和区别? Win8旗舰版有木有? Win8最好的版本是哪个? 我应该 ...
- 计算机服务设置详解,Windows 虚拟内存详解服务器教程 -电脑资料
window|详解 简单来讲就是文件数据交叉链接的活动文件, 二.虚拟内存的作用内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽.为了 ...
最新文章
- python+xlrd+xlwt操作excel
- mysql实例化_mysql多实例实例化数据库
- 基于ELK的简单数据分析
- idea html 错误提示,Idea 代码编辑错误不飘红提示
- java pk .net_Java与.Net大PK
- testlink匹配mysql8_如何安装Testlink
- 使用Tomcat发布war包
- 计算机在档案部门应用范围,计算机在档案管理中的相关运用
- 一级计算机第65套题,全国计算机一级考试题库(附答案).pdf
- 微信群解答_各月各旬降水量均值_巧用groupby
- 【学习笔记】Baby Step Giant Step算法及其扩展
- 国产AIoT SoC芯片
- GWT项目创建时遇到的问题
- [ecshop 资料]ecshop积分充值可充值等级积分余消费积分教程 pay_points
- otf和ctf的意义_OTF与CTF的比较与.ppt
- 阿里云 windows 服务器卸载阿里云盾
- php 批量生成链接,php 生成迅雷链接的简单示例
- 2022 ICPC Gran Premio de Mexico 1ra Fecha (B、D、E、F)
- 银河麒麟高级服务器v10 sp2 下fpm工具打包rpm
- 桌面上的文件夹存储路径是什么?桌面文件夹误删了怎么找回
热门文章
- ffmpeg-hls实现分析
- C++实现 L1-055 谁是赢家 (10分)
- 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】
- 如何从javascript直接调用word插件
- 再次遇到RuntimeError: CUDA error: an illegal memory access was encountered
- web自动化学习之selenium安装喝浏览器驱动和元素定位
- 高性能 + 百万级excel数据导入导出
- ArcGIS经纬网不穿过图层的具体设置步骤
- 读书笔记之计算机体系结构
- 机械专业夹具类毕业设计题目汇总/组合机床、车床拨叉、飞锤支架、连接座、倒挡拨叉、盖、法兰盘、铜衬轴套、心轴零件、曲轴箱零件、托板、发动机曲轴、方刀架、车床变速箱、柴油机机体、车床滤油器、方刀架……