☰
disktree 实战指南:用 Rust + GPUI 树图透视磁盘占用,标记并安全回收空间
2026/9/30 8:41:47 网站建设 项目流程

【免费下载链接】disktree

A treemap for finding and removing what fills your disk, for Omarchy. Rust + GPUI.

项目地址:https://gitcode.com/gh_mirrors/di/disktree
点击查看免费下载

disktree 是一个面向 Omarchy 桌面的磁盘占用可视化与清理工具:它默认扫描你的主目录,把每个目录画成按真实磁盘成本定尺寸的嵌套马赛克(treemap),并始终把卷的可用空间放在眼前。读完本文,你将掌握 disktree 在 Linux、macOS、Windows 上的安装方式、完整命令行选项、键盘驱动的标记—审查—提交清理流程,以及它背后"如何度量、如何分类、如何拒绝删除"的源码级设计原理。

它是什么:一张能"走进"的磁盘地图

disktree 的核心交互可以用一句话概括:找出是什么占满了磁盘,标记应该删掉的东西,然后移除它——整个过程中卷的可用空间始终可见。它由 GPUI(通过 gpui-omarchy)构建,因此会跟随你的 Omarchy 主题,表现得像桌面上的其他原生应用。它默认扫描主目录,把每个目录画成嵌套的马赛克,大小反映其在磁盘上的真实开销,并支持用键盘或鼠标逐层进入。你可以随心所欲地标记;在进入审查列表并确认提交之前什么都不会发生,而永久删除路径总是会先征求确认。

代码库按"无 UI 的核心"与"GPUI 应用"拆分为两个 crate:crates/disktree-core承担扫描、树结构、布局、空间核算与删除逻辑,crates/disktree-app承载界面。正如 lib.rs 顶部注释所说明的,这种拆分是为了让必须正确的部分——大小核算、硬链接去重、宽高比布局、以及什么可以被删除——能够在不依赖 GPUI、显示器或 GPU 的情况下独立构建和测试。

安装

Linux(含 Omarchy)

从最新 release 下载disktree-*-x86_64-linux.tar.gz(ARM 机器选aarch64-linux),解压后运行其中的./install.sh(或者只把disktree复制到PATH上)。也可以从源码构建:

git clone https://gitcode.com/gh_mirrors/di/disktree cd disktree make install

make install会构建 release 二进制,并把三样东西放到~/.local下(无需 root):

  • ~/.local/bin/disktree
  • 一个 desktop entry,让 disktree 出现在启动器里、也出现在文件管理器对目录的Open with菜单中(它注册为处理器,但永远不会成为默认程序)
  • 一个图标

sudo make install PREFIX=/usr/local则安装到系统范围;make uninstall只移除刚才安装的东西。Makefile 中的默认值定义在 Makefile:PREFIX ?= $(HOME)/.local、BINDIR ?= $(PREFIX)/bin、桌面入口模板取自packaging/disktree.desktop.in,图标取自assets/disktree.svg。

Arch(包括 Omarchy)用户可以直接用 AUR:disktree包从源码构建每个 release,disktree-bin则安装 release 二进制:

yay -S disktree-bin

运行前提:需要 Rust 1.97 或更新版本,以及 GPUI 能驱动(Vulkan)的 GPU 的 Wayland 或 X11 会话。发行版通常打包较旧的 Rust,可用 rustup 安装最新版。仓库在rust-toolchain.toml中固定了 1.97,因此使用 rustup 时,即使rustup default指向更旧版本,首次构建也会自动拉取正确的工具链。

macOS

下载disktree-*-aarch64-macos.zip(Intel Mac 选x86_64-macos),解压后把disktree.app拖入 Applications。需要 macOS 11 或更新版本。

未签名、未公证的 release 会被 Gatekeeper 拦截:macOS 会提示它"已损坏,无法打开"或"无法验证"。应用本身没问题,是浏览器给下载文件打了隔离标记。清除一次标记即可:

xattr -dr com.apple.quarantine /Applications/disktree.app

(或者先打开一次,然后在 系统设置 › 隐私与安全性 里选择仍要打开。)

也可以自行构建,需要 Rust 1.97 或更新版本,以及 Xcode 或它的 Command Line Tools。macOS 不自带 Rust,用 rustup 安装:

make install # ~/Applications/disktree.app,以及 ~/.local/bin/disktree make uninstall

