☰
ZoneDeck 桌面工作区管理助手技术指南:极速隐藏、能效控制与崩溃自愈的完整解析
2026/10/14 2:01:41 网站建设 项目流程
  • 桌面应用

【免费下载链接】ZoneDeck

The Ultimate Workspace Manager, Switch between work and life, seamlessly生活工作无缝切换,专业的桌面工作区管理助手

项目地址:https://gitcode.com/gh_mirrors/bo/ZoneDeck
点击查看免费下载

ZoneDeck 是一款面向 Windows 的桌面工作区管理工具,主打"生活工作无缝切换":按下一个热键、点一下鼠标或把鼠标甩向屏幕角落,即可一键隐藏并静音指定窗口,再次触发即可恢复。本指南以其官方首页(docs/index.md)所宣示的六大特性为主线,结合使用文档与 Rust 源码实现,完整讲解其隐藏触发、能效控制、崩溃自愈、配置体系与数据管理机制,读完即可掌握 ZoneDeck 的安装、绑定、配置与故障排查全流程。

ZoneDeck 是什么:生活与工作场景的无缝切换

ZoneDeck 的核心定位非常聚焦:当你需要在工作与生活场景之间快速切换时,只需一次触发,即可把涉及隐私的窗口批量隐藏。正如使用文档首页所描述的:"按下一个热键、点一下鼠标,或把鼠标甩到屏幕角落,即可一键隐藏并静音指定窗口;需要时再触发一次即可恢复。"(项目前身为开源 Boss-Key 老板键。)

从v3.0.0起,ZoneDeck 使用Rust + Tauri全面重写,采用核心 + 配置分离的双进程架构(详见 系统架构):

  • ZoneDeck.exe(核心):纯 Rust 原生实现,后台常驻,负责热键监听、窗口枚举 / 隐藏 / 显示、音频静音、进程冻结、托盘图标与崩溃恢复;
  • config.exe(配置界面):Tauri(Rust + WebView2)实现,按需打开、关闭即退出,负责窗口绑定、热键录制、选项设置与检查更新。

两者通过命名管道\\.\pipe\zonedeck通信,配置保存后核心热重载,无需重启。

系统要求:Windows 10 及以上开箱即用(部分版本另提供 Windows 7 软件包);配置界面依赖系统自带的 Microsoft Edge WebView2 运行时;默认普通用户权限即可运行,仅增强冻结与计划任务最高权限自启需要管理员权限。

特性一:极速隐藏——多窗口、多进程的一键隐藏

两种绑定粒度:窗口隐藏与进程隐藏

"绑定"决定了按下热键时哪些窗口会被隐藏。ZoneDeck 提供两种粒度的绑定(见 绑定窗口与进程):

类型粒度说明
窗口隐藏细粒度锁定单个窗口(按窗口标题 + 句柄智能追踪匹配)
进程隐藏粗粒度隐藏某个程序的全部窗口(按可执行文件匹配)

在源码层面,这两类规则分别对应 crates/common/src/model.rs 中的WindowRule与ProcessRule:

  • WindowRule记录title/hwnd/process/PID/path五元组锁定单个窗口,句柄失效时按「标题 + 进程路径」追溯找回(对应matching.rs中WindowResolution::Reacquired);
  • ProcessRule按可执行文件路径匹配,by_name为 true 时退化为仅按映像名匹配——这专门应对反作弊进程拒绝OpenProcess、枚举不到路径的场景(matching.rs 的测试用例process_rule_falls_back_to_name_when_the_path_is_unavailable验证了这一行为)。

配置文件兼容旧版扁平绑定:Config::normalize会把 v2 的hide_binding自动迁移为窗口精确规则(config.rs),因此从旧版升级后绑定不会丢失。

添加绑定与过滤现有窗口

在配置界面「窗口绑定」标签页,左栏是当前系统存在的窗口列表,右栏是已绑定规则。操作流程:

  1. 在左栏勾选一个或多个想隐藏的窗口;
  2. 点击「添加」:加入「窗口隐藏」生成一条精确锁定该窗口的规则,加入「进程隐藏」生成一条隐藏该程序全部窗口的规则;
  3. 若刚打开的窗口没出现在列表里,点击「刷新」重新枚举。

