macOS 键盘党:⌘⌘ cmdcmd 双键,实时秒切换窗口网格预览!安装、使用、配置、源码架构
macOS 键盘党:⌘⌘ cmdcmd 双键,实时秒切换窗口网格预览!安装、使用、配置、源码架构
macOS 用户最头疼的#窗口管理#痛点:鼠标点来点去、Alt-Tab 切换慢、窗口堆叠看不清……开源项目 cmdcmd(GitHub: peterp/cmdcmd)彻底解决了这个问题。键盘优先的窗口切换器,只需同时轻敲左右两个 ⌘ 键(Command 键),就能瞬间把当前屏幕所有可见窗口“扇形展开”成一个实时预览网格(live previews),通过键盘或鼠标一键直达目标窗口。无需鼠标拖拽、无需第三方工具,完全本地运行,macOS 14+支持。

一、cmdcmd 全部核心功能详尽解析
cmdcmd 的设计理念是极致键盘优先 + 实时预览 + 可持久化,覆盖了几乎所有窗口管理场景:
1.触发机制:
默认 ⌘ + ⌘(同时轻敲左右 Command 键,中间不能有其他按键)。再次按 ⌘+⌘ 或 Esc 关闭覆盖层。支持自定义触发器(如 cmd+shift+space 或 F13),需 Accessibility 权限。
2.覆盖层(Overlay)交互(所有操作实时生效):
○箭头键 / WASD:移动选中格
○1-9 数字键:直接选中对应格子
○Return:切换到选中窗口
○Space(按住):Peek 模式,临时放大选中格预览(松开恢复)
○鼠标点击 / 拖拽:直接选中或重新排序格子
○⌘ + 箭头键:与相邻格子交换位置
○⌘W:关闭选中窗口
○⌘Delete:忽略/取消忽略选中窗口(持久化)
○⌘Y:切换“显示隐藏窗口”视图(被忽略窗口以低透明度显示,便于恢复)
○⌘F:进入搜索模式,按 App 名称 + 窗口标题子串匹配过滤格子
○⌥ + G/B/R/Y/O/P:给选中格子打标签(Green/Blue/Red/Yellow/Orange/Purple)
○⌥ + 0:清除标签
○Esc:关闭覆盖层
3.视觉与持久化特性:
○每个格子是实时直播预览(ScreenCaptureKit),支持动态内容更新
○空闲窗口(2.5秒无绘制活动)显示微妙空闲指示点(idle dot)
○格子顺序和忽略窗口按显示器持久化存储在 UserDefaults(tileOrder + ignoredWindows)
○最近使用 App 排序选项(可选)
○动画开关(显示/选中时的缩放过渡)
4.配置系统:
○右键 Dock 图标(⌘⌘) → Open Config… 打开 ~/Library/Application Support/cmdcmd/config.json
○支持自定义绑定、触发器、动画开关
○示例(自动生成,带 // 注释):
1 | ●●●json |
○支持的 Action:pick、dismiss、move-/swap-、pick-1~9、ignore、toggle-hidden、close、search、tag-*/clear 等
○修改后重启生效(或通过 Settings 窗口实时应用部分配置)
5.显示模式:
○Dock(默认)、Menu Bar、Hidden 三种
6.其他:
○Onboarding 首次启动引导权限
○内置 Settings 窗口(动画、实时预览开关)
○拖拽重新排序 + 标签 + 搜索 + 忽略 = 极致自定义
○支持多显示器(独立持久化)

二、安装方法
方式一:直接下载安装
1.访问 GitHub Releases:https://github.com/peterp/cmdcmd/releases
2.下载最新 .zip(v0.2.2+)
3.解压后打开 cmdcmd.app
4.首次启动会弹出 Onboarding 窗口,授予 Screen Recording(实时预览)和 Accessibility(全局热键 + 激活窗口)权限
5.点击 Grant 按钮跳转系统设置,开启后点击 Continue
6.完成后 Dock 出现 ⌘⌘ 图标,即可使用
方式二:从源码编译安装
1 | ●●●bash |
直接运行二进制:
1 | ●●●bash |
构建脚本 build-app.sh 会自动 swift build + ad-hoc codesign + 打包 .app。
make-icon.sh 可重新生成 AppIcon。
项目使用 Swift Package Manager(Package.swift),依赖仅系统框架(AppKit、ScreenCaptureKit 等)。

三、使用方法
1.安装完成后,按 ⌘ + ⌘ 召唤覆盖层。
2.用箭头/WASD 移动,数字键直达,或搜索(⌘F)过滤。
3.按住 Space Peek 快速预览内容。
4.需要忽略烦人窗口?选中后 ⌘Delete。
5.想自定义热键?编辑 config.json,重启即可。
6.多显示器自动适配,每个屏幕独立记忆顺序和忽略列表。
7.右键 Dock 图标可快速打开 Settings/Config/Check Updates。
高级技巧:
●标签颜色快速视觉分类(6 种颜色)
●显示隐藏窗口模式快速恢复被忽略窗口
●空闲点提示帮助识别“卡住”的后台窗口
四、技术原理、架构与实现方式
cmdcmd 架构简洁高效,全部代码位于 Sources/cmdcmd/(~94% Swift),核心文件对应职责:
整体架构图:
●main.swift:入口 + AppDelegate(Dock 菜单、Updater、Display Mode)
●CmdChord.swift:核心触发器
●SpaceTracker.swift:窗口/空间枚举
●Overlay.swift + OverlayView.swift:覆盖层 UI 与逻辑
●Tile.swift:单个实时预览格子
●GridLayout.swift:网格计算
●Config.swift + Keymap.swift:配置与按键映射
●HotkeyMonitor.swift:备用普通热键支持
●Onboarding.swift:权限引导
●其他:HintPill、Log 等辅助
关键技术实现:
1.双 ⌘ 键检测(CmdChord.swift):
使用 NSEvent 全局/本地监视器 + CGEvent tap(sessionEventTap,listenOnly 模式)。通过 flagsChanged 和 keyDown 事件精确判断左右 Command(kVK_Command / kVK_RightCommand)同时按下且无污染(无其他键)。contaminated 标志确保纯净 chord。比普通热键更优雅,无需额外 Accessibility 之外的权限。
2.窗口枚举与空间感知(SpaceTracker.swift):
使用私有 CGS/SkyLight API(CGSMainConnectionID、CGSCopyManagedDisplaySpaces、CGSCopySpacesForWindows、CGSGetActiveSpace)获取精确 Space 信息 + CGWindowListCopyWindowInfo(onScreenOnly)。支持多显示器、Space 类型(user/fullscreen/system/tiled)。这比标准 API 更精准地处理 macOS Spaces 切换场景。
3.实时预览实现(Tile.swift + ScreenCaptureKit):
每个 Tile 创建独立 SCStream,遵循 SCStreamOutput / SCStreamDelegate。使用 CALayer 渲染(content layer + number chip + title pill + idle dot)。内置帧缓存(LRU,限 100 帧)、自动重启流(最多 6 次,处理最小化/DRM/挂起场景)。空闲检测基于 ~2.5s 无绘制活动。支持 DRM 保护内容优雅降级(跳过崩溃帧)。
4.网格布局(GridLayout.swift):
纯数学计算:根据窗口数量、屏幕宽高比、padding 动态计算 cols/rows + 每格尺寸,确保最佳填充且保持窗口原始 aspect ratio。
5.持久化与配置:
UserDefaults 存储 tileOrder + ignoredWindows(per displayKey = display UUID)。Config.json 使用 JSON + // 注释剥离解析,支持 bindings override。
6.动画与性能:
CATransaction + 自定义 fadeInAndUp 辅助。预热 SCShareableContent,缓存 ShareableContent,异步 refreshAndReconcile(新窗口淡入、关闭窗口淡出)。
7.发布流程:
Changeset 驱动(.changeset/*.md),release.sh 自动 bump 版本、生成 CHANGELOG、appcast.xml、Sparkle 签名、GitHub Release。
权限说明(项目 Onboarding 明确列出):
●Screen Recording:ScreenCaptureKit 实时捕获
●Accessibility:全局 chord 监听 + 激活目标窗口
项目预发布状态,但已非常稳定(v0.2.x 修复了 phantom tiles、aspect ratio、peek 动画、搜索崩溃等)。

cmdcmd 不只是又一个窗口切换器,重新定义了 macOS 窗口管理:实时、键盘、持久、可扩展。比原生 Mission Control 更快、更清晰,比 Raycast/Alfred 更专注窗口本身。
无论是开发者、设计师还是重度多任务用户,cmdcmd 都能效率起飞。项目代码清晰、注释详尽,极适合学习#macOS底层开发#(CGS、ScreenCaptureKit、事件 tap 等)。
—— 如此才是
把复杂的技术,讲成你真正能用上的生产力
零基础也能玩转卫星!开源Ground Station + SDR 打造个人地面站全攻略
OpenClaw & Hermes刷屏后,GitHub Mercury Agent如何打动用户? 灵魂驱动+权限铁闸+24/7永动 vs 两大竞品
苹果M系列芯片的福音!无需H100、无需云GPU,本地MacBook就能微调Gemma 4多模态模型
开源Minecraft终极杀手!12.7K星GitHub神器Luanti(原Minetest)完整中文攻略:零基础安装、2800+模组随便玩、服务器+源码编译
AI 直接操控 Unity/Godot/Unreal 编辑器!用 OpenClaw + TomLeeLive 插件,聊天就能把你的游戏梦想变成现实
开源项目Paseo,AI编码代理跨设备统一指挥中心:统管Claude Code、Codex、OpenCode(以及Copilot、Pi等)
老婆/女朋友每天早上纠结45分钟穿什么?GitHub 开源AI衣柜神器 Wardrowbe 彻底解放!完整自托管安装+使用教程
Notebook LM平替,开源Open Notebook:隐私零泄露、18+AI模型随意切、1-4人定制播客秒生成
30MB Rust无头浏览器Obscura:击败Chrome、V8真实JS+CDP全兼容,AI Agent与爬虫的隐形核武器
Rust重写的jcode:性能碾压Cursor Claude Code 139倍的下一代Coding Agent Harness,人类级内存图谱+多会话Swarm
Warp开源震撼发布!5年Rust GPU终端+Oz Agentic开发环境完整拆解:功能全览、源码编译教程、核心架构深度解析
💬 本文评论区已开启,但暂无读者留言。
本文转载自微信公众号,如有侵权请联系删除。
- 标题: macOS 键盘党:⌘⌘ cmdcmd 双键,实时秒切换窗口网格预览!安装、使用、配置、源码架构
- 作者: lxiol
- 创建于 : 2026-05-08 21:45:51
- 更新于 : 2026-05-12 16:07:04
- 链接: https://blog.lxiol.cn/2026/05/08/macOS-键盘党-cmdcmd-双键实时秒切换窗口网格预览安装使用配置源码架构/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。