注意 macOS 分支的 Makefile 逻辑与 Linux 不同:它把disktree.app装入~/Applications(可用APPS变量更改),并在BINDIR里创建一个运行该应用二进制的disktree命令,这样 Spotlight 和终端都能找到它。

要看到全部内容,请在 系统设置 › 隐私与安全性 中给 disktree 授予完全磁盘访问权限(缺失时面板会提供按钮),然后重新打开。没有该权限,macOS 会隐藏邮件、信息、Safari、其他应用的数据和废纸篓,disktree 会把它们计为不可读。如果从终端启动,那么是终端本身需要该权限。macOS 还会分别询问一次桌面、文稿和下载。

macOS 上与 Linux 的不同之处:

  • 可用空间是df报告的数值。Finder 的数字更大:它把可清除空间(macOS 会自行清理的缓存和本地快照)也算进去了。
  • 克隆文件(APFS 在副本间共享块,Finder 的"复制副本"就是这样)各自被全额计数,因此总量可能超过删除它们实际释放的空间。
  • Time Machine 本地快照不是文件、不会出现;它们属于扫描结果与磁盘已用空间之间的差额。
  • 云端专属文件夹(iCloud Drive、Dropbox 等已驱逐到服务器的内容)不会被打开,因此扫描永远不会触发下载。

要为他人签名并公证构建,只要钥匙串里有 Developer ID 证书、并且已用xcrun notarytool store-credentials保存凭据:

NOTARY_PROFILE=<profile> cargo xtask bundle \ --sign "Developer ID Application: Name (TEAMID)" --notarize

Windows

在 Windows 10 或 11 上,从同一 release 下载disktree-*-x86_64-windows.zip(ARM 选aarch64-windows),解压到任意位置后运行disktree.exe。或者用 Rust 1.97 或更新版本(rustup)+ MSVC 工具链(Visual Studio Build Tools,含 C++ 工作负载)构建:

git clone https://gitcode.com/gh_mirrors/di/disktree cd disktree cargo build --release # target\release\disktree.exe

Windows 下的行为差异见下文"Windows 上的行为差异"一节。顺带一提,main.rs设置了#![windows_subsystem = "windows"](main.rs),因此从资源管理器或开始菜单打开时不会弹出控制台窗口;而从终端启动时,console::attach 会借用来时的父终端,让--help和报错仍然能到达终端。

基本使用

disktree # 扫描主目录 disktree --disk # 扫描它所在的整个磁盘 disktree ~/src # 或任意目录 disktree --help # 选项:表观大小、跟随链接、跳过隐藏项……

命令行参数在 main.rs 中定义,完整清单如下:

选项作用
PATH要扫描的目录(默认:主目录)
-a,--apparent-size度量表观长度而非分配的块
-l,--follow-links跟随符号链接
-H,--no-hidden跳过点文件与点目录
-D,--disk扫描主目录所在的整个磁盘
-X,--cross-filesystems也度量 PATH 之下挂载的其他磁盘、网络共享与伪文件系统(默认关闭)
-d,--depth N一次绘制多少层(1–6,默认 3)
--metric files按文件数而非字节数排序
-h,--help显示帮助

--disk与显式PATH不能同时给出;--disk通过 space::volume_root_for 解析主目录所在卷的根。扫描选项的默认值来自 scan.rs 中ScanOptions::default():不度量表观大小、不跟随链接、包含隐藏项、单文件系统、去重硬链接、按字节排序。

屏幕布局

  • 顶部:从/开始的面包屑路径,然后是度量维度——大小、文件数或时间、隐藏文件、表观大小,以及当前绘制的深度。树中当前所在目录会变成面包屑,其 ▾ 列出同级目录(最大的在前,附占比与大小),可横向跳转(箭头和回车同样有效)。扫描根之上更高层级的面包屑会更暗,点击它会把扫描范围扩大到那里(见下文"整个磁盘")。
  • 其下:扫描总量、输入过滤条件时的过滤器,以及图例。
  • 马赛克:颜色表示数据的种类——代码、Agent 临时文件、工具链、同步文件、git、媒体、文档、缓存——单一柔和的色阶,越深越浅。对角线斜线阴影表示可以回收的空间(缓存、同步历史、包仓库、构建产物),与颜色无关。顶层目录带有自己的色条和名称带;更深的打开目录有细小的标签行。在时间模式下,颜色改为最近写入时间,从本周到更早。
  • 面板:当前选择项(其大小放大显示、占扫描的份额、文件数、最近写入时间,若是代码检出则显示 git 信息——改动、stash、未推送提交);值得一看(最可能可以删除的大件);已标记项;以及磁盘空间(当前与标记之后的空闲空间,以及通往审查屏幕的入口)。拖动面板左边缘可调宽,双击边缘复位。