左栏还提供三个过滤选项帮助定位目标:搜索框(按标题关键字)、显示后台窗口、显示无标题窗口。

进阶:正则表达式匹配与过宽提示

对于"标题会变化"或"想匹配一类程序"的场景,ZoneDeck 支持正则匹配(窗口正则作用于标题,进程正则默认作用于可执行文件完整路径,可切换为按文件名)。窗口正则默认的种子是.*关键词.*,进程正则是.*程序名\.exe.*。

保存时 ZoneDeck 会拿200 条随机字符串去试每一条正则,命中超过一半(100 条)即判定为"可能过宽"(如.*会匹配一切)并弹提示。该判定逻辑在 crates/common/src/matching.rs:常量BREADTH_SAMPLES = 200、BREADTH_LIMIT = 100,样本由固定种子的伪随机生成器产出(约三成为 Windows 路径形状,其余是长度 1–40 的自由文本),因此同一条正则每次都得到同一结论。

多种触发方式

ZoneDeck 提供五种触发隐藏 / 恢复的方式(详见 热键与鼠标手势),全部在「热键与鼠标」标签页配置:

键盘全局热键

预置五个可自定义的全局热键(默认值定义在 crates/common/src/config.rs 的DEFAULT_HIDE_HOTKEY/DEFAULT_CLOSE_HOTKEY):

功能默认值说明
隐藏 / 显示窗口Ctrl + Q已隐藏时恢复,未隐藏时隐藏
仅隐藏窗口已关闭只隐藏,不恢复
仅显示窗口已关闭只恢复,不隐藏
隐藏前台窗口已关闭只隐藏当前活动的那一个窗口,可连按逐个隐藏
关闭核心Win + Esc退出核心(退出前恢复所有窗口)

默认通过系统的RegisterHotKey注册全局热键;若组合键被其他程序占用,可展开热键开启低级键盘钩子(WH_KEYBOARD_LL)绕开占用,并可进一步开启不传递(按键不传给前台程序)。开启钩子后还能录制更丰富的组合:多个主键同时按(如Q + W,最多四个)与纯修饰键(如Ctrl + Shift)。隐藏是累加的:无论用哪种方式隐藏,窗口都会记在同一份清单里,恢复时一并放出。

鼠标按键连击

支持五颗鼠标键:左键、中键、右键、侧键 1(前进)、侧键 2(后退)。全新安装默认开启鼠标中键双击隐藏,并允许再按一次恢复(MouseSetting的默认实现见 config.rs)。每颗启用的按键可独立配置连击次数(单击 / 双击 / 三连击,最多MAX_CLICKS = 3)、修饰键组合(如"按住 Ctrl 时中键双击")。全局选项连击判定窗口默认 350 毫秒(DEFAULT_MULTI_CLICK_MS,合法范围 150–1000ms)。配置左键 / 右键触发时务必搭配连击或修饰键,避免干扰正常点击。

屏幕四角手势

启用后把鼠标快速移动到屏幕某个角落即可触发隐藏 / 恢复,四个角可分别开关。配套选项:仅快速移动触发(默认开,避免误触)、角落恢复(允许通过移动鼠标到角落恢复窗口)。四角功能依赖底层鼠标钩子WH_MOUSE_LL,仅在启用鼠标或四角功能时才安装——不使用鼠标触发时核心不会安装该钩子。

空闲自动隐藏

开启后,键盘和鼠标在设定时长内无任何操作时自动隐藏已绑定窗口,适合临时离开工位。空闲时长默认5 分钟(DEFAULT_AUTO_HIDE_TIME),底层用GetLastInputInfo判定,无需常驻监听键盘。

隐藏的底层编排:plan / commit 两段式

