文章摘要
Tattoy现已支持动画光标,采用与Ghostty相同的格式,通过自定义着色器渲染。尽管Tattoy支持Ghostty光标,但其渲染方式不同,使用UTF8文本像素“▀”和“▄”而非实际像素,可能丢失部分细节,但像素化效果可能吸引部分用户。由于Tattoy已有基于着色器的框架,初步实现Ghostty着色器仅需数小时,但解决透明度等问题花费了一周时间。Tattoy无法像Ghostty那样采样终端像素,但能获取字体符号的真实颜色值。
文章总结
动态光标功能在Tattoy中的实现
2025年7月20日,Tom Buckley-Houston宣布Tattoy现已支持动态光标功能。该功能采用了与Ghostty相同的格式,通过自定义着色器来渲染光标。用户可以直接使用一些流行的Ghostty光标,这些光标在Tattoy中开箱即用。
尽管Tattoy支持Ghostty光标,但其渲染方式与Ghostty有所不同。Ghostty使用实际像素渲染光标,而Tattoy则使用基于UTF8文本的“像素”,即“▀”和“▄”。这意味着Tattoy光标有时可能无法完全呈现Ghostty光标的细腻效果,但这种像素化的效果也可能受到部分用户的喜爱。
由于Tattoy已经具备基于着色器的框架,因此仅需几个小时就能让第一个Ghostty着色器在Tattoy中运行。然而,解决所有问题则花费了至少一周的时间。其中最具挑战性的问题之一是支持光标轨迹抗锯齿边缘的透明度。Ghostty着色器期望能够采样实际终端的底层像素,这种采样使得平滑的抗锯齿混合成为可能。而Tattoy完全基于文本,无法获取字体符号的单个像素。不过,Tattoy知道文本的真实颜色值,因此可以创建一个粗糙的“像素化”终端版本,并将其作为图像缓冲区上传到GPU。虽然这解决了抗锯齿问题,但也意味着像素化的终端版本被包含在光标图像数据中。为了解决这个问题,作者添加了一个简单的后处理步骤,比较上传到GPU的终端像素与最终渲染的光标像素,最终将两者的差异呈现给用户。
总体来看,这一功能运行良好,但在较大的终端上可能会出现一些延迟。未来还有许多通用的性能改进可以帮助解决这一问题。此外,作者也在考虑是否可以通过让Tattoy完全接管主机终端模拟器的光标渲染来减少延迟,因为目前动态光标和主机光标是同时渲染的,这导致了延迟差异。
作者认为这是一个良好的初步尝试,并期待用户的反馈。
评论总结
评论主要围绕终端光标动画的实用性和视觉效果展开,观点多样,既有赞赏也有批评。
正面评价: 1. 视觉效果出色:多位用户认为动画效果酷炫,有助于追踪光标位置。 - "This is way cooler than I expected."(比我想象的酷多了。) - "Inspiring. So cool, yet useful."(启发人心。既酷炫又实用。)
- 实用性强:部分用户认为动画功能有助于提升使用体验,尤其是在追踪光标移动时。
- "Helps trace where the cursor is going."(有助于追踪光标的移动。)
- "I could see myself using this if I was using more TUI apps."(如果我使用更多TUI应用,我可能会用这个。)
负面评价: 1. 过于分散注意力:一些用户认为动画效果过于夸张,可能会分散注意力。 - "Barely useable, pfff. Needs at least two out of three of airhorn and/or light saber sound effects."(几乎不可用,至少需要加入空气喇叭或光剑音效。) - "I do wish it were a bit more visible (though not, perhaps, the EDM show presented)."(我希望它能更显眼一些,但不是像EDM秀那样。)
- 实用性存疑:部分用户质疑这种动画是否适合日常使用。
- "Does anyone use this as their daily driver?"(有人会把它作为日常使用吗?)
- "Honestly, just
:set cursorcolumnis far more useful."(说实话,:set cursorcolumn更有用。)
其他观点: 1. 技术问题:有用户提到安装后无法看到动画效果,可能是由于自定义设置导致的。 - "I installed it with homebrew but I dont see this shader tracer."(我用Homebrew安装了,但看不到这个着色器追踪器。)
- 与其他工具的比较:一些用户提到其他工具(如iTerm2、Emacs)的光标功能,认为它们更实用或更简洁。
- "iTerm2 has a basic animated cursor that I like."(iTerm2有一个我喜欢的基本动画光标。)
- "Emacs has beacon."(Emacs有beacon功能。)
总体而言,评论对终端光标动画的视觉效果表示赞赏,但对其实用性和是否适合日常使用存在分歧。