有一种颜色被刻意保留:琥珀色标记选择项、主操作,以及可以回收的东西。

数据分类与可回收性判断的源码实现

颜色的来源是目录名与少数"形状"(裸 git 仓库、Cargo.toml旁的target),具体规则见 classify.rs。其中定义了 8 种图例类别(Category::LEGEND,classify.rs):Code、Agent scratch、Toolchains、Synced、Git、Media、Documents、Cache,另有兜底的Other。可回收性则由Reclaim枚举描述,共 9 种理由:Regenerable(可再生缓存)、SyncHistory、PackageStore、BuildOutput、Reinstallable、SandboxLayers、Snapshots、Trash、Temporary,这些理由也正是Worth a look列表里显示的措辞。

分类算法是自顶向下递归的:

  • 一个节点自己的名字优先,否则继承父级类别;文件一律继承(kind_of)。
  • 可回收性同样向下继承,因此缓存目录下的所有内容都会带斜线阴影(classify_below)。
  • 名字未知的顶层目录,取它最大可识别子目录的类别:例如~/world大部分是.git,所以它是 Git(dominant_child_category)。
  • 裸 git 仓库按形状识别:一个目录同时含objects、refs、HEAD即视为 git 存储(is_git_store),无论它叫什么名字。
  • 单独一个名字太常见、不足以信任时,会做兄弟检查:target只有与Cargo.toml同目录才是 BuildOutput;node_modules只有与package.json同在才算 Reinstallable;layers/snapshots只有父级是 Agent scratch 才可回收(reclaim_of)。

分类在性能上也有讲究:目录名的小写化尽量在 32 字节的栈缓冲区里完成,避免为数十万个目录每次分配字符串(lowered);并行化只发生在树的上层(PARALLEL_LEVELS以内),深层则逐个决定与下钻。仓库中还带有大量回归测试,例如保证"第二块盘上的 Steam 库按媒体而非其 temp 目录分类"(classify.rs)、"未知顶层目录取其最大已知子项"、"缓存可回收性一路向下"等。

标记(Marking)

空格、X、回车和方向键在鼠标最后移动过时作用于鼠标下的瓦片,在你用过方向键或 Tab 之后作用于键盘选中项。

被标记的瓦片会变成危险色,它内部的一切也如此:删除一个目录会连同其内容一起删除。标记一个目录会吸收它内部已有的标记;已标记目录内部的东西不能再单独标记或保留,其面板会转而提供"取消标记该目录"。标记是可逆的——再按一次即可——而且节省的空间永远不会被重复计算。

缩放与进入

滚动朝指针方向放大:滚轮会一直放大到指针下的目录填满视野,下一格就进入其中——一个连续动作,目录内容随之长出来。反方向滚动退出。Enter 在任意深度进入选中目录,Backspace 或 Escape 上退一层。Size / Files / Age 开关旁边的<和>在访问过的目录间后退/前进,alt ←alt →(macOS 上还有⌘[⌘])和鼠标侧键同样有效。+和-只放大不进入,0复位。

删除(Removing)

c(或Review…)打开所有已标记项的列表。在那里取消任何标记,然后选择:

  • 移到回收站——有回收站可用时的默认项。macOS 上是系统废纸篓,与 Finder 的移动相同(在其他磁盘上,则是那块磁盘自己的废纸篓;网络共享通常没有)。其他平台依次尝试trash-put(来自 trash-cli)、gio trash、内置的 XDG 回收站。在清空回收站之前可以恢复,所以它直接提交。
  • 永久删除——rm -rf语义。它总是先询问,弹窗会写明删除什么、能拿回多少空间。

完成后,disktree 会重新扫描,让屏幕上的数字与磁盘一致,并显示实际获得的可用空间。

删除机制的源码级设计

