🌸
357 subscribers
127 photos
17 videos
197 links
记录一些 学习笔记,工具,和其它奇怪的东西
Download Telegram
为什么说 tmux 这类 multiplexer 是性能杀手?除了 CSI 序列需要被翻译两遍外,我还找到另外一个原因:

昨天翻 wezterm 代码,发现为了适配 tmux 和 ConPty 被逼的只能加 sleep。ConPty 是 Windows 为了向后兼容在真实 TTY 和 Terminal emulator 加得一个兼容层,原理和 screen/tmux 类似。

不过 Windows 这个属于系统性设计失误,Windows terminal devs 已经承认这点,它不仅导致性能下降,还导致了像 Kitty、Sixel 这些图像协议/格式完全没法工作 —— 作为 multiplexer,它只向用户终端转达它认识的那些转译序列,像 Kitty、Sixel 这些它并不认识,因此根本没机会到达终端模拟器进而显示成图片。

虽然有让 ConPty 支持 Sixel 和直通真实 TTY 的提案,但都没啥进展。对了,我已经抛弃 tmux 很长时间了,使用 kitty 自带的 Tab 和分屏功能,感觉完全够用。
debug 了两晚上,就只改了这一行。

WezTerm 实现的 Inline Images Protocol 并不是 iTerm2 原本的版本,doNotMoveCursor 这个参数是 WezTerm 自己加的,iTerm2 没这参数。这本来没啥问题,算是对 iTerm2 扩展吧。

但是!这个参数在不同平台行为不一致,macOS/Linux 不需要 doNotMoveCursor=1,Windows 则必须设置,否则 TUI 会流泪(tearing),我也会哭 😭

#wezterm
This media is not supported in your browser
VIEW IN TELEGRAM
Windows 图片预览优化到接近 macOS/Linux 体验了,但还有一些串码的问题,可能和 WezTerm 相关,系统带的 Terminal 没这些问题。

目前应该已经是所有 FM 里表现最好的了,先这样吧。

从 Git 安装尝鲜:
cargo install --git https://github.com/sxyazi/yazi.git
This media is not supported in your browser
VIEW IN TELEGRAM
重大更新!

现在预览可以滚动,不仅仅是代码!还包括视频、PDF、压缩包、目录,和 Yazi 支持的所有格式!

https://github.com/sxyazi/yazi/pull/86
🎉8
tokio,tok io
kitty,ki tty

碰巧嘛
Yazi v0.1.4 发行!

- Windows 支持
- 复制文件路径,支持多选
- 自定义 UI 布局
- 更好的文件变动检测,变动后实时更新 mime-type 和 preview
- 新排序方式:自然模式
- 预览可滚动,支持视频、PDF、压缩包、目录等
- 简化文件系统设计,提高整体性能
- 适用于所有组件的帮助,快速查看按键绑定
- 允许自定义 Yazi 配置路径,允许缓存持久化
- 适配 Black Box 终端图片预览

https://github.com/sxyazi/yazi/releases/tag/v0.1.4
👍2
🌸
为什么说 tmux 这类 multiplexer 是性能杀手?除了 CSI 序列需要被翻译两遍外,我还找到另外一个原因: 昨天翻 wezterm 代码,发现为了适配 tmux 和 ConPty 被逼的只能加 sleep。ConPty 是 Windows 为了向后兼容在真实 TTY 和 Terminal emulator 加得一个兼容层,原理和 screen/tmux 类似。 不过 Windows 这个属于系统性设计失误,Windows terminal devs 已经承认这点,它不仅导致性能下降,还导致了像…
想给 Yazi 适配个 Mintty 图片预览,对,就是 Git Bash 带的那个终端。但图片位置一直是错的,在对线长达两周后,仍没丝毫进展,中途还发现个 Mintty bug,https://github.com/mintty/mintty/issues/1228

但在昨天一位 microsoft/terminal 贡献者提醒下,加了个 sleep,竟然就 work 了!!!

我们至今也没搞明白是哪出了问题,Mintty?Cygwin?ConPTY?不清楚,只有天知道。

在同样基于 ConPTY 的 WezTerm 没这问题,可能 WezTerm 已经加好必要的 sleep 了,这么一想准确知道哪里需要 sleep,哪里不需要,也算是不可替代的经验 🤣
👍1
什么时候能有自己的窝,每次搬家都好痛苦😖
😭5
庆祝!

Yazi 达到了它的第一个小目标,收获了 600 颗星星,谢谢大家捧场!🤩

https://github.com/sxyazi/yazi
👍9
晚上刷 Hacker News 刷到了 Yazi,这感觉真的很神奇。。🤣
👍14
给 Yazi 做了一个文档站,这个 Showcase 页面是我最满意的。

https://yazi-rs.github.io/docs/showcase

用得 Docusaurus,头一次用,真的挺方便,直接写 JSX,4 个小函数就完成了 Showcase,一共不到 50 行。
(样式参考了 Docusaurus)
👍5
重新实现了个 Rust 版的 natural sorting,case-insensitive 比现有的 natord crate 快了 ~6 倍。

起因是昨天 Yazi Discord 有人说最新的 Git 版 打开 /nix/store 变慢了,调查下发现最近加了个 case-insensitive 排序支持,并设置成了默认;而 natord case-insensitive 非常慢,也已经 8 年没维护了。我没想到 Yazi 第一个性能瓶颈是 CPU 不是 IO。

对了,exa/eza 同样有这个性能问题,因为它也是用的 natord,打算找个时间把 Yazi 这个新实现 port 过去。
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Yazi 3k啦,记录一下这一刻😆
👍8🎉1
Yazi Terminal File Manager v0.1.5 发布!

这是有史以来最大的一次更新,包含 36 个新功能、24 个错误修复,和 3 项性能改进。

感谢每一位贡献者让 Yazi 变得越来越好!

https://github.com/sxyazi/yazi/releases/tag/v0.1.5

---
最近记性好差,到处都发了忘了往自己贫道发。。Reddit 也忘了写描述😭
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Yazi 4k ⭐️啦,谢谢大家的兴趣与热情!

一开始只是想写个工具自己用(顺便学 Rust),没想到有那么多人喜欢,真的很开心❤️
👍6🥰2
Clash 无了,还有其它推荐嘛,主要 Linux/Windows。

刚刚找到一个 sing-box,好像没 GUI,还没搞懂怎么用(
🙏🏻寻求帮助:Yazi 需要一个新 SVG logo!

目前 logo AI 生成,辨识度很低,与其说 logo 不如说“一张鸭子的照片”。我们尝试用 vectorizer.ai 将其转换为 SVG 效果也不理想。

有人愿意帮忙重新设计一个吗,这是一些关键字:duck, cute, circular, colorful, minimalist style
🌸
头一次遇到 Rust bug https://github.com/sxyazi/yazi/issues/356 https://github.com/rust-lang/rust/issues/108277 原因是用户 $HOME 有无效创建时间的文件,Rust 会 panic 而不返回 Error。
🤣哈哈哈试了下 exa/eza 也会崩,看来所有 Rust 写的都绕不开这个 bug,摆了摆了。

复现方法 touch -d "1969-12-31 23:59:59.1Z" abc
一觉醒来看到这个,一整天的心情都很美好。

这些鼓励和认可,是我把大部分空闲时间都投入开源的动力!😘
🥰13