隐藏并非简单的ShowWindow(SW_HIDE)。核心的 crates/core/src/hide.rs 实现了HideController,采用「意图先行」两段式编排:

  1. plan_hide计算执行计划HidePlan:剪掉失效记录、补齐 PID、按白名单打Skip标记、决定静音 / 冻结 / 暂停媒体的候选集,不做任何窗口动作;
  2. 把计划后的快照先写入recovery.json(先落盘再动手,隐藏中途崩溃不丢记录);
  3. commit_hide同步隐藏窗口(必要时先SW_SHOWMINNOACTIVE再SW_HIDE),静音 / 冻结 / 暂停媒体则交给副作用专职线程(effects_worker.rs)按 FIFO 队列异步执行,消息循环不被慢操作阻塞。

队列内的先后顺序有讲究:暂停媒体 → 静音 → 静置 → 冻结。冻结前统一静置一次(FREEZE_SETTLE_DELAY,整批只等一次),因为进程一旦挂起就再也处理不了暂停命令,且隐藏若还没在屏幕上画完就冻结会留下残影。

恢复(show)时逐条校验记录有效性:句柄须仍存在且仍属于当初的进程(IsWindow+ PID 比对),冻结 / 效率模式记录须匹配进程创建时刻——句柄与 PID 都会被系统回收复用,校验不过的记录跳过并如实计入日志。

特性二:极低占用——Rust 重写的原生核心

v3 使用 Rust 重写后,核心常驻后台的内存占用仅约1 MB(二进制约 350 KB),原生实现不易被杀软误报。这一低占用并非凭空而来,而是架构设计的结果:

  • 核心是一个纯原生消息窗口 +wndproc的常驻进程,不依赖任何运行时;
  • 输入钩子按需安装:WH_KEYBOARD_LL仅在有热键开启「低级键盘钩子」或用了纯修饰键 / 多主键组合时才安装,WH_MOUSE_LL仅在启用鼠标 / 四角时才安装;
  • 空闲检测用GetLastInputInfo,无需常驻监听键盘;
  • 不使用任何内核驱动,降低误报与安全风险(详见 系统架构)。

特性三:超多姿势——隐藏后的附加行为

隐藏只是第一步,ZoneDeck 的"超多姿势"体现在隐藏后可以叠加的各类副作用上。这些行为统一抽象为 crates/core/src/effects.rs 的Effectstrait(静音、冻结、暂停媒体、清空工作集、效率模式),生产实现WinEffects支持异步执行,测试时可注入 mock。

隐藏窗口后静音

隐藏时静音目标进程的音频,恢复时自动取消静音。默认开启。基于 Windows Core Audio会话级静音,只静音目标进程,不影响系统其他声音;并且只解除自己设过的静音——隐藏前你已在音量合成器里静音的程序,恢复时会保持静音。静音解除不做存活校验(同映像的其他会话仍要解除),误伤由audio.rs的会话级记账挡着。

同时暂停播放与恢复续播

隐藏同时尝试暂停正在播放的媒体(默认关闭)。优先通过系统媒体控件(SMTC)精确暂停目标进程自己的媒体会话;少数没注册媒体会话的程序回退到发送全局媒体暂停键,且仅在确认目标在出声时才发——因为那个键是播放 / 暂停切换键,目标没在播时发过去反而会把它切成播放。开启「恢复时继续播放」后,恢复显示时续播本次暂停的媒体(只续播本程序暂停过、且当下仍是暂停态的内容;回退暂停键的不会被续播)。

进程冻结与效率模式

进程冻结是隐藏后的一项增强功能:隐藏窗口的同时"挂起"对应进程,使其停止占用 CPU(暂停后台视频解码、游戏渲染等);恢复显示时自动解冻。相关设置位于「能效控制」标签页,详见 进程冻结。

普通冻结:通过OpenProcess(PROCESS_SUSPEND_RESUME)+NtSuspendProcess实现,无需管理员权限即可对当前用户的进程生效(实现见 crates/core/src/freeze.rs,测试用例suspend_and_resume_a_real_child_process验证真实子进程的冻结 / 解冻链路)。

