mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-06-29 01:45:54 +08:00
9453006310a80daa9c79f4b486ecca66eb3e3550
从 v5.0 cherry-pick 的开源项目基础设施改进: 新增配置文件: - .editorconfig, .gitattributes, .prettierrc, .markdownlint.json - commitlint.config.js 新增 GitHub 社区文件: - .github/dependabot.yml — 依赖自动更新 - .github/CODEOWNERS — 自动 PR 审查分配 - .github/FUNDING.yml — 开源赞助入口 新增文档: - ROADMAP.md — 路线图 - SUPPORT.md — 帮助指南 - docs/screenshots/ — 应用截图 新增 Git Hooks: - .husky/pre-commit — lint-staged 自动格式化+修复 - .husky/commit-msg — commitlint 校验 CI 强化: - 新增 Prettier 格式检查 - 新增 Vitest 覆盖率 + Codecov 上报 - 保留 v5.1 已有的 rust-cache + jsdom 全局环境 修复: - index.html 标题 v4.0 → v5.1 - PathEditDialog set-state-in-effect 改用 useRef prevOpen 守卫 - merge-preview.test.tsx no-explicit-any 修复 - 所有 TS/TSX 文件 Prettier 格式化统一 v5.1 保留特性: - @tanstack/react-virtual 虚拟滚动 - jsdom 全局测试环境 - Swatinem/rust-cache CI 加速 - 105 测试全部通过
PathEditor
Windows 系统环境变量 (PATH) 编辑器
截图
主界面
路径编辑
冲突检测
CLI 命令行
简介
PathEditor 是 Windows PATH 环境变量的可视化管理工具。支持系统变量和用户变量的增删改查、拖拽排序、一键清理无效路径、导入导出以及完整的撤销/重做。
v5.0 使用 Tauri 2.x + React 19 + TypeScript + Rust 完全重写,替代了原有的 C + IUP GUI。
架构
graph TB
subgraph 前端["React 前端"]
UI[UI 组件层<br/>AppShell / PathTable / Dialogs]
Store[状态管理<br/>Zustand Store]
Core[纯逻辑层<br/>undo-redo / path-manager / validation]
UI --> Store
UI --> Core
Store --> Core
end
subgraph CLI["CLI 命令行"]
Clap[clap 参数解析<br/>18 条命令]
Atomic[原子性保护<br/>verify_and_save]
end
subgraph IPC["Tauri IPC 桥接"]
invoke[invoke / plugin-dialog]
end
subgraph 后端["Rust core 库"]
Registry[注册表读写<br/>HKLM / HKCU]
System[系统操作<br/>权限检测 / 路径验证 / 环境变量展开]
Files[文件操作<br/>备份 / 配置 / 导入导出]
Scanner[分析引擎<br/>冲突检测 / 工具清单]
Profiles[配置管理<br/>save/load/apply/rename]
end
subgraph Windows["Windows 系统"]
Reg[(注册表<br/>SYSTEM / USER PATH)]
FS[(文件系统<br/>目录验证 / exe 扫描)]
end
UI --> invoke
invoke --> Registry
invoke --> System
invoke --> Files
invoke --> Scanner
invoke --> Profiles
Clap --> Atomic
Atomic --> Registry
Atomic --> System
Atomic --> Files
Atomic --> Scanner
Atomic --> Profiles
Registry --> Reg
System --> FS
Scanner --> FS
Files --> FS
Profiles --> FS
组件树
graph TD
App["App.tsx<br/>ErrorBoundary"]
Shell["AppShell<br/>布局编排 + 弹窗管理"]
TitleBar["TitleBar<br/>拖拽区域"]
ToolBar["ToolBar<br/>搜索 / 操作 / 分析 / 配置"]
PathTable["PathTable<br/>路径列表 + 验证 + 复选框"]
MergePreview["MergePreview<br/>系统+用户合并视图"]
StatusBar["StatusBar<br/>状态 / 权限 / 重试"]
Dialogs["弹窗层<br/>PathEdit / Import / Help / Analyze / Profile"]
App --> Shell
Shell --> TitleBar
Shell --> ToolBar
Shell --> PathTable
Shell --> MergePreview
Shell --> StatusBar
Shell --> Dialogs
操作流程
sequenceDiagram
actor U as 用户
participant UI as React UI
participant Z as Zustand Store
participant IPC as Tauri IPC
participant R as Rust 后端
participant Win as Windows
U->>UI: 点击「保存」
UI->>Z: savePaths()
Z->>IPC: invoke('backup_registry')
IPC->>R: backup_registry()
R->>Win: 读取注册表 → 写入备份文件
Z->>IPC: Promise.allSettled([save_system, save_user])
IPC->>R: save_system_paths() / save_user_paths()
R->>Win: RegSetValueEx()
Z->>IPC: invoke('broadcast_env_change')
IPC->>R: SendMessageTimeout(WM_SETTINGCHANGE)
R->>Win: 通知所有进程
Z->>UI: isModified → false, statusMessage → '保存成功'
CLI 操作流程
sequenceDiagram
actor U as 用户
participant CLI as patheditor
participant Core as Rust core 库
participant Win as Windows
U->>CLI: patheditor add "D:\Tools" --system
CLI->>Core: load_system_paths() → 旧列表
CLI->>CLI: 执行操作 (push / splice / clean)
CLI->>Core: load_system_paths() → 重新读取
alt 注册表未修改
CLI->>Core: save_system_paths(new_list)
Core->>Win: RegSetValueEx()
CLI->>Core: broadcast_env_change()
Core->>Win: SendMessageTimeout(WM_SETTINGCHANGE)
CLI-->>U: 已添加到系统 PATH
else 注册表已被其他进程修改
CLI-->>U: 错误: 注册表已被其他进程修改
end
CLI 命令行
# 安装
cargo install --path cli
# 安装后可直接使用:
patheditor --help
# 查看 PATH
patheditor list --system --json
# 冲突检测
patheditor conflicts
# 配置切换
patheditor profile save "Python开发"
patheditor profile apply "Python开发"
完整 18 条命令:patheditor --help
功能
路径管理
- 查看和编辑 系统 PATH(HKLM)和 用户 PATH(HKCU)
- 新建、编辑、删除、上移、下移路径条目
- 多选批量删除
- 实时搜索过滤
- 合并预览(系统 + 用户路径并列显示)
- 文件夹拖拽添加
路径验证
- 红色标记:路径在文件系统中不存在
- 橙色标记:路径在列表中重复出现
- 环境变量路径(含
%VAR%)悬浮展开预览
撤销/重做
- 支持 9 种操作类型,最多 50 步历史
- 新增、删除、编辑、移动、清理、清空、导入均可撤销
导入/导出
- JSON:结构化导出,含版本和时间戳
- CSV:UTF-8 BOM 编码,兼容 Excel
- TXT:纯文本,每行一个路径
安全
- 保存前自动备份注册表到
%APPDATA%/PathEditor/backups/ - PATH 长度检查(Windows 单变量上限 32767 字符)
- 非管理员自动进入只读模式
- 保存中途失败精确提示哪个注册表 hive 出错
界面
- 深色模式 / 浅色模式
- 中文 / English 界面切换
- 全局键盘快捷键
- 修改状态指示(黄点)+ 未保存退出确认
安装
从 Releases 下载最新版 PathEditor_5.0.0_x64-setup.exe 安装。
或从源码构建:
# 安装依赖
npm install
# 构建安装包
npx tauri build
要求:Windows 10+(自带 WebView2),管理员权限才能编辑系统 PATH。
开发
# 开发模式 GUI(热更新)
npx tauri dev
# 仅前端
npm run dev
# 前端测试
npm test
# Rust workspace 检查
cargo check
# CLI 构建
cargo build --release -p patheditor-cli
# 完整构建
npx tauri build
技术栈
| 层 | 技术 |
|---|---|
| 前端框架 | React 19 + TypeScript (strict) |
| UI 样式 | Tailwind CSS 4 |
| 状态管理 | Zustand |
| 国际化 | i18next |
| 桌面框架 | Tauri 2.x |
| 核心库 | Rust workspace (core + gui + cli) |
| 前端测试 | Vitest (100 个测试) |
| Rust 测试 | cargo test (57 个测试) |
| 构建 | Vite + Cargo |
| 打包 | NSIS |
项目结构
core/ # Rust 核心库(零 Tauri 依赖)
├── registry.rs # 注册表读写 + 路径清理
├── system.rs # 权限检测、路径验证、环境变量展开
├── scanner.rs # 冲突检测、工具清单
├── profiles.rs # 配置文件管理
├── backup.rs / disabled.rs # 备份、禁用状态
└── fs.rs # 文件读写、导入导出解析
gui/ # Tauri 桌面应用
└── src/commands/ # 薄包装 → 调用 core
cli/ # 命令行工具
└── src/main.rs # 18 条命令
src/ # React 前端
├── core/ # 纯逻辑 — 零框架依赖
├── store/ # Zustand 状态管理
├── components/ # UI 组件
├── hooks/ # useAppActions、useKeyboard、usePathValidation
├── i18n/ # zh-CN / en
└── config/ # default.json
tests/unit/ # 前端单元测试
docs/ # 审查文档
快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl+N |
新建路径 |
Ctrl+S |
保存 |
Ctrl+Z |
撤销 |
Ctrl+Y |
重做 |
Ctrl+F |
搜索 |
Delete |
删除选中 |
F1 |
帮助 |
贡献
欢迎提交 Issue 和 Pull Request。在开始大改动前,建议先开 Issue 讨论。
本地开发环境
- Node.js 22+
- Rust 1.95+ (stable-x86_64-pc-windows-gnu)
- MinGW-w64 (GCC 15.x 需配置
-lmcfgthread链接标志)
代码规范
- TypeScript
strict: true,零编译错误 - 所有 Rust
unsafe块必须有// SAFETY:注释 - 前端核心逻辑在
src/core/,纯函数,零依赖,可独立测试
许可证
MIT License
作者
刘航宇 — 河南理工大学人工智能协会
Description
Path Editor 是一个专为 Windows 用户设计的系统环境变量(PATH)管理工具。它基于原生 C 语言和 IUP 图形库开发,旨在替代 Windows 自带的简陋编辑界面。 相比系统自带的编辑器,Path Editor 提供了更加直观的双视图(系统/用户变量)界面、智能的路径有效性检测、自动备份机制以及便捷的拖拽操作,让环境变量的管理变得安全、高效且轻松。无论您是开发者还是系统管理员,它都是您配置开发环境的得力助手。
https://github.com/LHY0125/PathEditor
Readme
MIT
15 MiB
Languages
C
70.8%
C++
26.7%
Batchfile
1.1%
CMake
0.8%
Lua
0.6%



