- 桌面应用
【免费下载链接】ZoneDeck
The Ultimate Workspace Manager, Switch between work and life, seamlessly生活工作无缝切换,专业的桌面工作区管理助手
ZoneDeck 是一款面向 Windows 10+ 的开源桌面工作区管理助手,核心理念是让"生活与工作"在多个窗口、进程之间一键无缝切换。本文基于项目官方文档与 crates/core 源码,围绕首页宣称的六大特性——极速隐藏、极低占用、超多姿势、稳如磐石、现代界面、开源免费——逐一展开,带你掌握多窗口/多进程隐藏的触发方式、隐藏后的静音/暂停/冻结副作用、以及崩溃恢复等底层实现原理与实操配置。
项目概览:为什么需要"工作区切换"
ZoneDeck 的定位是"专业的桌面工作区管理助手"(见 docs/zh-tw/index.md)。在办公场景中,屏幕上往往同时开着聊天软件、视频播放器、游戏窗口与工作文档;临时离开或切换场景时,逐个最小化、静音、暂停播放既繁琐又容易遗漏。ZoneDeck 把"隐藏一批窗口"组织成一条可重复触发的工作区切换命令:按一次热键,所有绑定的窗口连同其进程副作用(静音、暂停、冻结)一起消失;再按一次,全部按原样恢复。官方文档将这一能力概括为"生活工作无缝切换"。
从仓库结构看,ZoneDeck 采用双进程架构:常驻后台的核心程序用 Rust 编写(crates/core),负责窗口枚举、热键监听、进程冻结与托盘;配置界面则是 Tauri + Svelte 的应用(apps/config),通过 IPC 协议 与核心通信。理解这个架构是后续阅读源码的基础。
极速隐藏:多种触发方式与隐藏流程
首页将"极速隐藏"列为首要特性:一键隐藏多窗口、多进程,支持键盘热键、鼠标连击、屏幕四角手势、空闲自动隐藏四种触发方式。这些触发方式与隐藏编排在源码中分别由 hotkey.rs、mouse_hook.rs、idle.rs 和 hide.rs 承担。
绑定窗口与进程:隐藏目标的确定
隐藏的对象由两类规则确定(数据结构定义在 crates/common/src/model.rs):
- 窗口规则(WindowRule):按"句柄 + 标题"锁定单个窗口,支持高级正则模式(按标题正则匹配,可决定是否纳入无标题窗口、后台窗口);
- 进程规则(ProcessRule):按可执行文件路径隐藏该程序的所有窗口,同样支持正则,并可选择只按文件名匹配。
resolve_targets(hide.rs)遍历所有规则,把命中窗口解析为隐藏目标Target:精确窗口规则会在命中时回填最新标题,句柄失效时按"进程路径 + 标题"重新找回(Reacquired),正则规则则展开为多个目标;同时它还会把当前前台窗口(若开启"同时隐藏当前活动窗口")和配置窗口纳入目标集合,最后用白名单对每个目标打上Skip标记——被白名单豁免的窗口只记账、不动可见性。相关测试见 hide.rs(如process_rule_hides_all_windows_of_same_executable)。
键盘热键:RegisterHotKey 与低级键盘钩子
ZoneDeck 预置两个热键:隐藏/显示窗口Ctrl + Q与关闭核心Win + Esc,默认值定义在 config.rs。热键文本的解析在parse_hotkey(hotkey.rs)中完成:支持Ctrl/Alt/Shift/Win修饰键与最多四个主键(MAX_KEYS = 4,hotkey.rs),识别 F1–F24、小键盘、OEM 标点键(存按键位置如OEM_1而非字面字符,界面再按当前键盘布局显示)、音量与媒体控制键——源码测试确认支持118 种按键。
普通组合通过系统的RegisterHotKey注册;录制时核心会用is_taken(hotkey.rs)试注册一次再撤销,当场标出已被其他程序占用的组合。若某个热键开启"低级键盘钩子"(WH_KEYBOARD_LL),则可以表达RegisterHotKey承载不了的两类组合:
- 多主键同按,如
Q + W,全部按住才触发; - 纯修饰键,如
Ctrl + Shift,在全部修饰键松开且期间未按过其他键时才触发。
钩子模式下的"不传递"开关还能吞掉按键的按下与抬起,避免游戏、聊天输入框误收按键。详细用法见 docs/guide/hotkeys.md。
鼠标连击与屏幕四角:低级鼠标钩子
鼠标触发由 mouse_hook.rs 承载,依赖WH_MOUSE_LL低级鼠标钩子(仅在启用鼠标按键或四角功能时才安装)。支持左键、中键、右键、侧键 1/2 五颗键,每颗可独立配置连击次数(单击/双击/三连击)与修饰键组合(如"按住 Ctrl 时中键双击")。连击判定窗口默认350 毫秒(config.rs),可配置范围 150–1000 毫秒。全新安装默认开启"鼠标中键双击隐藏"并允许再按一次恢复(config.rs)。
四角手势方面,源码中定义了角区阈值CORNER_THRESHOLD = 10像素、触发冷却CORNER_COOLDOWN_MS = 1000毫秒,以及"快速移动"的速度门槛约1.5 px/ms(mouse_hook.rs)——只有快速甩入角落才触发,避免正常操作误触;开启"角落恢复"后还可通过移入角落恢复窗口。
空闲自动隐藏:离开工位的兜底
空闲自动隐藏基于GetLastInputInfo实现(idle.rs):当键盘与鼠标无操作达到设定时长(默认5 分钟,config.rs)时自动隐藏。should_auto_hide(idle.rs)还会检查"这一轮是否已跑过隐藏",避免重复触发;可通过托盘菜单的"自动隐藏"项随时暂停/启用。
一次隐藏的完整执行:plan_hide 与 commit_hide
隐藏编排的核心是HideController(hide.rs),它把"计算"与"执行"分离:
- plan_hide(hide.rs)只计算执行计划
HidePlan:剪枝已隐藏的窗口、补齐 PID 与进程路径、对附属窗口(浮动工具栏、对话框等不随宿主SW_HIDE消失的窗口)一并纳入、按白名单过滤静音/冻结目标、并定下每个目标的恢复形态(Restore); - commit_hide(hide.rs)按严格顺序执行:先暂停媒体 → 隐藏窗口(必要时先最小化)→ 静音 → 施加效率模式 → 冻结前静置 200ms → 挂起进程(如需清空工作集则在其后执行)。
隐藏是累加的:无论用哪种方式隐藏,窗口都记入同一份清单,恢复时一并放出。恢复侧show(hide.rs)按"解冻 → 显示窗口 → 取消静音 → 撤销效率模式 → 续播"的逆序执行,并统计失效/找回/跳过数量。窗口被外部程序自行重新显示时,on_external_show(hide.rs)在 3 秒宽限期内先升级为"最小化 + 隐藏"再压一次,超出宽限期才视为真恢复并放弃跟踪。窗口恢复工具的底层对应release_windows/release_pids(hide.rs)。
极低占用:Rust 重写与常驻约 1 MB 内存
官方文档声明:v3 使用 Rust 重写,核心常驻后台的内存占用仅约 1 MB,原生实现不易被杀毒软件误报(见 docs/zh-tw/index.md 与 README.md)。从源码结构看,这一低占用有明确的工程依据:
- 核心为纯 Rust 原生程序(crates/core),直接调用 Windows API(
RegisterHotKey、SetWindowsHookExW、Shell_NotifyIconW、NtSuspendProcess等),无 Electron/浏览器运行时开销; - 副作用操作(静音、冻结、暂停键等慢操作)被挪到专职副作用线程
EffectsWorker(effects_worker.rs),以 FIFO 队列异步执行,空闲时线程完全阻塞在recv上不消耗 CPU; - 配置界面虽然基于 Tauri + Svelte,但平时只在前台需要时启动,核心独立常驻后台。
需要说明的是,"约 1 MB"是官方文档口径下的常驻内存表现,实际占用会随隐藏窗口数量与系统环境浮动,这里不作量化承诺。
超多姿势:隐藏后的附加行为与底层副作用
首页宣称"隐藏后静音、发送暂停键、冻结进程、隐藏自身托盘图标、正则匹配窗口/进程……高度可定制"。这些能力统一抽象为Effectstrait(effects.rs),由WinEffects在 Windows 上实现。
会话级静音
静音基于 Windows Core Audio 的会话级控制(audio.rs):通过IMMDeviceEnumerator枚举默认播放设备上的所有音频会话,凡属于目标进程、或与目标同映像的会话(Chrome 这类多进程程序的声音由子进程发出,须按映像匹配,见same_target,audio.rs)都被静音。核心用TOUCHED记账表记录"本次运行真正改动了哪些会话"(audio.rs),恢复时只解除自己设过的静音——你隐藏前已在音量合成器里手动静音的程序,恢复后保持静音,不会被顺手打开。
暂停播放与续播
"同时暂停播放"优先通过系统媒体控件(SMTC)精确暂停目标自己的媒体会话(effects.rs);够不着的程序回退到发送全局媒体暂停键,且仅在确认目标确实在出声时才发,避免把没在播的内容切成播放。"恢复时继续播放"只续播本程序暂停过、当下仍是暂停态的会话,回退暂停键的不会被续播。
进程冻结与效率模式
冻结让进程完全停止运行,是隐藏后省电、停止后台解码/渲染的关键能力(详见 docs/guide/freeze.md):
- 普通冻结:调用 ntdll 的
NtSuspendProcess/NtResumeProcess(freeze.rs),无需管理员权限即可对当前用户进程生效; - 增强冻结:调用微软官方
pssuspend64.exe(需管理员身份,且程序目录下存在该文件),对多进程架构程序更彻底,失败时自动回退普通冻结(effects.rs); - 降低内存占用:冻结成功后调用
SetProcessWorkingSetSizeEx清空工作集(freeze.rs),把驻留物理内存换出到页面文件,并用GetProcessMemoryInfo前后测量差值记账; - 效率模式:不停掉进程,而是将其降为 Windows 效率模式(EcoQoS + 低优先级),进程继续运行但只吃能效核心(effects.rs),Windows 11 上效果最佳。
冻结的作用范围有三种取值(config.rs):仅目标进程(self)、目标进程及所有子进程(tree,BFS 展开后代,见expand_descendants,hide.rs)、同一程序的所有实例(image,按映像名匹配,见expand_same_image,hide.rs)。dormant_pids(hide.rs)保证只有全部可见窗口都被藏起来的进程才会被冻结——同进程还剩一个窗口开着就不冻结。
隐藏托盘图标与正则匹配
"同时隐藏 ZoneDeck 托盘图标"只作用于自身图标(托盘实现见 tray.rs,基于Shell_NotifyIconW,并监听TaskbarCreated广播在 explorer 重建任务栏后自动补挂图标),不会影响其他程序的图标;若想让图标一直不显示,则应使用"显示托盘图标"开关。正则匹配则体现在窗口/进程规则的高级模式与白名单条目中(model.rs 的regex字段)。
稳如磐石:崩溃日志、崩溃恢复与计划任务三层防线
首页宣称"崩溃日志、崩溃恢复、计划任务三层防线"。崩溃恢复的实现集中在 recovery.rs:
- 快照落盘:每次隐藏动作执行前,核心把当前隐藏状态(隐藏窗口、冻结进程、静音进程、效率模式进程、冻结方式)写入
recovery.json(与config.json同目录,RECOVERY_FILE_NAME,recovery.rs),写入走 tmp + rename 原子替换,防止写坏(recovery.rs); - 身份校验:快照带格式版本(
schema = 1)与开机时刻(boot_time_ms),跨重启后失效的快照在加载侧被丢弃(is_restorable,recovery.rs);进程记录带创建时刻,防止 PID 被系统回收复用后张冠李戴; - 接管与解冻:核心异常退出后重启,
adopt_from(hide.rs)逐条核对窗口"还是不是当初那个、是不是仍藏着"——对得上的继续藏(上一轮核心是被外部干掉的,用户隐藏意图未变),对不上的只丢弃记录;若一个窗口都没接管成功,则立即解冻先前被挂起的进程、取消静音、撤销效率模式,避免它们一直挂起。窗口恢复工具的使用见 docs/guide/recovery.md。
计划任务则服务于开机自启(自动创建ZoneDeckAutostart计划任务,README 中有说明),让核心在登录后可靠地常驻后台。
现代界面:无边框配置、三态主题与自动保存
配置界面为"全新无边框设置界面",基于 Tauri + Svelte 实现(apps/config/ui/src/App.svelte),支持:
- 浅色/深色/跟随系统三态主题(theme.js),状态栏可循环切换;
- 配置自动保存:所有改动停止操作后自动写盘并即时生效,核心热重载无需重启(autosave.js);
- 内置公告与反馈上报:对应组件
AnnouncementModal、ErrorReportModal、AnalyticsConsentModal(apps/config/ui/src/components)。
配置界面的标签页组织(窗口绑定、热键与鼠标、隐藏设置、提示设置、关于与反馈、通用设置)与状态栏的核心启停、管理员提权、重启等快捷操作,详见 docs/guide/getting-started.md。
开源免费与快速上手
ZoneDeck 基于MIT 授权开源(LICENSE),Windows 10+ 开箱即用,界面语言支持简体中文、English、繁體中文(locales)。获取方式分为两种(见 README.md):
- 安装程序(installer):一键安装、更新、卸载;
- 便携版(portable):包含核心与配置程序的压缩包,解压即用。
快速上手只需五步(详见 docs/guide/getting-started.md):
- 打开配置界面 →窗口绑定,在左侧选中要隐藏的窗口,点击"添加"绑定到右侧;
- (可选)在热键与鼠标中调整触发方式(默认已开启鼠标中键双击隐藏);
- 关闭配置界面,核心在后台待命;
- 需要切换时按下隐藏热键
Ctrl + Q/ 触发鼠标手势,绑定窗口即刻消失并静音; - 再次触发即可恢复。
小结:六维能力对照速查
| 官方特性 | 核心实现 | 关键源码 |
|---|---|---|
| 极速隐藏 | 热键/鼠标/四角/空闲四种触发 +HideController编排 | hide.rs、hotkey.rs、mouse_hook.rs、idle.rs |
| 极低占用 | Rust 原生核心 + 副作用专职线程 | lib.rs、effects_worker.rs |
| 超多姿势 | 静音/暂停/冻结/效率模式/托盘隐藏/正则规则 | audio.rs、effects.rs、freeze.rs |
| 稳如磐石 | recovery.json快照、接管校验、计划任务自启 | recovery.rs、hide.rs |
| 现代界面 | Tauri + Svelte 无边框、三态主题、自动保存 | apps/config/ui/src/App.svelte、theme.js、autosave.js |
| 开源免费 | MIT 授权、Windows 10+ | LICENSE、README.md |
如需深入某一模块,可继续阅读 绑定窗口与进程、热键与鼠标手势、隐藏设置、进程冻结、窗口恢复与崩溃防护、通用设置 等指南,并在 crates/core/src 与 crates/common/src 中对照源码与测试用例。
- 桌面应用
【免费下载链接】ZoneDeck
The Ultimate Workspace Manager, Switch between work and life, seamlessly生活工作无缝切换,专业的桌面工作区管理助手
相关推荐
ZoneDeck 桌面工作区管理工具实战指南:窗口一键隐藏、进程冻结与崩溃自愈
ZoneDeck 桌面工作区管理工具实战指南:窗口一键隐藏、进程冻结与崩溃自愈 ZoneDeck 是一款面向 Windows 平台的桌面工作区管理工具,目标是在
桌面应用ZoneDeck 桌面工作区管理器:从一键隐藏到崩溃自愈的完整技术解析
ZoneDeck 桌面工作区管理器:从一键隐藏到崩溃自愈的完整技术解析 ZoneDeck 是一款面向 Windows 的桌面工作区管理助手,核心能力是"一键隐藏
桌面应用ZoneDeck 桌面工作区管理助手:窗口隐藏、进程冻结与数据清理完全指南
ZoneDeck 桌面工作区管理助手:窗口隐藏、进程冻结与数据清理完全指南 ZoneDeck 是一款面向 Windows 10+ 的桌面工作区管理工具,通过绑定
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考