增强冻结:改用微软官方pssuspend64.exe工具,对多进程架构、有渲染子进程的复杂程序效果更强。需要同时满足三个前置条件,缺一即置灰:已开启冻结总开关、核心以管理员身份运行、程序目录下存在pssuspend64.exe。源码中suspend_enhanced会以-accepteula -nobanner参数调用该工具,工具缺失时回退普通冻结并记一条警告日志。

效率模式:冻结之外的另一条路——不停掉进程,而是降为 Windows 效率模式(EcoQoS + 低优先级),进程继续运行只是变慢。无需管理员,不依赖外部工具,Windows 11 上效果最佳。它与冻结相互独立,各有各的开关与作用范围。

作用范围:决定能效控制覆盖到哪些进程,两者可选值相同(定义于 config.rs 的POWER_SCOPES):

取值覆盖适合
仅目标进程命中窗口所属的进程默认。单进程程序
目标进程及所有子进程上者 ∪ 全部后代浏览器、Electron 应用
同一程序的所有实例系统里所有同映像名进程多开的同一个程序

降低内存占用:冻结本身不省内存。开启后,ZoneDeck 会在冻结成功之后清空该进程的工作集(SetProcessWorkingSetSizeEx,哨兵值usize::MAX),把驻留物理内存的数据换出到页面文件。仅对被冻结进程生效,恢复时数据要从页面文件读回,机械硬盘上可能明显变慢。

能效统计:能效控制页底部展示累计冻结进程数、累计冻结时长、累计释放内存(清空工作集前后各读一次工作集取差值),以及据此估算的节电量与碳排放。

白名单:逐程序、逐项跳过

白名单让你对特定进程的窗口逐项跳过隐藏、冻结、静音中的任意一件(见 白名单)。每条条目有三个独立开关:忽略隐藏、忽略冻结、忽略静音,按文件名(默认)或完整路径匹配,比较不区分大小写。

全新安装时预置一条explorer.exe条目(忽略隐藏 + 忽略冻结)——文件资源管理器就是桌面与任务栏本身,冻结它会让整个 Windows 外壳卡住。此外有一条带锁的内置条目恒不冻结:ZoneDeck 核心自身(映像名ZoneDeck.exe、core.exe),它在 matching.rs 中由BUILTIN_FREEZE_GUARDS常量兜底,不依赖任何用户配置,测试builtin_guards_block_freezing_the_core_with_empty_whitelist专门验证了空白名单下核心仍不可被冻结。

其余隐藏行为选项

  • 同时隐藏当前活动窗口(默认开):隐藏热键按下时把当前前台窗口一并藏起;
  • 同时隐藏 ZoneDeck 托盘图标(默认关):连自己的托盘图标一起隐藏,注意图标藏掉后只能靠热键或鼠标手势恢复;
  • 同时隐藏 ZoneDeck 配置窗口(默认开):触发隐藏时若配置窗口正开着,一并藏起,恢复时随其余窗口显示;
  • 隐藏前先最小化窗口(默认关):先最小化再隐藏,恢复时还原成隐藏前形态(最大化窗口仍保持最大化)。

主要配置项默认值速查

所有选项均来自 crates/common/src/config.rs 的Setting结构:

配置项默认值
隐藏 / 显示热键Ctrl+Q
关闭核心热键Win+Esc
隐藏后静音开启
同时隐藏当前活动窗口开启
同时隐藏配置窗口开启
隐藏自身托盘图标关闭
隐藏前最小化关闭
同时暂停播放 / 恢复续播关闭 / 关闭
进程冻结 / 效率模式 / 降低内存占用全部关闭
作用范围仅目标进程
鼠标中键双击隐藏开启(允许再按恢复)
连击判定窗口350 ms
空闲自动隐藏关闭(时长 5 分钟)
界面语言跟随系统
日志保留天数 / 日志等级7 天 / 警告

特性四:稳如磐石——崩溃自愈三层防线

隐藏窗口本质上是把窗口设为不可见。万一忘了热键、核心异常退出,窗口会不会"永远消失"?ZoneDeck 核心内置了崩溃自愈三层防线(详见 窗口恢复与崩溃自愈),并配合手动恢复工具兜底。

第一层:崩溃日志

