操作文档
从解压到恢复任务栏:安装与启动、四个模块的日常操作、配置文件与故障排查。对应 DCX v0.1.2,Windows 11 x64。
01安装与启动#
DCX 是便携应用:从 官网下载页 或 GitHub Releases 获取压缩包,解压、运行,没有安装器,也不需要写入系统目录。设置与索引全部保存在 %LOCALAPPDATA%\dcx\。
请解压整个 DCX 文件夹,不要只取出 exe。宿主按自身所在目录查找四个 exe、dcx_engine.dll 与 wh_injector.exe,缺一个就会出现「已停止」或注入失败。
启动方式
| 方式 | 行为 | 适用场景 |
|---|---|---|
start-dcx.bat | 只留托盘,不弹设置窗口 | 日常使用、开机自启 |
dcx-host.exe | 默认带设置窗口启动 | 第一次配置 |
dcx-host.exe --no-settings | 不带设置窗口(自启项就是这条) | 登录后静默运行 |
分发包内容
| 文件 | 作用 |
|---|---|
dcx-host.exe | 平台:托盘、注入看门狗、应用生命周期、全局热键、唯一设置中心 |
dcx-box.exe | 桌面收纳盒(独立进程) |
dcx-search.exe | 文件检索(默认关闭,热键按需拉起) |
dcx-island.exe | 桌面信息岛(默认关闭,设置中心开启) |
dcx_engine.dll | 注入 Explorer 的任务栏主题引擎 |
wh_injector.exe | 外部注入器,宿主启动时调用 |
stop-dcx.bat / stop-dcx-all.bat | 停止全部 DCX 进程;后者用于替换二进制前释放占用 |
首次运行
首次运行可能被 SmartScreen 提示,因为构建与发布包都没有签名。选择「更多信息 → 仍要运行」即可。请只从官网下载页或本仓库的 Releases 下载,并用 SHA256SUMS.txt 校验:
Get-FileHash .\DCX-v0.1.2-win64.zip -Algorithm SHA256
系统要求是 Windows 11 x64。32 位进程不会加载 64 位引擎,但任务栏本身是 64 位 Explorer,不受影响。
02托盘与设置中心#
宿主启动后会在通知区放一个图标。左键单击打开设置窗口,右键才弹菜单(设置 / 桌面整理 / 退出并恢复任务栏 / 退出)。设置窗口已经打开时,再次左键只会把它提到前台,不会开第二个。
设置中心结构
左侧导航固定五项,右侧是页标题与卡片。所有改动改完即生效:防抖 220 ms 后原子写入,引擎约 1 秒内热重载,没有「保存」按钮。
| 页面 | 内容 |
|---|---|
| 任务栏样式 | 外观(形状、缩放、间距、悬停)、尺寸、行为(自动隐藏、开机自启) |
| 桌面整理 | 收纳盒启停与热键、收纳库目录、分类规则;顶部是「独立应用」状态清单 |
| 文件检索 | 常驻开关、热键、检索范围、内容检索策略 |
| 桌面信息岛 | 唯一启停开关、时钟与性能、任务与剪贴板、通知渠道、出站凭据、能力边界 |
| 关于 | 运行状态、平台行为、恢复并退出 |
状态行
窗口底部如实显示三种状态:
- 已写入 · 引擎约 1 秒内重载 —— 引擎已注入,改动会生效。
- 已写入配置 · 引擎未注入 —— 文件写成功,但任务栏还没被接管;点「重新应用」补注入。
- 失败原因 —— 写入失败或注入失败,最常见的是宿主目录里没有
wh_injector.exe。
关闭窗口 ≠ 退出程序
点右上角 × 只关闭设置窗口:宿主、托盘、看门狗与已注入的引擎都还在,任务栏保持当前外观。要真正退出并恢复任务栏,用托盘菜单的「退出并恢复任务栏」,或设置 → 关于 → 退出。
设置窗口里的恢复按钮是行内二次确认:点一次变红为「确认恢复」,5 秒内再点才执行。执行时会结束并重启 explorer.exe,这是唯一能让任务栏外观回到系统默认的方式。
03任务栏主题#
dcx_engine.dll 注入 explorer.exe,把主题规则写进任务栏 XAML。设置中心写 settings.toml,引擎每秒轮询修改时间并重建规则——不需要重启 Explorer。
可调项
| 设置 | 取值 | 效果 |
|---|---|---|
| 形状 | 胶囊 / 卡片 | 胶囊两端大圆角;卡片为小圆角矩形。切换即时生效 |
| 图标缩放 | 50–125% | 只改渲染缩放,不隐含任务栏高度 |
| 图标间距 | −6…+6 px | 每个任务按钮的左右外边距;负数收紧 |
| 悬停 | Background / Dock | 只高亮,或按距离放大并推开相邻图标 |
| 任务栏高度 | 30–44 DIP | 整条任务栏(dock + 托盘)同步伸缩,不做裁剪 |
| 自动隐藏 | 开 / 关 | 走 shell 自身的 SHAppBarMessage,不是 settings.toml 键 |
为什么改了没反应
- 看设置窗口底部状态行:如果是「引擎未注入」,点「重新应用」。它会先重写
settings.toml(内容没变也会刷新修改时间),再跑一次注入扫描。 - 确认
wh_injector.exe与dcx_engine.dll都在dcx-host.exe同目录;开发环境可用DCX_INJECTOR/DCX_ENGINE_DLL指到别处。 - Explorer 重启后主题会丢,这是正常的——宿主看门狗会在约 5 秒内重新注入。
删除或重置 settings.toml 不会把任务栏恢复成系统默认:缺省值本身也是一套主题参数。要恢复外观只能用「退出并恢复任务栏」。
引擎只处理主任务栏。多任务栏与第三方任务栏壳没有适配;Windows 大版本更新后,XAML 视觉树可能变化,需要重新核对元素路径。
04桌面收纳盒#
收纳是物理移动文件,不是隐藏图标。桌面仍由 Explorer 原生管理;文件被收进盒子时,它从桌面移到收纳库(默认 文档\dcx收纳),桌面图标随之消失,文件本身不删除。
打开与收起
- 全局热键 Alt + D 唤出 / 收起。热键可在「设置 → 桌面整理」修改或关闭。
- 任务栏上的收纳盒按钮是独立窗口,点一下打开弹层。
- 底部的「收纳」按钮:单击复制收纳库路径,双击打开收纳库文件夹。
收纳与放回
- 把桌面文件拖进盒子窗口,或拖到信息岛胶囊上,文件会被移动到收纳库。
- 在盒子里把文件拖回桌面,即恢复到桌面根目录。
- 整个过程不修改文件属性,也不绘制桌面层;没有「幽灵图标」需要额外清理。
分类
分类是收纳库内的虚拟元数据,不改变文件内容:
- 扩展名规则自动归类为文档、图片、压缩包、媒体、应用、其他。
- 手动拖拽或右键菜单可以覆盖自动分类,结果写入
organizer.toml的overrides。 - 支持列表 / 网格视图、排序、搜索、文件夹展开、拖放、右键菜单、新建文件夹、重命名与回收站删除。
更换收纳库目录
「设置 → 桌面整理 → 收纳库目录 → 更改…」。确认后会迁移已有文件并重建根目录,手动分类记录会跟随迁移。收纳库是普通目录,可以放到其他磁盘。
收纳库里的文件就是你的原文件。删除收纳库目录等同于删除这些文件;「回收站删除」才会进回收站。
05文件检索#
独立进程 dcx-search.exe,默认关闭:不随平台自启、不常驻、不预建索引。按 Alt + S 时宿主才拉起它,索引在后台建立,结果边建边出;关闭窗口进程即退出。
三种状态
| 状态 | 进程 | 热键 |
|---|---|---|
| 默认(休眠) | 无 | 仍然有效,按下才启动 |
| 按需 | 窗口打开期间存在,索引在后台建 | 唤起 / 收起 |
| 常驻 | 在设置页开启「启用文件检索(常驻)」后随平台启动 | 只前置窗口 |
界面
- 路径:桌面、此电脑、各固定卷;「自定义路径」需要写进
search.toml的scope.custom_roots,重启后出现在下拉里。 - 模式:文件名(内存索引)或内容(在候选集上流式扫描)。切换不会重建索引。
- 分类:文件、图片、压缩包、应用程序、视频、音频、其他,与模式正交。
- 结果:名称、路径、大小、修改时间;名称或路径被截断时,悬停显示完整文本。
查询语法
| 写法 | 含义 |
|---|---|
*.docx | * 匹配任意长度,? 匹配单个字符 |
模板 方案 | 空格表示 AND,两个词都要命中 |
ext:pdf 合同 | 限定扩展名 |
path:项目 预算 | 限定路径中包含的片段 |
regex:^2026-\d{2} | 按正则匹配(大小写规则随输入变化) |
内容检索
候选集由名称索引先按作用域、分类、扩展名与大小筛出,再逐个文件流式扫描。默认单文件上限 2 MiB、最多 2000 条结果、8 秒时间预算;超限结果会标记为部分结果,可以按 Esc 立即取消。二进制与大文件默认跳过,UTF-8 / UTF-16 BOM / GB18030 会按配置尝试。
快捷键
| 按键 | 动作 |
|---|---|
| Alt + S | 唤起 / 收起检索窗口(全局) |
| Esc | 内容检索中先取消,再按隐藏窗口 |
| Enter | 打开选中项 |
| Ctrl + Enter | 打开所在文件夹并选中文件 |
| Ctrl + F | 聚焦关键词输入框并全选 |
| Ctrl + 1 / 2 | 切换 文件名 / 内容 模式 |
| Ctrl + D | 展开路径下拉 |
| Ctrl + C | 复制选中项完整路径 |
| ↑ ↓ PgUp PgDn | 移动选中项 |
06桌面信息岛#
独立进程 dcx-island.exe,默认关闭。在「设置 → 桌面信息岛」打开主开关后,屏幕顶部居中显示常驻胶囊;它不占任务栏槽位,也不依赖引擎的槽位预留协议。
胶囊与面板是同一张卡
- 紧凑态显示时间 / 星期 / 日期、性能指标与未读角标;播放媒体且没有提醒、没有活跃卡片时显示曲名。
- 点击胶囊或按 Alt + I 展开。胶囊那一行就是面板的标题栏,展开后点它不会收起。
- 收起用右上角 ✕ 或 Esc;窗口尺寸随同一段缓动一起变化。
六个页签
| 页签 | 内容 |
|---|---|
| 任务 | 待办、到点提醒、自动结转与 Markdown 归档 |
| 剪贴板 | 图文历史、搜索、收藏、备注、回写、存入收纳盒 |
| 消息 | 渠道接入状态 + 统一收件箱;全部已读 / 清空 |
| 性能 | CPU / 内存 / 网络 / 磁盘采样;桌面待整理与收纳库计数 |
| 动态 | 脚本推送的卡片(本地推送 API) |
| 搜索 | ≥2 字符同时匹配开始菜单应用与文件名 |
提醒:重复与间隔是两个维度
重复决定哪几天存在(不重复 / 每天 / 工作日 / 每周),间隔决定一天里提醒几次(单次 / 15 分 / 30 分 / 1 时 / 2 时)。时间框接受 09:00 或 09:00-18:00;写了区间就表示起止。
喝水 工作日 09:00-18:00 每30分这是一条记录,一天 19 次提醒;睡过去的时段只补一次,不会醒来刷屏。
到点时铃铛摆动、标题轻摆、accent 底色脉冲,配一声双句提示音,持续 12 秒,不自动弹出面板。全屏时可以暂缓,退出全屏后按过期规则补发。
通知渠道
| 渠道 | 接入方式 | 说明 |
|---|---|---|
| 微信 / 企业微信 | 任务栏关注信号(SHELLHOOK) | 不读聊天正文 |
| WinRT 通知监听,按 AUMID 过滤 | 只读通知 | |
| 邮箱 | IMAP | 只同步未读邮件头 |
| 系统通知 | WinRT 通知中心 | 默认关闭;开启后全部应用 Toast 汇总,只读不落盘 |
出站只有两条:企业微信群机器人 webhook 与 SMTP。QQ / 微信个人号没有官方出站接口,因此不支持发送。
剪贴板、媒体与收纳联动
- 剪贴板保存图文历史,可搜索、收藏、加备注、回写剪贴板,或直接「存入收纳盒」。
- 文件直接拖到胶囊上即收纳,搬运在工作线程进行,不卡窗口。
- 媒体读取系统媒体会话(GSMTC):封面、标题、艺术家与上一首 / 播放暂停 / 下一首,进度本地插值;没有会话时整行消失。
凭据与隐私
授权码、SMTP 密码、Webhook Key 只存 Windows 凭据管理器(DCX/island/<key>),不写 TOML、不写日志。剪贴板与通知内容全部本地保存。唯一的例外是推送 API 令牌:它需要被脚本一行读到,因此放在 %LOCALAPPDATA%\dcx\island_api_token.txt,只授予「往岛上推卡片」这一项能力。
07快捷键#
| 快捷键 | 动作 | 前提 |
|---|---|---|
| Alt + D | 打开 / 收起桌面收纳盒 | 宿主运行 |
| Alt + S | 打开文件检索 | 宿主运行 |
| Alt + I | 展开 / 收起桌面信息岛 | 信息岛主开关已开启 |
三个热键都由常驻的宿主监听,可以在设置中心修改或关闭。文件检索不依赖检索进程是否已启动;信息岛额外要求 island.toml 与 apps.toml 都为开启,避免一个已关闭的应用被键盘复活。
热键被其他程序占用时,注册会失败并写 box_hotkey_error.txt / search_hotkey_error.txt / island_hotkey_error.txt,设置页对应位置会提示改键。前台是管理员权限窗口或全屏独占应用时,热键可能不到达;宿主未运行时热键无效。
08配置文件#
运行时文件全部在 %LOCALAPPDATA%\dcx\。仓库里没有这些文件,只有源码与生成脚本。
| 文件 | 所有者 | 内容 |
|---|---|---|
settings.toml | 宿主 / 引擎 | 形状、缩放、间距、高度、悬停效果 |
organizer.toml | 宿主 / 收纳盒 | 分类、手动分类、收纳库路径、视图偏好 |
search.toml | 宿主 / 检索 | 热键、检索范围、排除规则、内容检索策略 |
island.toml | 宿主 / 信息岛 | 启停、时钟 / 性能、任务、剪贴板、渠道与出站 |
apps.toml | 宿主 | 各独立应用的启停状态 |
island_tasks.json / island_clipboard.json | 信息岛 | 任务与剪贴板历史(本地,不上传) |
island_api_token.txt | 信息岛 | 推送 API 的 Bearer 令牌 |
示例:settings.toml
# %LOCALAPPDATA%\dcx\settings.toml taskbar_shape = "Capsule" # Capsule | Card icon_scale = 100 # 50..125(百分比) icon_spacing = { between = 0 } # -6..6 px hover_effect = "Dock" # Background | Dock taskbar_height = 40 # 30..44 DIP ui_theme = "Light" # 只影响设置窗口本身
写入协议
五个 TOML 与两个 JSON 都是多进程读写,因此写入遵循同一套规则(实现见 dcx-win32/src/config_file.rs):
- 跨进程互斥:按文件全路径派生的命名互斥体保护整个「读—改—写」,宿主、收纳盒、检索、信息岛不会互相覆盖。
- 原子替换:先写带 PID 与序号的临时文件并落盘,再用
ReplaceFileW/MoveFileExW换入;没有「rename 失败就直接覆盖」的回退分支。 - 损坏即只读:文件存在但解析失败时,进程只使用内存默认值,并拒绝把默认值写回磁盘;修好或删除该文件后自动恢复可写。
手工改配置前先退出对应应用。互斥体只保护程序自己的「读—改—写」,你在外部改完又没有刷新,下一次保存会把内存里的旧视图写回去。
09故障排查#
| 现象 | 原因 | 处理 |
|---|---|---|
| 设置改了,任务栏没变 | 引擎未注入 | 看状态行;点「重新应用」;确认 wh_injector.exe 与 DLL 同目录 |
| 所有应用都显示「已停止」 | 分发包缺 exe 或不在同目录 | 把四个 exe 放回宿主同目录 |
| 热键没反应 | 被占用 / 宿主未运行 / 前台是管理员窗口 | 设置页改键;确认托盘图标存在;换普通窗口再试 |
| 任务栏样式错乱或消失 | Windows 版本变化、引擎异常 | 托盘「退出并恢复任务栏」,让 Explorer 重启 |
| 强杀宿主后仍有应用进程 | stop-dcx.bat 未覆盖该应用 | 用 stop-dcx-all.bat,或手动结束三个独立 exe |
| 信息岛按 Alt+I 不出来 | 主开关关闭,或两个 TOML 状态不一致 | 在设置页重新打开主开关(同时写两个文件) |
| 检索没有结果 | 索引还在建立,或排除规则命中 | 看状态栏索引计数;检查 search.toml 的 scope.exclude |
日志
| 文件 | 来源 |
|---|---|
search_trace.log / search_panic.log | 文件检索的诊断与 panic |
island.log(256 KB 轮转)/ island_panic.log | 信息岛诊断与 panic |
*_hotkey_error.txt | 热键注册失败原因 |
升级引擎
dcx_engine.dll 被 Explorer 映射时不能直接覆盖。请用发布包内的 update-engine.bat:它先移动旧文件再复制新文件。替换后可以确认产物确实带槽位协议:
grep -a "box_slot.txt" "D:/dcx-dist/dcx_engine.dll"
然后重算 SHA256SUMS.txt。注意该文件要用 LF 行尾,写成 CRLF 会让 sha256sum -c 把 \r 当成文件名的一部分。
不要对 dcx_engine.dll 调用 FreeLibrary。XAML 持有注入期间注册的对象与 8192 条元素句柄,卸载镜像会让 Explorer 跳进已释放的代码页(0xc000027b)。唯一受支持的卸载方式是结束并重启 Explorer。
10卸载与恢复#
- 恢复任务栏:托盘右键 →「退出并恢复任务栏」,或在设置 → 关于里点两次确认。它会暂停看门狗、结束 Explorer、等 shell 自启后退出宿主。
- 关闭开机自启:如果开过「开机自启」,先在设置里关掉,或删除注册表
HKCU\Software\Microsoft\Windows\CurrentVersion\Run下的DCX值。 - 删除程序目录:直接删掉解压出来的 DCX 文件夹。没有安装器,也没有卸载项。
- 清理本地数据(可选):删除
%LOCALAPPDATA%\dcx\会同时删除设置、任务、剪贴板历史与检索索引。 - 处理收纳库:
文档\dcx收纳是你自己的文件,删不删由你决定;删除不可恢复。
只删程序目录而不执行「恢复任务栏」,已注入的引擎会继续留在 Explorer 里,直到下次重启。任务栏外观不会自己变回去。