☰
disktree 界面完全解读:颜色、斜纹与图例如何帮你看懂谁在偷走磁盘空间
2026/9/28 20:57:29 网站建设 项目流程

disktree 界面完全解读:颜色、斜纹与图例如何帮你看懂谁在偷走磁盘空间

【免费下载链接】disktreeA treemap for finding and removing what fills your disk, for Omarchy. Rust + GPUI.项目地址: https://gitcode.com/gh_mirrors/di/disktree

disktree 是一款用 Rust + GPUI 打造的磁盘空间可视化工具(treemap 矩形树图),它扫描你的目录后,把每个文件夹画成一块按真实占用大小缩放的色块——用颜色区分数据类型、用斜纹标记可回收空间、用图例随时对照,再配合右侧面板实时显示磁盘剩余空间,帮你快速找出并清理占满磁盘的东西。

下面这张截图来自项目自带的示例,跟着它把界面从上到下过一遍,你就掌握了 disktree 的"读图法"。

界面总览:四大区域各司其职

顶部:导航路径与测量模式

最上面一行显示从/开始的面包屑路径(截图中是/ home / tobi),点击任意一段可以回到上级目录,甚至把扫描范围扩大到更宽的目录。

路径右侧是几个开关:

  • Size / Files / Age:按占用大小、文件数量或文件年龄排序,按t键可切换前两者;
  • Hidden files:是否统计隐藏文件(默认开启,因为~/.cache常常是主目录里最大的东西);
  • Apparent size:默认显示的是磁盘实际占用(du报的数字),开启后才显示"表观大小";
  • Depth:一次绘制多少层嵌套,按[和]调整。

中上部:扫描摘要 + 图例

紧挨着的一行左边是扫描总计:881 GiB · 3.9M files · 499.4k dirs,一眼知道这次扫描覆盖了多大范围。右边就是后文重点讲的图例(legend)。

中央:彩色马赛克

主区域就是 treemap 本图:目录越占空间,色块越大,层层嵌套。每个顶层目录顶部有一条饱和色带和名称横幅,作为"封面色",方便在图例里对号入座。

右侧面板:决策所需的一切

面板自上而下是四块:

  1. SELECTION(当前选中):名称、总大小(大号显示)、占扫描范围的比例、文件数、最后写入时间,如果是一个 git 仓库还会显示未提交改动、stash 和未推送提交;
  2. WORTH A LOOK(值得一看):自动列出最大、且"删掉大概率没风险"的项目,比如构建产物、worktree、缓存,并标注原因(regenerable、build output 等);
  3. MARKED(已标记):你按空格标记待删的内容;
  4. DISK(磁盘):当前剩余空间,以及标记全部删掉之后的预计剩余空间——清理前就能预知战果。

颜色解读:8 种颜色对应 8 类数据

disktree 的颜色不表示"大小",而是表示这是什么数据。分类规则写在 classify.rs,图例顺序与之一致:

图例名称数据种类典型目录举例
Code🧑‍💻源码与项目src、projects、repos
Agent scratchAI 助手的临时工作区.codex、worktrees、experiments
Toolchains编译器与包管理器.cargo、.rustup、.npm、.conda
Synced云同步客户端的目录Dropbox、Nextcloud、Mobile Documents
Git版本控制对象库.git、裸仓库(含objects/refs/HEAD结构的目录)
Media图片、视频、游戏、模型Pictures、Steam、.ollama
Documents文档、下载、桌面Documents、Downloads、obsidian
Cache缓存与可再生状态.cache、node_modules、DerivedData

几个细节让这套配色更好读(实现见 palette.rs):

  • 同一层级饱和度、明度一致:所有彩色块"音量"相同,不会某个类别天生更扎眼;
  • 越深入颜色越亮:嵌套越深的色块明度微调,无需边框也能分辨层级;
  • 未知目录会"继承":目录名不认识时沿用父目录的种类;顶层目录若名字陌生,则取最大可识别子目录的种类(例如一个叫world的目录里几乎全是.git,它会被画上 Git 的颜色)。