核心把关键事件与 panic 信息写入数据目录logs文件夹下的日志文件,按天切割为ZoneDeck-YYYY-MM-DD.log,按日志保留天数自动清理过期文件(设为 0 则关闭日志)。日志分debug/info/warn/error四级,用户在配置界面选择的log_level是记录门槛,默认warn只记警告与错误。每次运行各记一条不受等级过滤的会话标记:[START](版本、配置 schema、生效等级与数据目录)与[EXIT](正常退出及来由),日志末尾没有[EXIT]即上次是崩溃或被强杀。日志会统一脱敏:窗口一律以「进程名 + 句柄 + PID」指代,用户目录替换为%USERPROFILE%,因为日志可能被反馈功能上传。

第二层:崩溃恢复

每次隐藏窗口时,核心把"隐藏了哪些窗口、冻结 / 静音了哪些进程"先写入recovery.json(tmp + rename 原子替换);正常显示或退出时删除该文件。核心重启时若发现该文件仍存在,说明上次是异常退出,此时逐条核对记录:

  • 全部对得上:说明隐藏意图没变,窗口继续保持隐藏,核心接手记录,之后照常用热键恢复;
  • 有记录对不上(窗口已关闭、句柄被回收、或已被别的程序显示):丢弃这些记录,不去动那个句柄现在指向的窗口,同时记警告日志并弹通知;
  • 一个窗口都没接管成功:说明这轮隐藏已失效,核心把还活着的进程解冻、取消静音、撤销效率模式。

快照带开机时刻与进程创建时刻,跨重启的过期快照直接丢弃。

第三层:计划任务看门狗

开机自启若以计划任务方式注册,会带有失败自动重启策略(RestartOnFailure:崩溃后约 1 分钟内自动重启,最多 3 次)。release 构建panic = "abort",panic 钩子写完日志后以非零码退出,正好触发计划任务重启。核心崩溃 → 计划任务重启核心 → 重启后由第二层防线接手隐藏记录,形成闭环。

窗口恢复工具

手动兜底:配置界面 → 通用设置 → 工具 → 窗口恢复工具或托盘菜单 → 窗口恢复工具,工具列出系统中所有窗口(包括当前不可见的),勾选后即可恢复显示,也支持冻结 / 解冻窗口。核心运行时,工具的显示 / 隐藏操作会交给核心执行,恢复时连同解冻、取消静音一起完成。

特性五:现代界面——无边框配置界面

v3 的配置界面基于 Tauri 2 + Svelte 5(前端架构见 docs/dev/frontend.md),具备:

  • 无边框自绘窗口与亮 / 暗 / 跟随系统三态主题(状态栏按钮可在三态间循环切换);
  • 配置自动保存:所有改动在停止操作后自动写盘并即时生效,核心收到reload_config命令后热重载,无需重启;
  • 内置公告与反馈上报:「关于与反馈」页可检查更新(默认只看稳定版,可开启包含预览版)、展示服务端公告(按当前界面语言获取)、提交问题反馈(可选转换为 GitHub Issue)与匿名使用统计(首次启动征求同意,同意前不采集任何数据,随时可在「通用设置 → 隐私」退出);
  • 界面语言:配置界面与核心托盘菜单、气泡通知支持简体中文 / English / 繁體中文,默认跟随系统显示语言,也可在「通用设置 → 语言」手动指定,改动即时生效无需重启。

配置界面底部还有状态栏:左侧显示核心运行状态(未运行 / 普通用户 / 管理员)并提供启动、管理员启动、重启、退出按钮;右侧提供打开日志目录、切换主题、热键监控状态与保存状态提示。

特性六:开源免费——安装、数据与清理

安装版与便携版

自 v3.0.0 起每个版本提供两种程序包(详见 安装与版本选择):

类型说明适用场景
installer(安装版)完整封装,一键安装、更新、卸载推荐。高效安全地管理 ZoneDeck
portable(便携版)核心 + 配置程序的压缩包,解压即用便携、绿色使用、U 盘随身携带