删除逻辑集中在 removal.rs,注释明确了三件事按此优先级:绝不删除用户没指过的东西、绝不跨入另一个文件系统、永远能说清发生了什么。

  • 两种模式:RemovalMode::Permanent实现rm -rf --one-file-system语义,但不调用 shell,路径永远不会进入 shell、任何文件名都不会被误读为选项;RemovalMode::Trash移入桌面回收站(removal.rs)。
  • 回收站后端检测:macOS 永远用系统废纸篓(经 NSFileManager,与 Finder 同一动作);Windows 永远用 Recycle Bin;其他平台依次探测trash-put→gio trash→ 内置 XDG 实现(detect_trash_backend)。后端在 UI 中具名展示,用户清楚实际会发生什么。调用外部工具时统一在路径前传--分隔符,名为-rf的文件只会是文件(run_tool,并有测试验证 argv 顺序)。
  • 执行前的计划(plan):所有标记路径先经过 plan:扫描根之外、系统树、挂载点、主目录等一律进入blocked列表;嵌套路径会被折叠为最外层目标,被覆盖的内部路径单列covered供审查屏幕解释。挂载表缓存 2 秒刷新一次,且读取绝不阻塞 UI 线程(审查屏幕每帧都在规划)。
  • 永久删除的落地方式:Unix 上用rustix的openat/unlinkat逐级打开,从扫描根到目标每一级都带O_NOFOLLOW——若某级在扫描后被替换成指向别处的符号链接,删除会直接拒绝("changed since the scan"),而不是跟随它(open_parent)。目录遍历中每个子目录都与顶层做设备/挂载 ID 比对,跨文件系统立即停止(remove_contents)。Windows 分支则把目录链接(junction)按目录删除、只去掉链接本身。
  • XDG 回收站:内置实现写标准布局——文件移入Trash/files,同时写入Trash/info/<名>.trashinfo,记录百分号编码的原始路径与删除时间(trash_into),同名冲突自动追加.1、.2后缀。

removal.rs 末尾附带大量测试:计划只保留最外层目标、根与主目录被拒绝、挂载点被识别、符号链接只解除不跟随、Win32 会误读的名字(Users.、NUL、COM1、file:stream等)被拦截、XDG 回收站的移动与.trashinfo可恢复性、删除运行会逐项报告并汇总Done事件等。

快捷键一览

键作用
space/x标记或取消标记指针所指的瓦片
ctrl-click(macOS 为⌘-click)标记而不移动选择项
enter在任意深度打开该目录
⌫/esc上退一层目录
alt ←alt →在访问历史中后退/前进
←↑↓→在本层瓦片间移动
tab下一个最大的同级
滚动朝某目录放大,然后进入它
shift-滚动平移放大的视图
[]一次少画/多画几层
-=0放大、缩小、复位视图
ctrl =ctrl -ctrl 0(macOS 为⌘)界面缩放
/按名称过滤:只有匹配项保留颜色;enter只显示它们,esc清除
c审查已标记列表
t按大小或文件数排序
d磁盘用量或表观大小
i包含或跳过隐藏项
r重新扫描
esc(扫描中)停止扫描
v扫描另一个已挂载卷
ctrl o(macOS 为⌘O)选择另一个目录扫描
g整个磁盘
p显示或隐藏选择行
o在 Finder、文件资源管理器或文件管理器中显示它
?列出所有键
q退出

macOS 上菜单栏还有 ⌘⇧R(在 Finder 中显示选择项)、⌘R(重新扫描)、⌘[ 与 ⌘](后退/前进),以及 ⌘Q、⌘H、⌘W(关闭窗口即退出);其他 ⌘ 组合留给系统。Linux 和 Windows 上相同功能用 ctrl,另外 F5 也可重新扫描。

在审查屏幕上:m移到回收站、p永久删除、!取消全部标记、enter提交、esc返回。也可以把列表交给别人处理:s把它存为文本文件(每行一个路径),a复制一段给编码 Agent 的提示词:按你挑选的内容释放空间,逐个检查路径(存在于别处、git 未保存的工作、工具自己的清理命令),不碰其他任何东西。含换行符的名字会被排除在列表之外并在提示词中转义,因此不可能被误当成另一条路径。

它度量什么

  • 默认度量磁盘用量:st_blocks × 512,即du报告的数、也是删除文件后真正能拿回的空间。表观大小(ls -l显示的值)一键即可切换。
  • 硬链接只算一次。同一 inode 的两个名字只花一个文件的开销。
  • 隐藏项包含在内,因为~/.cache常常是主目录里最大的东西。符号链接不被跟随。

