WTFUtil 介绍与选型指南

WTFUtil(wtfutil/wtf,v0.51.0,2026-10-23 溯源)Go 编写的终端个人信息仪表盘:定位、模块/Widget/Grid 架构、更名 Tessera 动态、量化选型对比(vs glances/bottom/gtop/GoTTY)与场景建议。

WTFUtilLinux系统监控CLI2026/10/23

WTFUtil 介绍与选型指南

目标:讲清 WTFUtil(GitHub 仓库 wtfutil/wtf,命令名 wtfutil)——一个 Go 语言编写的终端个人信息仪表盘(TUI)——的定位、架构、模块体系与维护现状,并与 glances、bottom、gtop、GoTTY 做量化选型对比,帮助读者判断"什么场景该选 WTFUtil、什么场景不该选"。本篇为认知篇,全部事实性内容(版本、星数、许可证、更名动态、模块清单、安装方式)均来自官方仓库与官网联网溯源,来源与查询日期逐项标注;安装、配置、命令的实机操作见本专栏其余三篇。

一、环境信息

本篇为联网溯源的认知篇,不包含本机实测操作;溯源时使用的环境与信息源如下:

  • 目标运行环境:Ubuntu 22.04 LTS(x86_64),GNOME Terminal / tmux 等支持 256 色的终端均可运行;
  • 溯源日期:2026-10-23(下文所有"查询日期"均指此日);
  • 信息源清单:
    • GitHub Releases:https://github.com/wtfutil/wtf/releases(最新稳定版 v0.51.0 发布说明,含更名公告);
    • GitHub 仓库主页与 README:https://github.com/wtfutil/wtf(安装方式、构建要求);
    • 官方文档站:https://wtfutil.com/(首页横幅、快速开始、Installation、Configuration、Glossary、Modules 导航);
    • 发布件清单与校验文件:https://github.com/wtfutil/wtf/releases/expanded_assets/v0.51.0 与 tessera_0.51.0_checksums.txt;
    • 许可证:发布压缩包内 LICENSE.md(Mozilla Public License 2.0);
    • 星数取证:shields.io 徽章(img.shields.io/github/stars/<owner>/<repo>),未直连 api.github.com。

⚠️ 命名提示:WTFUtil 与 shell 里的 wtf 命令(BSD 体系中的"缩写查询"工具)以及任何名为 WTF 的其他项目没有关系。安装后实际使用的命令是 wtfutil(或新发布件中的 tessera),阅读本文时请勿把三者混为一谈。

二、软件概述

2.1 一句话定位

WTFUtil 官方自我描述是 "the personal information dashboard for your terminal"——面向终端的个人信息仪表盘:它把时间时钟、待办、日历、系统资源、命令输出、RSS、文本文档等信息单元(Module/Widget)拼装到一屏网格里,常驻在一个终端窗口/平铺窗口中,供开发者与运维人员在编码间隙"抬眼即得"。

项目由 Chris Cummer(GitHub ID:senorprogrammer)创建,托管于 wtfutil/wtf,使用 Go 语言开发、以单一静态二进制分发,许可证为 Mozilla Public License 2.0(来源:v0.51.0 发布件内 LICENSE.md,查询日期 2026-10-23)。

2.2 项目更名动态(Tessera,2026 年)

溯源时必须记录的最新动态:项目正在从 "WTF" 更名为 Tessera。这一信息同时出现在三处官方渠道:

  1. 官网每一页顶部横幅:"We're changing our name! Stay tuned to hear more about our new name Tessera!"(wtfutil.com,查询日期 2026-10-23);
  2. v0.51.0 发布说明:"Binaries are now produced under the new name tessera"、"This might be the last minor release under the repository URL github.com/wtfutil/wtf. The project is moving to github.com/linodians/tessera"(GitHub Releases,查询日期 2026-10-23);
  3. 应用退出画面:"Heads up! WTF is being renamed to Tessera. Stay tuned!"(官方站点与发布说明相互印证)。

