# QCmd **Repository Path**: alice-wxp/qcmd ## Basic Information - **Project Name**: QCmd - **Description**: 高级控制台工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-13 - **Last Updated**: 2026-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QCmd 基于 Qt 5、MSVC 和 Windows ConPTY 的四分屏 CMD 工作台。 ## 已实现 - 固定上二下二四分屏,每个分屏支持多 Tab。 - 每个分屏标题栏的工作区路径右侧提供 `+` 菜单,可新建终端或文件资源管理器 Tab。 - 每个分屏始终至少保留一个 Tab,最后一个 Tab 不可关闭。 - Tab 可创建 CMD 终端或树形文件资源管理器。 - 可通过右上角菜单或右键 Tab,在终端与文件资源管理器之间随时切换;切换只隐藏视图,不销毁终端记录和文件树状态。 - Tab 默认使用终端当前目录名称作为标题,并随 `cd` 自动更新;通过右键 Tab 重命名后将保留用户自定义标题,并随 `.qcmd` 项目保存。 - 过长的 Tab 标题会在中间显示省略号,悬浮时可查看完整名称。 - Windows Terminal `HwndTerminal` 承载真实 ConPTY shell,使用 DirectWrite/Direct2D/Direct3D 渲染。 - ConPTY 承载真实 `cmd.exe`,支持交互输入、调整尺寸和 `Ctrl+C`。 - ConPTY 使用 UTF-8 增量解码,并支持中文输入法提交。 - 终端显示路径已迁移到 Windows Terminal 原生渲染栈,不再依赖 Qt WebEngine 或 WebChannel。 - CMD 当前目录自动同步到同一分屏中的文件资源管理器。 - 仅终端获得焦点时高亮对应分屏。 - 文件双击系统默认打开、Shell 复制、剪切、粘贴、回收站删除、重命名、属性和拖放。 - 文件树支持 `Ctrl/Shift` 多选,以及右键新建文件或文件夹。 - 文件树按需加载目录,只在展开子目录时读取该层内容;同时自动监听文件系统变化,右键“刷新”可强制重新扫描文件信息和系统图标。 - 文件树双击只打开文件或展开/收起目录,重命名仅能通过右键菜单执行。 - 快捷指令按用户分区分类:左侧纵向分区标签支持新增、重命名和删除,右侧分区内指令支持拖动排序、执行、编辑和删除,并向最后聚焦终端逐行执行。 - 执行快捷指令时,目标必须是当前前台显示且已聚焦的终端;没有聚焦终端或四个分割窗口前台均为文件资源管理器时会阻止执行并提示。 - `.qcmd` JSON 项目保存和恢复。 - 退出前记录四分屏尺寸比例,下次启动时自动恢复;视图状态以可扩展 JSON 保存在 `~/.mla/.qcmd/view`。 - “文件 > 最近打开的项目”记录最近 10 个项目,并在切换项目或退出前检查未保存更改;记录保存在 `~/.mla/.qcmd/recent.list`。 - 启动时通过 `SuperUpdaterTool/SuperUpdater.exe --check` 静默检查更新;“帮助 > 检查更新”直接显示 SuperUpdater 窗口。 - 深色扁平化界面。 - 现代开发工具风格主题:分屏标题栏、工作区状态徽标、聚焦描边和紧凑控件。 - 主窗口采用类似 VS Code 的无边框标题栏,菜单与标题栏合并;QWindowKit 负责原生拖拽、边缘缩放、Snap Layout、最小化、最大化和关闭行为。 - 主窗口、普通顶层窗口、对话框和工具窗口均拥有统一 QWindowKit 基类;消息、输入和文件选择弹窗也使用统一无边框标题栏。 - 帮助菜单提供“用户向导”,通过高亮关键 UI 和暗色蒙层引导新用户;未完成时下次启动会自动弹出,完成状态保存在 `~/.mla/.qcmd/view`。 ## 构建环境 - Windows 10 1809 或更高版本 - 已验证:Qt 5.14.2 MSVC 2017 64-bit 套件 + Visual Studio 2022 C++ 工具链 - 推荐:Qt 5.14 或更高版本的 Qt 5 MSVC 64-bit 套件 - 无边框窗口依赖已离线放置于 `src/LibQWK/`,qmake 会通过其 `QWKWidgets.pri` 自动链接 QWindowKit。 使用 Qt Creator 打开 `QCmd.pro` 后构建,或在已配置 Qt 环境的命令行运行: ```cmd qmake QCmd.pro nmake ``` 应用版本和默认更新源统一定义在 `src/common/AppConfig.h`: ```cpp #define QCMD_APP_VERSION "1.0.0" #define QCMD_UPDATE_URL "https://example.com/releases/QCmd" ``` 也可以通过运行时环境变量 `QCMD_UPDATE_URL` 覆盖公共头文件中的更新源。发布目录中需要包含 `SuperUpdaterTool/SuperUpdater.exe` 及其运行依赖。 ## 已知限制 - native 终端的历史命令 autosuggest、链接打开和复制粘贴细节仍在补齐中。 - 文件操作当前使用兼容性良好的 `SHFileOperation`;后续可迁移到 `IFileOperation`。 - “属性”入口依赖 Windows Shell,部分系统环境可能不显示属性对话框。 详细设计见 `docs/ARCHITECTURE.zh-CN.md`。 第三方组件说明见 `docs/THIRD_PARTY.md`。 ## 架构 源码已按 `app/workspace/QTerminal/explorer/commands/project/common` 模块划分。 UI、业务状态、协议解析、项目序列化和 Windows 平台 API 均已分离。