安装版可"仅为我安装"(默认,无需管理员,装到%LocalAppData%\Programs\ZoneDeck)或"为所有用户安装"(需管理员,装到C:\Program Files\ZoneDeck)。便携版解压后目录含ZoneDeck.exe(常驻核心)、config.exe(配置界面)、cleanup.ps1、LICENSE.txt与多语言 README。两个可执行文件需放在同一目录,通过共用的config.json与命名管道协作。

数据存放位置与迁移

设置、日志、恢复文件与缓存存放在同一数据目录,定位逻辑在 crates/common/src/paths.rs:

情形数据目录
安装版%APPDATA%\ZoneDeck
便携版,程序目录可写程序目录
便携版,程序目录写不进去%APPDATA%\ZoneDeck

程序凭程序目录里的installed.marker(或兜底判断卸载程序unins*.exe)分辨自己是安装版还是便携版,请勿删除该文件。便携版放在不可写位置(如C:\Program Files或只读介质)时会自动改用%APPDATA%\ZoneDeck并在界面说明原因。位置发生变化时(如把便携版装成了安装版),原config.json会在首次启动时自动搬过去,绑定与热键全部保留。

配置界面用到的浏览器组件另有一份数据在%LOCALAPPDATA%\cn.hanloth.zonedeck.config,两个版本都一样,删程序文件夹清不掉它。

卸载与清理

  • 安装版:通过系统"应用和功能"或卸载程序卸载,会询问是否保留配置文件;
  • 便携版:先退出核心,在程序目录中打开 PowerShell 执行随包的清理脚本:
powershell -ExecutionPolicy Bypass -File cleanup.ps1

脚本会先列出将要删除的内容并等你确认,随后清理%LOCALAPPDATA%\cn.hanloth.zonedeck.config、可能存在的%APPDATA%\ZoneDeck,以及开机自启留下的计划任务ZoneDeckAutostart和注册表项HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ZoneDeck Application。程序目录本身不会被删,跑完后自行删除即可。

开机自启

双保险机制(见 开机自启):首选计划任务(登录触发,可请求最高权限运行,带失败自动重启能力),计划任务不可用时回退注册表启动项。托盘菜单或配置界面均可切换,开关旁小字会标注当前生效的注册方式。卸载 / 迁移前请先关闭自启,以免残留指向旧路径的失效自启项。

配置文件的容错与迁移

配置config.json的加载并非简单读取(config.rs 的load_reporting):

  • 解析失败时回退默认配置,原文件改名为同目录*.bad备份;
  • 配置来自更高的 schema 版本时复制留底(.bak),配置本身照常生效;
  • 保存走同目录临时文件 + rename 原子替换,中途断电不会写坏配置;
  • 旧版扁平字段(hide_binding、middle_button_hide、click_to_hide、freeze_whole_tree等)在normalize中自动迁移,幂等可重复执行。

配置的顶层结构为:version(schema 版本)、app_version、hotkey、setting、notifications、verhub、window_rules、process_rules、whitelist。窗口信息以大写PID字段序列化,兼容旧版 config.json(model.rs 的测试serializes_pid_uppercase_key验证了这一点)。

相关文档导航

ZoneDeck 仓库内的文档体系完整,按需查阅:

  • 使用文档:简介、快速上手、绑定窗口与进程、热键与鼠标手势、隐藏设置、进程冻结、白名单、提示设置、通用设置、开机自启、窗口恢复与崩溃自愈、检查更新与反馈、安装与版本选择、常见问题
  • 开发文档:系统架构、IPC 协议、前端与配置界面、配置参考、测试
  • 项目说明:README(含应用截图与基础使用说明)
  • 桌面应用

【免费下载链接】ZoneDeck

The Ultimate Workspace Manager, Switch between work and life, seamlessly生活工作无缝切换,专业的桌面工作区管理助手

项目地址:https://gitcode.com/gh_mirrors/bo/ZoneDeck
点击查看免费下载

相关推荐

上一篇:彻底解决 Terraform AWS Provider 角色假设失败问题:从调试到根治
下一篇:如何快速上手MIT-B3模型:5分钟完成图像分割任务配置

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询