Age 模式:颜色变成"最后修改时间"

切到Age后,颜色含义切换为最后写入时间,分成 5 档(见 AGE_BUCKETS):This week(本周)→ This month → Six months → This year → Older(更早)。最近动过的块颜色最浓,越久没动的越淡——找"半年没碰过的巨型文件夹"时非常顺手。

斜纹解读:独立于颜色的"第二维度"

仔细看截图:有些色块里盖着一层斜向条纹(hatch)——比如.cache、target构建目录、node_modules、同步盘的历史版本区。

斜纹回答的是另一个问题:"这块空间能不能收回来?"而颜色回答的是"这是什么"。两者刻意分开(设计初衷写在 palette.rs 的开头注释里),因为一个缓存目录可能属于任何颜色,但"可再生"这个事实与种类无关。

斜纹覆盖的范围由 classify.rs 的reclaim_of判定,包括:

  • 可再生缓存:.cache、__pycache__、Windows 的Temp、CrashDumps等——谁写的谁就能重写;
  • 构建产物:target(仅当旁边有Cargo.toml时才算)、node_modules(旁边有package.json时)、.next、DerivedData;
  • 同步历史:Sync 类目录里的旧版本文件;
  • 包管理器内容库:.pnpm-store等;
  • 回收站与临时文件:trash、$Recycle.Bin。

注意判断是有"上下文"的:target单独出现不算构建目录,只有挨着Cargo.toml才会打上斜纹——避免误判。

图例:颜色与斜纹的速查手册

图例就在扫描摘要的右边,由两部分组成(渲染代码见 views.rs):

  1. Reclaimable:一个带斜纹的小色块,永远排在最前,提醒"条纹 = 可回收";
  2. 8 个类别色块:每个是一个饱和色的小方块加英文名称。

图例会随模式联动:处于 Age 模式时,8 个类别色块替换为 5 档时间渐变色块。窗口太窄时图例从右端截断,但 Reclaimable 永远保留。

读图口诀很简单:先看斜纹找"能删的",再看颜色知道"它是什么",拿不准就扫一眼顶部图例。

琥珀色:唯一的高亮色

整张图上只有一个颜色是"响亮"的——琥珀色(warning amber)。它只用于三件事:

  • 当前选中的色块与面板高亮;
  • 主操作(键盘enter做的事);
  • 可回收空间总计与清理后新增的剩余空间。

这是刻意保留的(palette.rs 称之为 "the one strong colour"):所有类别色都是低饱和的"背景音",只有琥珀色是"主唱",让眼睛第一时间锁定重点。

新手常见问题

Q:颜色分得不对怎么办?分类完全基于目录名和目录形状(见 classify.rs),不改文件内容。名字对不上的目录会取Other灰色,或继承父目录种类。

Q:为什么数字比ls -l看到的大?默认统计的是磁盘实际占用(st_blocks × 512),即删除后真正能收回的空间,这也是du的口径;ls -l显示的是表观大小。

Q:看到斜纹可以直接删吗?按空格标记后按c打开审核列表,逐项确认再提交;disktree 默认走"移入回收站",只有永久删除才会弹窗二次确认。

Q:快捷键在哪看?窗口底部有一排常驻提示(space标记、enter打开、c审核……),按?可以看完整键位表,详见 README.md。

结语:把"找空间"变成读图

disktree 的界面设计其实就一条主线:颜色回答"是什么",斜纹回答"能不能删",图例负责翻译,琥珀色负责指重点。学会这套读图法之后,面对几百 GiB 的磁盘,你不再需要一条一条翻目录——扫一眼斜纹最密的区域,配合右侧 "Worth a look" 的提示,几分钟就能把空间赎回来。

更多安装与命令行用法,可参考 README.md;分类规则若想扩展自己的目录名,改 classify.rs 里的名字表即可。

【免费下载链接】disktreeA treemap for finding and removing what fills your disk, for Omarchy. Rust + GPUI.项目地址: https://gitcode.com/gh_mirrors/di/disktree

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询