一键清空各类开发缓存及部分用户目录、应用配置的 Linux 命令行小工具
Project description
🧹 CleanSweep TUI
一键清空各类开发缓存,以及部分用户目录、应用配置的终端小工具。勾选、预览、确认,三步清空磁盘。
CleanSweep TUI 把「该删的缓存」整理成一份清单,用 TUI(终端图形界面)让你勾选 → 预览要执行的命令 → 一次性确认 → 执行。每一项删什么都清清楚楚,所见即所删,不藏黑盒。
✨ 特性
- 一眼看清要删什么 —— 选中任意一项,右侧实时显示即将执行的原始 shell 命令,没有隐藏动作。
- 安全分级,默认稳妥 —— 缓存类默认勾选(最坏只是下次构建变慢);会动用户数据 / 配置 / 系统状态的项带
!标记、默认不勾,需要你自己选中。 - 跨环境自适应 —— 没装的工具、不存在的目录会自动置灰跳过,不会因为环境缺东西就报错;同一份脚本在不同机器上都能跑。
- 一道确认闸门 —— 勾选过程随便改,真正执行前弹出确认弹窗,列全选中项并单独标出「会删数据 / 需 sudo」的项。
- 应用插件 —— 针对具体软件的清理规则(Claude、思源笔记……)写成 JSON,随包分发、在 TUI 独立区域开箱即选;想加新软件只需丢一个 JSON 文件,不用改代码。
- 可自定义 —— 通过
custom.json添加你自己想清理的路径。
[!WARNING] 这个工具会真实删除文件,其中部分项(用户目录、回收站、应用配置、系统缓存)删除后无法恢复。清理范围对应作者的使用习惯,请在勾选前看清右侧命令预览,确认每一项要删什么再执行。默认只勾选缓存类,危险项需要你主动选中——这是有意为之的安全设计。
📋 清理项一览
启动后进入 TUI 勾选界面,左侧分成上下两块:「清理项」(下表的通用项)和 「应用插件」(针对具体软件的规则,含 Claude,详见 应用插件 一节)。下表是「清理项」区,编号即列表顺序:
| # | 目标 | 性质 |
|---|---|---|
| 01 | Docker:容器 / 镜像 / volume / 构建缓存 | 缓存 |
| 02 | pnpm store | 缓存 |
| 03 | npm cache(_cacache / _logs / _npx) |
缓存 |
| 04 | Bun:全局模块缓存(~/.bun/install/cache) |
缓存 |
| 05 | Go build / module / test / fuzz 缓存 | 缓存 |
| 06 | Rust:registry(含 index)与 git 缓存(保留 ~/.cargo/bin,支持 CARGO_HOME) |
缓存 |
| 07 | SDKMAN:sdk flush + 删下载归档 archives/(支持 SDKMAN_DIR) |
缓存 |
| 08 | Gradle:~/.gradle/caches(支持 GRADLE_USER_HOME) |
缓存 |
| 09 | Maven:本地仓库 ~/.m2/repository |
缓存 |
| 10 | 清空 ~/.cache/(XDG 用户缓存,支持 XDG_CACHE_HOME) |
缓存 |
| 11 | 缩略图缓存:~/.thumbnails + ~/.cache/thumbnails |
缓存 |
| 12 | 清空 ~/Documents、~/Downloads、~/Music、~/Pictures、~/Videos 的内容(保留文件夹本身) |
用户数据 |
| 13 | 清空所有回收站:主回收站($XDG_DATA_HOME/Trash)+ 各挂载盘的 .Trash-<uid> / .Trash/<uid> + 老版兼容路径 |
用户数据 |
| 14 | 递归删除家目录 ~ 下所有 .log 日志文件(跳过 node_modules / .git) |
用户数据 |
| 15 | sudo dnf autoremove + sudo dnf clean all |
系统(需 sudo) |
| 16 | sudo apt-get autoremove + sudo apt-get clean |
系统(需 sudo) |
| 17 | 清空 /var/cache/man、/var/cache/fontconfig、/var/cache/PackageKit、/var/cache/cups |
系统(需 sudo) |
| 18 | 清空全部 systemd 日志(sudo journalctl --rotate + --vacuum-time=1s,不保留历史) |
系统(需 sudo) |
| 19 | 崩溃报告 / core dump:/var/crash、systemd-coredump |
系统(需 sudo) |
| 20 | 删除 snap 旧版本(disabled 的 revision,保留当前版本) | 系统(需 sudo) |
| 21 | flatpak 未用 runtime(flatpak uninstall --unused,用户级 + 系统级) |
系统(需 sudo) |
| 22 | 读 ~/.config/clean-sweep-tui/custom.json 中 paths 列表,删除指定路径(包括路径本身) |
用户自定义 |
「应用插件」区(Claude、思源笔记等针对具体软件的清理)单独列在界面下方,数量随规则文件变化,不在上表编号内——见 应用插件 一节。
关于这份清单的几条重要说明:
- 缺失的工具会自动跳过:检测不到(没装 Docker、没有回收站、
custom.json未配置等)的项在列表里直接置灰、无法勾选。 - 默认勾选策略:缓存类(# 01–11)默认就勾上了;标了
!的用户数据 / 系统项默认不勾,要删得自己用空格选中。应用插件同理——cache类默认勾、config类(如 Claude)默认不勾。 - # 14 只扫描家目录
~,不会动/var/log等系统日志;只删常规文件,不跟随符号链接,且跳过node_modules/.git目录(不误删项目与依赖里的日志)。 - # 15–21 需要
sudo,执行阶段会按需弹出密码提示;# 15 仅 Fedora/RHEL 系有效,# 16 仅 Debian/Ubuntu 系有效,# 20/21 需装了 snap/flatpak,其余发行版 / 未安装会置灰。/var/cache下没列出的子目录不会被动到。 - # 22 没有配置文件时置灰。
🚀 安装与使用
仅支持 Linux,需要 Python 3.10+。
方式一:从 PyPI 安装(推荐)
命令行工具用 pipx 或 uv 装到独立环境,装完直接敲 clean-sweep-tui 启动:
pipx install clean-sweep-tui # 或
uv tool install clean-sweep-tui
clean-sweep-tui
现在的 Debian/Ubuntu 因 PEP 668 会拦截
sudo pip install系统级安装,pipx / uv tool 是装 CLI 工具的正确方式。
方式二:从源码运行
需要 uv:
# 1. 克隆仓库
git clone https://github.com/LumiDesk/clean-sweep-tui.git
cd clean-sweep-tui
# 2. 同步依赖
uv sync
# 3. 启动
uv run main.py
TUI 操作
| 按键 | 作用 |
|---|---|
↑ / ↓(或 j / k) |
在当前区域内上下移动,右侧实时显示该项将要执行的命令 |
Tab / Shift+Tab |
在「清理项」与「应用插件」两个区域间切换焦点 |
空格 |
勾选 / 取消当前项 |
a |
全选 |
n |
全不选 |
c |
只选缓存类 |
回车 |
执行:弹出一次性确认,列出全部选中项并标出会删数据 / 需 sudo 的项;再按 回车 确认,esc 取消 |
q |
退出,什么都不做 |
确认后 TUI 退出,回到普通终端逐条打印并执行命令(sudo 密码也在这一步输入)。
⚙️ 自定义清理(custom.json)
想清理清单之外的路径?在 ~/.config/clean-sweep-tui/custom.json 放一份配置(支持 XDG_CONFIG_HOME):
{
"paths": [
"~/某个临时目录",
"/tmp/foo"
]
}
- 支持
~展开;不存在或危险(根目录/、家目录本身)的路径会被自动排除,整项无可删路径时置灰。 - 确认后用
rm -rf删除,路径本身一并删掉(与 # 12 只清空内容不同),请谨慎填写。
🧩 应用插件(presets)
custom.json 是「你临时列几条路径」,应用插件是「预先写好、按软件分组的规则库」:每个软件(Claude、思源笔记、各类编辑器……)的清理路径写成一个 JSON 文件,启动后自动扫描,在 TUI 左侧下方的**「应用插件」独立区域**展示,和通用清理项分开。想支持一个新软件,只要丢一个 JSON 文件,不用改代码——连 Claude 本身也是一个内置 JSON。
扫描两个目录,同 key 时用户目录覆盖内置:
| 来源 | 位置 | 说明 |
|---|---|---|
| 内置 | 随包分发的 clean_sweep_tui/presets/*.json |
项目自带的规则库(目前含 Claude、思源笔记) |
| 用户 | ~/.config/clean-sweep-tui/presets/*.json(支持 XDG_CONFIG_HOME) |
你自己加的 / 覆盖内置同 key 的规则 |
一个预设 JSON 长这样(与 custom.json 一样只支持「删路径」模型):
{
"key": "siyuan",
"name": "思源笔记(配置 + 默认工作区)",
"category": "config",
"note": "删 ~/SiYuan 默认工作区 + ~/.config/siyuan + SiYuan-Electron 用户数据;笔记请确认放在别处",
"paths": [
"~/SiYuan",
"~/.config/siyuan",
"~/.config/SiYuan-Electron"
]
}
key(必填):稳定标识,同key的用户预设会覆盖内置预设。name(必填):列表显示名。paths(必填):要rm -rf的路径,支持~展开;不存在或危险路径自动排除,全没有时整项置灰。删的是路径本身。category(可选,默认cache):cache默认勾选、无标记;user_data/config/system/custom会带!标记、默认不勾。决定默认勾选与危险提示,仅影响安全分级,不会加sudo。note(可选):一行简介。
内置规则现有两条,都是 config 类(默认不勾、带 !,需主动选中):
- Claude:删除
~/.claude与~/.claude.json(配置 / 历史 / 项目记录)。 - 思源笔记:删除整个
~/SiYuan(默认工作区)、~/.config/siyuan(思源配置)和~/.config/SiYuan-Electron(Electron 用户数据)——即「除程序本体与真实工作区外的所有配置」。
[!WARNING] 思源这条会删掉整个默认工作区
~/SiYuan。如果你的笔记就放在那里,不要勾选它;笔记放在别处时这一项才安全。工作区路径不同的话,复制内置规则到用户预设目录、改paths即可(同key自动覆盖内置)。
🛡️ 它不会做什么
- 不会动
~/.cargo/bin(保留已安装的 cargo 命令)。 - 不会删上面清单之外的任何东西,也不会替你勾选危险项。
- 不用猜每条命令长什么样:选中某项时右侧预览就是即将执行的原始命令,所见即所删。
🤝 贡献
欢迎提 Issue 和 PR。新增清理项时请注意把它归到正确的安全分级(缓存 / 用户数据 / 系统 / 配置 / 自定义),项目的开发约定见 CLAUDE.md。
📄 License
本项目以 GNU General Public License v3.0 授权发布。你可以自由使用、修改和分发本软件,但衍生作品必须同样以 GPLv3 开源。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clean_sweep_tui-0.1.3.tar.gz.
File metadata
- Download URL: clean_sweep_tui-0.1.3.tar.gz
- Upload date:
- Size: 510.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3993a15ff48bfe03295ec1feae06fcb726f578d9fd0fb9540cca23075a3ee7cc
|
|
| MD5 |
aa022c9dd9fe4dca6a562a459a84d2aa
|
|
| BLAKE2b-256 |
c4b8edb9a604b9f4fea17631ce7ed259c5ca7b8206534687d987022e231a3f77
|
File details
Details for the file clean_sweep_tui-0.1.3-py3-none-any.whl.
File metadata
- Download URL: clean_sweep_tui-0.1.3-py3-none-any.whl
- Upload date:
- Size: 39.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20d658eee11692035006bb184d9a30bdc6148bc6cfa679c20631308f3dba967e
|
|
| MD5 |
350df436afed602b21121aed98038a7b
|
|
| BLAKE2b-256 |
99c248a6c01bf11f22c9e14083971ed9ec7214764572e98c265dd7e1c3ca7bdc
|