内容提要
作者因 Contexts 多年未更新,用 Rust 和 AI 重写了类似工具 Winlane,集成窗口切换、Raycast 常用功能、Caffeine、Scroll Reverser、ShowyEdge、InputSourcePro 等,内存约 100MB。开发中重点优化界面响应速度,解决中文输入法候选窗闪现问题,并新增自动关闭闲置窗口的 auto-appclose 功能。
延伸解读
从 Contexts 到 Winlane:一个替代方案的诞生
作者因 Contexts 多年未更新,决定用 Rust 和 AI 重写类似工具,最终诞生了 Winlane。这反映了当常用工具停止维护时,开发者可能选择自建替代品。Winlane 不仅实现了窗口切换,还集成了多个日常小工具,内存占用约 100MB,展示了自建工具在功能整合上的潜力。
功能整合:减少依赖多个独立应用
Winlane 将 Raycast 的部分核心功能、Caffeine、Scroll Reverser、ShowyEdge、InputSourcePro 等集成在一起。作者表示可以删除这些独立应用,这提示读者:通过一个工具整合多个小功能,可能简化工作流并减少资源占用,但需注意功能完整性和稳定性是否满足需求。
开发中的细节优化:响应速度与输入体验
作者重点优化了界面响应速度,采用缓存和异步更新策略,确保搜索模式立即展示 UI。同时解决了中文输入法候选窗闪现问题,通过调整获焦顺序、缓冲按键和直接输入英文等方式实现无缝输入。这些细节对工具类应用的体验至关重要,也说明自建工具可以针对个人痛点进行深度定制。
auto-appclose:自动管理窗口数量
Winlane 新增的 auto-appclose 功能可设置应用窗口数量限制,自动关闭最久未使用的窗口。作者以 VS Code 多项目场景为例,说明该功能能有效控制内存占用。这为读者提供了一种思路:通过自动化规则管理窗口,避免资源浪费,尤其适合同时打开多个窗口的重度用户。
Q&A
Winlane 是什么?它和 Contexts 有什么关系?
Winlane 是一个用 Rust 和 AI 重新实现的 macOS 工具,类似 Contexts 的窗口切换器,并集成了多个常用小工具。作者因 Contexts 多年未更新,便自己开发了 Winlane 作为替代。
Winlane 集成了哪些功能?
Winlane 集成了窗口切换、Raycast 的部分核心功能(如查找应用和文件、剪贴板历史、代码片段、应用快捷键、快速链接、打开最近的 VS Code 项目、浏览器历史、表情选择器)、Caffeine、Scroll Reverser、ShowyEdge、InputSourcePro 等。
Winlane 如何优化界面响应速度?
进入搜索模式时立即展示 UI,优先使用缓存,异步更新 items 列表;窗口扫描、应用发现、项目数据库和浏览历史读取、搜索模式的焦点查询都放到后台;⌘Tab 保留有严格超时限制的前台窗口查询,重试留给后台。
Winlane 如何解决中文输入法候选窗闪现的问题?
通过多层处理:调整获焦顺序,先按用户配置准备输入法再让搜索输入框获得焦点;缓冲最早的按键,准备完成后按顺序处理;对于英文键盘布局且当前处于该输入源时,普通 ASCII 字符直接写入原生输入框,避免旧输入法介入。
Winlane 的 auto-appclose 功能是什么?有什么使用场景?
auto-appclose 可以设置任何一个应用和限制数量,当该应用的窗口数量超过限制时,自动关闭最久未使用的窗口。使用场景如 VS Code 打开多个项目时,限制窗口数量为 3 可避免内存被多个 rust-analyzer 占用。
Winlane 的内存占用情况如何?
Winlane 集合了众多功能,但内存只占用 100 来 MB。