💡 说明:更名不影响既有配置文件(~/.config/wtf/config.yml)与 wtfutil 命令的向后兼容;v0.51.0 的发布件同时提供旧名(wtf_0.51.0_*.tar.gz,内含 wtfutil 二进制)与新名(tessera--v0.51.0--*.tar.gz,内含 tessera 二进制)两套压缩包,二者为同一次构建的两个名字(文件大小一致,校验文件 tessera_0.51.0_checksums.txt 同时收录两套包的 SHA256)。选型与部署时以当前仓库 wtfutil/wtf 为准即可,GitHub 会自动重定向到新仓库。

2.3 版本与社区活跃度(量化)

维度数据来源与查询日期
最新稳定版v0.51.0(构建时间 2026-09-29T16:08:28Z)GitHub Releases releases/latest
GitHub Star 数17k(shields.io 徽章显示 "17k")img.shields.io/github/stars/wtfutil/wtf,2026-10-23
许可证MPL-2.0v0.51.0 发布件内 LICENSE.md
发布节奏常态化维护,v0.51.0 单次发布包含约 50 个合并 PR(依赖升级、模块修复、测试补强、更名迁移)v0.51.0 Changelog,2026-10-23
语言与构建要求Go,go.mod 声明 go 1.26.4仓库 master 分支 go.mod,2026-10-23
平台支持darwin(amd64/arm64)、linux(amd64/arm64/armv6、新命名包另含 armv7)、Windows 编译支持于 0.51 起修复v0.51.0 发布件清单 + Changelog "enable Windows compilation"

对比组数据(同日取证):glances(nicolargo/glances)34k Star;GoTTY(yudai/gotty)20k Star、仓库已 Archived;bottom(ClementTsang/bottom)14k Star;gtop(aksakalli/gtop)9.9k Star。关键解读:WTFUtil 的 Star 体量处于"成熟主力项目"区间,且发布与合并保持活跃,与已停更的 gtop/GoTTY 形成鲜明对照——这也是选型时最需要看重的差异。

三、核心架构

WTFUtil 的架构可以从"模块(Module)→ 小部件(Widget)→ 网格(Grid)"三层来理解,以下概念定义引自官方 Glossary(wtfutil.com/glossary/,查询日期 2026-10-23):

  • Module(模块):一个离散的数据采集与展示单元,是代码层面的一个 Go 包,例如 New Relic、Git、Weather。模块负责"去哪里拿数据、怎么刷新"。
  • Widget(小部件):模块在屏幕上的呈现者,是应用与数据采集之间的界面。每个模块必有 widget.go 文件。同一个模块可以在屏幕上放置多个实例(例如两个时钟模块各显示不同时区组),实例在配置里用用户自定义的键名区分(如 clocks_a、clocks_b)。
  • Grid(网格):WTFUtil 基于 tview 库的 Grid 布局系统切分屏幕。wtf.grid.columns 与 wtf.grid.rows 两个数组分别按字符宽、字符高把终端切分成矩阵,每个小部件用 position: {top, left, width, height} 声明自己在矩阵中的占位(单位是"格子"而不是像素)。例如 columns: [35, 35, 35] 表示三列、每列 35 字符宽。

配置驱动是 WTFUtil 的另一核心设计:所有界面与行为都由一份 YAML 配置文件决定(默认 ~/.config/wtf/config.yml),命令行只提供少量参数(--config、--module、--version 等,详见本专栏《WTFUtil 0.51.0 常用命令与快捷键详解》)。数据刷新由每个模块独立的 refreshInterval 控制(支持整数秒或带单位字符串),无需任何守护进程——wtfutil 就是一个前台 TUI 进程,退出即结束。

💡 技术拓展:终端仪表盘类工具的界面实现路线主要有三种——TUI 绘制库自绘(WTFUtil 用 tview/tcell,bottom 用 tui-rs/ratatui,htop/btop 用自绘 curses 类库)、浏览器渲染(GoTTY 把已有终端程序通过 WebSocket 投到网页、glances 内置 Web 模式)、原生 GUI/面板(linux-dash 等网页面板)。自绘 TUI 的共同优点是零浏览器依赖、SSH 会话即可用、资源占用低;缺点是只能在终端内使用、无法远程分享画面。WTFUtil 实际采用 tview/tcell 自绘路线,这与它"开发者本机常驻"的定位一致。

四、功能特性

