
最近我有想要录教程的想法,未来可能做 Youtuber,但是现在桌面保存了很多临时文件夹和文件,又不想整理到其它地方,因为很多是待办事项,迁移走很可能遗忘,再者迁移来迁移去很麻烦,不想折腾。
于是问题来了 。
我在想:工作的桌面和录屏的桌面,能不能彻底分开?
答案当然是可以的。
但 macOS 在这件事上有一个很隐蔽的坑,我踩进去之后研究了一番,今天把结论分享给你。
Spaces:Mac 的多桌面系统
macOS 的多桌面功能叫 Spaces,藏在 Mission Control 里。大多数人知道它,但真正用好它的人不多。
进入方式:三指向上滑动触控板,或者按 F3。
右上角有个 + 号,点一下,新桌面就建好了。切换桌面用三指左右滑,或者 Control + 左/右方向键。
这部分不难。真正让我头疼的,是下面这个问题。
我以为可以只隐藏一个桌面的图标
我当时的想法很简单:桌面 1 放满工作文件,桌面 2 保持干净用来录屏。切到桌面 2 的时候,图标全藏起来,完美。
macOS 有一行命令可以隐藏桌面图标:
# 隐藏所有桌面图标
defaults write com.apple.finder CreateDesktop false && killall Finder
# 恢复显示
defaults write com.apple.finder CreateDesktop true && killall Finder
我执行完,图标没了,清爽。然后我切回桌面 1 ——图标也没了。
原来这个设置是全局的,两个桌面一起受影响。macOS 没有给每个 Space 单独配置桌面显示状态的能力。
这是一个系统级的限制,没有什么绕过去的优雅方案。
可行的方案:一键脚本 + 快捷键
既然无法分开控制,那就做成一键切换:录屏前跑一个脚本隐藏图标,录完再跑一个恢复,绑到快捷键上,几秒钟搞定。
第一步,创建两个脚本
mkdir -p ~/scripts
# 隐藏桌面图标
cat > ~/scripts/hide-desktop.sh << 'EOF'
#!/bin/bash
defaults write com.apple.finder CreateDesktop false
killall Finder
EOF
# 恢复桌面图标
cat > ~/scripts/show-desktop.sh << 'EOF'
#!/bin/bash
defaults write com.apple.finder CreateDesktop true
killall Finder
EOF
chmod +x ~/scripts/hide-desktop.sh
chmod +x ~/scripts/show-desktop.sh
第二步,用 Automator 绑定快捷键
- 打开 Automator,新建「Quick Action」
- 工作流接收设为「没有输入」
- 搜索并添加「运行 Shell 脚本」
- 输入
~/scripts/hide-desktop.sh - 存储,命名为「Hide Desktop Icons」
- 打开「系统设置 → 键盘 → 键盘快捷键 → 服务」,找到刚建的 Quick Action,分配一个快捷键
「显示图标」的 Quick Action 同样操作一遍。
踩坑记录:两个必须知道的问题
按照上面的步骤配完,你大概率会遇到两个问题。我都踩过,记录在这里。
问题一:按下快捷键,隐藏的是聊天窗口而不是桌面图标
症状是:按了 ⌥⌘H,微信或者其他聊天工具的窗口消失了,桌面图标纹丝不动。
原因是 macOS 的 Services 快捷键会被当前前台 App 拦截。⌥⌘H 这个组合在很多 App 里是「隐藏窗口」的内置快捷键,系统的 Service 根本没机会执行。
解决方法:换一个冷门的组合键,加上 Control 或 Shift 变成三键组合:
-
⌥⌘⌃H(隐藏图标) -
⌥⌘⌃S(显示图标)
三键组合被 App 内部占用的概率极低,稳定很多。
问题二:执行报 permission denied
症状是弹出错误提示:
操作"运行 Shell 脚本"遇到了错误:
zsh:1: permission denied: /Users/xxx/scripts/hide-desktop.sh
原因很直接:脚本文件没有执行权限。在终端跑一下这两行就解决了:
chmod +x ~/scripts/hide-desktop.sh
chmod +x ~/scripts/show-desktop.sh
如果想验证权限是否生效,用 ls -la 检查:
ls -la ~/scripts/
输出里文件权限位显示 -rwxr-xr-x,有 x 就代表可执行,没问题了。
如果文件根本不存在(路径报错),说明之前的创建步骤没有完整执行,重新跑一遍第一步的完整脚本,创建和授权一次性完成。
推荐另外方法:换用 Alfred 或直接用终端别名
用 Alfred(最简单)
如果你装了 Alfred,直接建两个 Workflow,触发 shell 脚本,用 Alfred 的快捷键唤出后输入关键词执行,完全不存在被 App 拦截的问题。
推荐另外方法:用终端别名(开发者最顺手)
在 ~/.zshrc 加两行:
# 隐藏/显示桌面图标
alias hd="defaults write com.apple.finder CreateDesktop false && killall Finder"
alias sd="defaults write com.apple.finder CreateDesktop true && killall Finder"
执行 source ~/.zshrc 后,终端里直接输 hd 或 sd 回车,比快捷键还快。
但我更推荐另一个思路
说实话,用了一段时间之后,我觉得最干净的方式不是「隐藏图标」,而是从源头上让桌面变得不需要放东西。
macOS 的桌面本质上只是 ~/Desktop 这个文件夹的图形化显示。如果你养成了把文件放进 Finder 文件夹而不是直接扔在桌面上的习惯,两个桌面天然就都是干净的,根本不需要任何脚本。
推荐的做法是:
- 工作文件全放在
~/Documents下,按项目分好子文件夹 - Finder 侧边栏把常用文件夹都 pin 好,访问速度一样快
- 桌面只用来临时放「今天要处理的文件」,处理完立刻归档
这个习惯养成之后,录屏桌面的问题就彻底消失了——因为桌面本来就没东西。
几个让多桌面更好用的设置
用多桌面有个最烦的问题:桌面会自动重新排序。你好不容易记住桌面 2 是干净的录屏桌面,过几天它跑到桌面 1 去了。
关掉这个:系统设置 → 桌面与程序坞 → 根据最近使用情况自动重新排列 Spaces,取消勾选。
另外,让 App 固定在某个桌面也很有用:Dock 上右键 App 图标 → 选项 → 分配到「此桌面」。这样 Xcode 永远在桌面 1,录屏工具永远在桌面 2,切换的时候不会乱。
录屏前还可以顺手做几件事:
-
Option + Command + D隐藏 Dock - 控制中心开启「请勿打扰」,屏蔽通知弹窗
- 把浏览器书签栏也收起来
这几步加起来,录出的画面会干净一大截。
macOS 的 Spaces 功能本身并不复杂,真正的价值在于把工作状态和展示状态彻底隔离。一个桌面随意生长,一个桌面一尘不染。
就像练字时的书房和待客时的厅堂,各有其用,不必强求统一。
从今天起,先新建一个专属的录屏桌面,然后认真考虑一件事:你桌面上的那些文件,哪些是真的需要放在那里的?
2026.03.12 23:09
沪 · 赵巷