扫描遵循 dust 中实现:每个根一个rayon::scope(递归深度与树深无关,恒为 O(1));每个目录一个原子完成计数器,保证目录在其最后一个子目录到达前不会被构建;最后一遍自底向上聚合大小并去重硬链接。在此之上又加了两点:UI 可无锁轮询的实时进度计数(ScanProgress,纯 relaxed 原子操作),以及协作式取消——重新扫描时可以放弃对大型主目录的遍历而不必排队等它。宽化扫描还能通过Known子树复用已测得的树(详见下文"整个磁盘")。

切换卷

按v(或点击侧边面板磁盘名旁的Volumes)打开卷选择器。它列出系统上挂载的每个候选卷及其可用空间,最满的排最前,并过滤掉伪文件系统与重复的 btrfs/APFS 挂载点。选择任意条目即把扫描根直接重置为该卷。

整个磁盘

点击面包屑里的/(或扫描根之上的任意目录)、按g、运行disktree --disk,或用启动器的Scan the whole disk动作。g和--disk扫描主目录所在的磁盘——Omarchy 和 macOS 上都是/。macOS 上 Data 卷的第二个挂载点/System/Volumes/Data会被跳过:它是/Users、/Applications等目录的另一个名字。

宽化是记忆化的:已经测过的树会被交给更宽的遍历并在到达处复用,所以从~扩到/只读取~之外的内容(在这台机器上只需几秒而非完整重扫)。当前视图在更宽的树就绪前保持显示,就绪后以你之前所在目录为选中项打开。退回去只是导航。

一次扫描停留在单个卷上,而且卷指的是挂载源而非设备号:btrfs 给每个子卷自己的st_dev,因此/home、/var/log、/var/cache/pacman/pkg都会被包含,而/proc、/sys、/run、tmpfs、/boot、其他磁盘、网络共享和 automount 点都被排除(按路径检查,所以自动挂载的 NAS 绝不会被挂载来测量)。快照子卷同样排除:它们的文件与在线文件共享块,统计它们等于把磁盘算了两遍。-X则跨入一切。

没有 root 权限时,部分系统目录无法读取;它们会在顶栏按"不可读"计数,而不是被猜测估值。

Windows 上的行为差异

同一个程序,以下是 Windows 对各问题的回答:

  • 磁盘用量是 NTFS 为每个文件报告的分配量:整簇计,压缩或稀疏文件少计,小到能住进文件记录的文件不计。它随目录列表本身一起到达(FileIdExtdDirectoryInfo),所以不比遍历多花成本。NTFS 上硬链接只算一次。
  • 整个磁盘是配置文件所在的驱动器,通常是C:\。其他卷挂载的文件夹是链接(类似 junction),不会被进入,因此扫描停留在一个卷上;-l跟随链接,包括已挂载的文件夹。
  • 以管理员运行时,整盘改为直接读 NTFS 主文件表(MFT)而非遍历,就像 WizTree 那样:对表做一次大块读取。在一个 400 万文件的C:\上,这大约耗时 3.4 秒,对照 WizTree 的 11.2 秒和遍历的约 20 秒。它还能看到遍历被拒绝的东西,比如 System Volume Information。它只用于整块 NTFS 盘——文件夹扫描仍要付出整张表的成本——且不与-l同用(表的链接不被跟随)。disktree 在自身删除后会刷新卷,让重扫立即可见;其他程序几秒前的改动则可能尚未显示。未以管理员启动时,disktree 照常遍历;在整块 NTFS 盘(未加-l)上,或 Windows 拒绝遍历某个文件夹时,侧边面板会提供Restart as Administrator,通过 UAC 提示以相同文件夹与选项重开;宽化扫描期间则是正在扫描的更宽文件夹。
  • 移到回收站即 Recycle Bin,经 shell 文件操作完成,它在无法回收任何东西而将销毁时会先询问。
  • 除下述规则外被拒绝的:Windows、Program Files 和 ProgramData;Windows 放在驱动器顶部的东西(System Volume Information、Recovery、Boot,以及设置可关闭的分页与休眠文件);任何承载你配置文件的文件夹(如C:\Users);以及配置文件文件夹中的每个配置文件(含Public和Default)——因为提权的 disktree 可能以另一个账户运行并能触达它们全部。配置文件内部的东西仍可删除,如同你自己账户下那样。名字比较不区分大小写,如同 Windows 的比较方式。
  • 隐藏指以点开头的名字或隐藏属性,因此-H会像资源管理器那样去掉AppData。
  • 主题跟随 Windows 的浅色/深色设置,因为没有 Omarchy 主题可跟随。macOS、GNOME、KDE 上同样如此。