以下特性均对应官方文档站与仓库可见的功能面(来源:wtfutil.com 导航与 Configuration/Modules 文档,查询日期 2026-10-23):

  • 80 余个官方模块:官网 Modules 导航枚举了从 A 到 Z 的模块(Airbrake、Asana、Clocks、CmdRunner、Docker、Feed Reader、Git、GitHub、GitLab、Google Calendar、HackerNews、Jenkins、Jira、Kubernetes、PagerDuty、Resource Usage、Security、Todo、Textfile、Weather 等),覆盖开发者工作流(代码托管、CI、工单)与个人信息(日历、待办、天气、新闻、行情)两大类。
  • CmdRunner 万能扩展:cmdrunner 模块可以把任意命令行程序的输出作为小部件上屏(如 uptime、df、自定义脚本),不需要写代码就能扩展仪表盘,是"个人信息仪表盘"落地最常用的模块。
  • 网格布局与焦点导航:grid.columns/rows 自由切屏;键盘焦点模式(Ctrl+Space 进入、方向键移动、数字快捷键直达)+ 每模块专属按键(如 Todo 的增删改)。
  • 颜色与外观定制:wtf.colors 全局配色(背景/边框/标题/高亮),模块级颜色覆盖;navigation.shortcuts 控制标题序号显隐。
  • Secret Store:wtf.secretStore 集中保存模块密钥,命令行提供 save-secret <service> 子命令写入,避免把 API Key 明文写进配置文件。
  • 单二进制、无守护进程:下载解压即用,无外部服务依赖;SSH 到服务器上同样可用。
  • 多实例配置:--config 参数或 WTF_CONFIG 环境变量加载不同配置文件,可在多终端/多窗口跑多套不同主题的仪表盘。

五、快速开始(最小可用示例)

以下步骤来自官方 Quick Start(wtfutil.com/quick_start/,查询日期 2026-10-23,此处仅作认知引导;完整安装实测与回显见本专栏安装篇):

  1. 安装(两种官方推荐路径任选其一):

    # macOS / Linuxbrew
    brew install wtfutil
    
    # 或直接下载单文件二进制
    # 从 https://github.com/wtfutil/wtf/releases 下载对应平台的 tar.gz,
    # 解压后把 wtfutil 复制到 /usr/local/bin 并赋予执行权限
    
  2. 启动:终端内执行 wtfutil。首次启动会在 ~/.config/wtf/ 自动生成默认配置文件 config.yml 并按其渲染默认仪表盘(时钟、文本文件、命令输出等基础小部件)。

  3. 配置:编辑 ~/.config/wtf/config.yml 增删模块与调整网格;改完按 q 退出重启即可看到新布局。官方仓库 _sample_configs/ 目录提供多个示例配置可直接套用。

六、适用场景与限制

6.1 适用场景

  • 开发者常驻屏:编码时一侧终端常驻时钟 + 待办 + 日历 + GitHub/GitLab 通知 + 本机资源,代替在浏览器里开一堆标签页(项目名 "WTF = What are all these browser tabs open for?" 的由来,官方 Glossary)。
  • 运维值守屏:用 CmdRunner 聚合 uptime、磁盘、队列长度等自定义巡检命令,配合 SSH 在跳板机/堡垒机环境使用——无浏览器也能用是硬需求时,这是网页面板给不了的。
  • 多环境多份仪表盘:用 --config 在不同终端窗口跑不同配置(一套个人、一套值班)。

6.2 限制

  • 不是系统监控器:默认没有逐进程表、CPU/内存历史曲线这类"监控器刚需"能力;Resource Usage 模块只提供概览级信息。要监控细节应选 glances/bottom/btop(见下节对比)。
  • 多数在线模块需要 API Key:日历、天气、行情、 PagerDuty 等模块依赖第三方服务与密钥,离线内网环境下可用模块集中于 clocks、textfile、cmdrunner、resourceusage 等本地型模块。
  • 纯终端形态:没有 Web UI,无法把画面分享给浏览器用户;需要浏览器访问时应选 GoTTY(投终端)或 glances Web 模式。
  • 更名迁移期:2026 年正处于 WTF→Tessera 更名过渡,文档、包名、二进制名双轨并存,脚本/文档引用时注意版本与名称对应关系。

