菜单

[编程工具]Windows 全新终端 Windows Terminal

2020年2月29日 - 金沙国际棋牌下载官网
[编程工具]Windows 全新终端 Windows Terminal

一名开发者(下用 Nick 代称)在 Windows Terminal 的 GitHub repo
中发表了一个不是反馈问题的 issue ——
他只是好奇该终端拥有这种如此顺滑输入的效果是如何实现的。

本项目包含:

图片 1

Nick 觉得这种顺滑感是其他 Windows
应用都不具备的,甚至是最轻量的 notepad.exe 都未能提供这种输入体验。他还问到,这种 UI
增强功能将来是否会应用于所有 Windows 应用程序。

Windows Terminal

很快,负责此项目的 Windows
开发团队成员(@miniksa)对 Nick
的疑问进行了解答。

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

miniksa 表示,保持在 WSL
默认终端输入内容的速度比其他应用快,这实际上就是他们唯一的工作!除此之外,也可能是因为他们必须使用
Windows 最旧和最低级别的 API 来完成此项工作。

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

WSL 的默认终端不像 Electron
等框架那样涉及到许多其他的层或框架,它有一个并不特别的裸窗口,并且没有任何附加组件。他们会从窗口消息(window
messages)而不是某种事件框架((WPF, WinForms, UWP,
Electron))来处理键入的内容,而这些内容是通过内核传输过来的。接着,他们使用
GDI 的 PolyTextOut 将文本直接转储到窗口而不带多余的装饰。

图片 2

miniksa 解释道,notepad.exe
确实很轻量,不过在其窗口上也具有多个控件,并且可能在编辑控件中使用某种库、框架来确定其文本布局(也可能正在使用其他库或框架进行国际化支持…),这些都使得它们的输入速度比不上
WSL 默认终端。当然,WSL
也需要进行权衡取舍,它不像其他应用那样提供完全的国际化支持。

图片 3

为什么要这样做?第一,conhost.exe
已十分陈旧。它必须使用所有内容的裸机底层,因为它是在创建其他大多数框架之前创建的。第二,它需要保持尽可能底层的级别,而且它是用
C/C++ 编写的,它需要尽可能保持底层的状态以方便提供给第三方使用。

Windows 控制台主机

至于其他 Windows 应用是否有机会用上这种顺滑的输入效果,miniksa
觉得几乎是没机会。这些应用能够以一种简单的方式用任何一门语言来调用一种方法和布局文本(layout
text),而无需手动计算像素或关心它们的字体该采用哪种样式。而恰好 miniksa
手动计算像素、滑动区域和数学应用区域等的方式正是使得 WSL
默认终端输入速度更快的原因。

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

(文/开源中国)    

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

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

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

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

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图