Windows 的这些规则在源码中都能找到对应:系统树清单(SystemRoot、ProgramFiles、ProgramData、pagefile.sys、hiberfil.sys等)在 removal.rs,配置文件目录保护在 removal.rs,Win32 会误读的名字(尾随点/空格、NUL、COM1–COM8、LPT9、冒号流等)在 misread_by_win32,且均有对应测试。

它拒绝做什么

删除规则全部集中在 removal.rs,每条都有测试:

  • 只有扫描根之下的路径才能被删除;
  • 文件系统根、扫描根和你的主目录都被拒绝;
  • 挂载点被拒绝,内部含有挂载点的目录同样被拒绝——删除它会伸入另一个文件系统;永久删除还在挂载边界停下,而不是深入其中(未挂载的 btrfs 子卷会随其目录一起删除,如扫描所示);
  • 承载主目录或系统树的目录被拒绝(macOS 上/Users与/同卷,/opt承载/opt/homebrew);
  • 系统树(/usr、/etc、/boot、/var/lib、/nix/store、/gnu/store、macOS 与 Linux 上 Homebrew 的前缀等)即使在权限允许时也被拒绝:这些目录归软件包所有,pacman、paccache 或journalctl --vacuum才是正确的工具;
  • 符号链接只解除、绝不跟随;
  • 任何东西都不经过 shell——名为-rf的文件只是一个文件;
  • 选中检出目录时绝不运行它命名的程序:git 以 fsmonitor、hooks 和 pager 全关的方式被询问,定义了自有 filter driver 的检出目录根本不会被询问状态(显示"改动未知")。

非 Windows 平台的系统树清单共 24 项,定义于 SYSTEM_TREES。防护比较对"拼写"做了归一化:macOS 会把/System/Volumes/Data/Users/x折叠为/users/x并忽略大小写,Windows 亦然——被移除的始终是标记时的原路径,归一化只用于判断。

在 Hyprland 上

Hyprland 会平铺新窗口,所以 disktree 会开进被分配到的瓦片里。它是为宽敞的窗口设计的;请让它浮动,或给它一条规则。窗口类名为disktree(这也是 main.rs 中设置的 Wayland app id,左不设置则类名为空、规则永不匹配):

windowrule = float, class:^(disktree)$ windowrule = size 1400 900, class:^(disktree)$

开发

make run # release 构建,扫描 $HOME make lint # rustfmt --check,然后 clippy 把每条警告当错误 make test # 扫描、布局与删除测试,外加窗口测试台测试 make ci # lint,然后 test

lint 门槛是有意从严的:clippy::all和clippy::pedantic都是错误,每条例外都带着理由写在Cargo.toml里。窗口测试台测试会绘制真实帧、按下真实按键——其中一条标记一个目录、确认删除、并检查文件确实没了而邻居还在。

路径里面有什么
crates/disktree-core扫描、树、方形化布局、可用空间与删除——无 UI
crates/disktree-app/src/state.rs界面能做的每个动作,以及按键映射
crates/disktree-app/src/views.rs各屏幕
crates/disktree-app/src/treemap_view.rs绘制马赛克及其标签
crates/disktree-app/src/ui.rs间距、字号与尺寸刻度,全部用rem
crates/disktree-app/src/tests.rs透过真实窗口的端到端测试
packaging/、assets/、Makefile桌面入口、图标与安装

界面遵循 GPUI Kit 设计指南:所有尺寸位于同一个rem刻度上,因此界面缩放能保持比例;主色只留给 Enter 做的事;应用唯一会问的问题,就是那个无法挽回的问题。

许可

MIT。

【免费下载链接】disktree

A treemap for finding and removing what fills your disk, for Omarchy. Rust + GPUI.

项目地址:https://gitcode.com/gh_mirrors/di/disktree
点击查看免费下载

相关推荐

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

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

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

立即咨询