七、同类选型对比(含量化数据)

7.1 横向对比表

下表对比 WTFUtil 与三款终端 TUI 工具及一款终端分享工具(星数均为 shields.io 徽章取证,查询日期 2026-10-23):

维度WTFUtil(wtfutil/wtf)glances(nicolargo/glances)bottom(ClementTsang/bottom)gtop(aksakalli/gtop)GoTTY(yudai/gotty)
定位个人信息仪表盘(信息聚合)全能系统监控(本机+客户机-服务端)系统资源监控器(htop 增强替代)系统监控仪表盘终端投屏到 Web
语言/技术栈Go + tview/tcellPython + psutil + cursesRust + ratatuiNode.js + blessedGo + WebSocket
Star 数17k34k14k9.9k20k(已 Archived)
维护状态活跃(2026-09 仍发版,更名 Tessera 迁移中)活跃活跃长期未更新仓库已归档(Archived)
界面内容模块化网格,内容自定义(时钟/待办/日历/命令输出等 80+ 模块)系统指标为主:CPU/内存/磁盘/网络/进程/传感器 + Web/REST进程表 + CPU/内存/磁盘/网络/温度图表 + 自定义图表固定面板:CPU/内存/磁盘/网络/进程不渲染仪表盘,仅转发已有终端
扩展方式YAML 配置 + cmdrunner 跑任意命令,无需编码配置文件 + 导出器/插件体系TOML 配置(图表/过滤/温度)无实质扩展能力无(转发性质)
API Key 依赖在线模块多数需要,本地模块不需要不需要(监控本机)不需要不需要不需要
许可证MPL-2.0LGPL-3.0MITMITMIT

关键解读:glances/bottom/gtop 的屏幕内容是"系统说了算",WTFUtil 的屏幕内容是"你的配置说了算"。这是"个人信息仪表盘"与"系统监控 TUI"的本质分野:前三者回答"这台机器现在怎么样",WTFUtil 回答"我今天的工作状态与需要盯的信息是什么样"。

7.2 与站内同类专栏互链

7.3 "如果……则……"选型建议

  • 如果要监控单机系统资源细节(逐进程、逐核、温度、GPU)→ 选 glances 或 bottom,不要选 WTFUtil;
  • 如果要在终端常驻一块"个人工作台"(时钟、待办、日历、仓库动态、自定义命令输出)→ 选 WTFUtil;
  • 如果两者都要→ 常见组合是:tmux 一格跑 bottom/glances 管系统,另一格跑 wtfutil 管信息聚合,二者互补不冲突;
  • 如果要把终端画面分享到浏览器(教学、协同)→ 选 GoTTY 类工具(注意 yudai/gotty 已归档,需评估替代品),WTFUtil 无此能力;
  • 如果内网离线环境、不能申请第三方 API Key → WTFUtil 只剩 clocks/textfile/cmdrunner/resourceusage 等本地模块可用,此时它近似"可编排的命令输出面板",是否值得引入需权衡;监控场景直接选 glances/bottom 更省事。

八、参考链接

  • 仓库与发布:https://github.com/wtfutil/wtf;v0.51.0 发布说明 https://github.com/wtfutil/wtf/releases/tag/v0.51.0(查询日期 2026-10-23)
  • 更名讨论 Issue:https://github.com/wtfutil/wtf/issues/2186(查询日期 2026-10-23)
  • 官方文档站:https://wtfutil.com/(Quick Start / Installation / Configuration / Glossary / Modules,查询日期 2026-10-23)
  • 官方安装文档:https://wtfutil.com/installation/(查询日期 2026-10-23)
  • 星数取证:https://img.shields.io/github/stars/wtfutil/wtf、https://img.shields.io/github/stars/nicolargo/glances、https://img.shields.io/github/stars/ClementTsang/bottom、https://img.shields.io/github/stars/aksakalli/gtop、https://img.shields.io/github/stars/yudai/gotty(均查询于 2026-10-23)
  • 站内互链:《glances 介绍与选型指南》、《bottom 介绍与选型指南》、《gtop 介绍与选型指南》、《ctop 介绍与选型指南》