惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
G
Google Developers Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Engineering at Meta
Engineering at Meta
B
Blog
博客园_首页
量子位
博客园 - 叶小钗
L
LangChain Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
D
DataBreaches.Net
雷峰网
雷峰网
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
I
Intezer
H
Help Net Security
The Hacker News
The Hacker News
The Register - Security
The Register - Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
AWS News Blog
AWS News Blog
V
V2EX
Microsoft Security Blog
Microsoft Security Blog
T
Tenable Blog
Spread Privacy
Spread Privacy
A
Arctic Wolf
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Schneier on Security
Schneier on Security
C
CERT Recently Published Vulnerability Notes
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Last Watchdog
The Last Watchdog
Latest news
Latest news
T
Troy Hunt's Blog
L
LINUX DO - 热门话题

魔帆博客

Python包管理的血泪史:从混乱到秩序的漫长征 | 魔帆博客 日文中的衬线、非衬线混排 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 网页排版中的字体衬线 | 魔帆博客 配置和使用 Windows Dev Drive 开发驱动器 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客 Windows 注册表编辑或清除多显示器配置 | 魔帆博客 Git 合并本地两个不同的 Repo 仓库 | 魔帆博客 【记录】使用Golang开发腾讯云函数踩的坑 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 【笔记】Hydro二次开发总结 前端篇(一) | 魔帆博客 C/C++ 二叉树 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 Python 数字大小写转换 | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客
Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客
野小新 · 2025-08-07 · via 魔帆博客

零显示器环境下的 Sidecar 全自动方案

关键词:Mac mini、iPad、Sidecar(随航)、BetterDisplay、AppleScript、自动化

一、故事的开头——“我的 Mac mini 没地方看”

事情是这样的:我要离家出走(误,其实是去外边住一段时间),行李箱太小了,我又只有一个Mac Mini,所以只能带着这台小巧玲珑的 Mac mini M4。
可 Mac mini 这玩意儿,浑身上下只有一个致命缺点——它没有自带屏幕
带显示器?算了吧,行李箱表示已经喘不过气。
既然手里还有一台 iPad,何不把它捣鼓成 Mac 的主显示器?

于是,一套“零显示器点亮 Mac mini”的 Sidecar 自动化方案就此诞生。
整个配置步骤大概能在 15 分钟内搞定!


二、最终的效果

  1. 开机后全自动:Mac mini 自己跑脚本,把 iPad 当成主屏点亮。
  2. 一键复活:Sidecar 失联?按下全局快捷键秒连。
  3. 全程无外接显示器:“轻装上阵”,背包再也不用塞 HDMI 线和扛着一个显示器。

三、工具清单

硬件:

  • 一台支持 Sidecar 的 iPad(iPadOS 13 以上都行)。
  • 一台 Mac mini(macOS Ventura / Sonoma 及以上)。
  • 一个能配对的蓝牙键盘(鼠标/触控板可选但强烈推荐)。
  • 第一次配置时需要临时接入显示器 1 次,后面就可以收进柜子吃灰了。

软件方面:

  • BetterDisplay(开源 + 免费,负责虚拟显示器)
  • macOS 自带“自动化”(Automator)
  • 下方提供的 AppleScript 脚本

四、正式开工

1. 找到你的 iPad 名字(非常关键)

脚本需要精确匹配 iPad 名称,不然 Mac 会一脸懵逼不知道连谁。

步骤:

  1. 拿起 iPad → 设置 → 通用 → 关于本机
  2. 名称 一栏就是脚本要用的名字,例如 Paxos 的 iPad
  3. 复制下来,等会儿粘到脚本里。
    Tips:最好别起那种有 Emoji 的名字。

2. 用 Automator 创建“开启随航.app”

  1. 打开 Launchpad → 其他 → 自动化(Automator)
  2. 新建文稿 → 类型选“应用” → 确定
  3. 在左侧搜索栏输入“AppleScript”,把「运行 AppleScript」拖到右边。
  4. 把本文最后的脚本粘进去,把 Paxos的iPad 改成你的 iPad 名称。
  5. 点右上角运行测试:iPad 要是弹出提示/直接连上,就说明成功。
  6. ⌘+S 保存,名字起成 开启随航,位置丢到 /Applications 方便日后调用。
新建文稿 → 类型选“应用” → 确定
新建文稿 → 类型选“应用” → 确定
Pasted image 20250804151308
添加运行 AppleScript 并添加文章末尾的脚本

3. 设定全局快捷键

我不喜欢装第三方软件,所以还是 Automator 本家搞定。

  1. Automator 再次新建 → 这次选“快速操作(Quick Action)
  2. 工作流接收:选“任何应用
  3. 在动作列表找到「启动应用程序」,拖到右边,指定刚才的 开启随航.app
  4. 保存,名字随意,比如 打开随航显示
Pasted image 20250804152343
记得把工作流的接收选项中要选中“在任意程序”
  1. 前往 系统设置 → 键盘 → 键盘快捷键 → “服务”
  2. 找到 打开随航显示,点右边添加快捷键,例如 ⌃⌥⌘M (Ctrl+Option+Cmd+M)
    记牢它,以后 Sidecar 失联就靠这招“妙手回春”。
Pasted image 20250804152228

4. 设为开机自启

系统设置 → 通用 → 登录项
/Applications/开启随航.app 拖进去,大功告成。
以后 Mac mini 一开机就会自动启动这个,如果iPad在附近则会自动连接,不在则什么事情也没有 没有显示器的情况可以通过Mac mini 自带的扬声器的声音提示知道是否连接成功(脚本内配置了音效提示)

5. 准备一块“空气显示器”——BetterDisplay

macOS 新版本会检测“你至少得有一块显示器”才能启动 Sidecar。
物理 HDMI 欺骗器当然最方便,不过没有的话我们也能虚拟一块。

  1. 安装 BetterDisplay(brew cask / dmg 随意)。
  2. 打开 → Overview → Create New Virtual Screen
  3. 尺寸随便,我选了 “iPad Pro 11 inch”。
  4. 创建后系统会出现一个新的显示器。
  5. 系统设置 → 显示器:
  • iPad 设为「主显示器」(拖动那条白色菜单栏到 iPad 上)。
  • 虚拟屏幕 勾成“镜像 iPad 屏幕”。
    这样就算 macOS 再怎么“查户口”,咱们手里永远有台显示器。
Pasted image 20250804153430

五、启动流程(以后每天都是这样)

  1. 把 iPad 摆在 Mac mini 旁边,保持蓝牙+Wi-Fi 开启。
  2. 按下 Mac mini 电源键。
  3. 等听见开机声,用蓝牙键盘盲输密码(或者直接设置自动登录,更懒)。
  4. 几秒后 iPad 自动亮起 Sidecar,Mac 桌面映入眼帘。
  5. 过程中若网络闪断,直接 ⌃⌥⌘S 重新召唤即可。

六、完整脚本(复制即用)

注意 1:把 Paxos的iPad 改成你自己的 iPad 名称。
注意 2:如果你的系统语言中文/英文/繁体中文,按行添加翻译关键字。

on findLastTargetIndex(targetItem, itemList)
    set lastIndex to 0
    repeat with i from (count of itemList) to 1 by -1
        if item i of itemList is targetItem then
            set lastIndex to i
            exit repeat
        end if
    end repeat
    return lastIndex
end findLastTargetIndex

-- 给自己来个提示音,知道脚本开始执行
do shell script "afplay /System/Library/Sounds/Pop.aiff"

tell application "System Settings"
    activate
    delay 1
    tell application "System Events"
        tell process "System Settings"
            -- 判断系统语言,以免多语言界面找不到按钮
            set systemLanguage to do shell script "defaults read -g AppleLocale"

            if systemLanguage starts with "zh" then
                if systemLanguage is "zh_CN" then
                    set menuItemName to "显示器"
                    set menuBarItemName to "显示"
                    set addButtonName to "添加"
                else -- 繁体
                    set menuItemName to "顯示器"
                    set menuBarItemName to "顯示方式"
                    set addButtonName to "加號"
                end if
            else if systemLanguage starts with "en" then
                set menuItemName to "Displays"
                set menuBarItemName to "View"
                set addButtonName to "Add"
            end if

            -- 打开“显示器”面板
            click menu item menuItemName of menu menuBarItemName of menu bar item menuBarItemName of menu bar 1
            delay 0.5

            -- 点右边的「添加」按钮
            tell group 1 of group 2 of splitter group 1 of group 1 of window menuItemName
                try
                    click pop up button addButtonName
                    set menuItems to name of menu items of menu addButtonName of pop up button addButtonName

                    -- 找到最后一个同名设备,防止和通用控制冲突
                    set targetIndex to (my findLastTargetIndex("Paxos的iPad", menuItems))
                    click menu item targetIndex of menu addButtonName of pop up button addButtonName
                    do shell script "afplay /System/Library/Sounds/Blow.aiff"
                on error
                    do shell script "afplay /System/Library/Sounds/Hero.aiff"
                end try
            end tell
        end tell
    end tell
end tell
delay 1
tell application "System Settings" to quit

七、结语

现在,你的 Mac mini 已经“原地长出”了一块 iPad 屏。
Mac mini 不带显示器出门办公,再也不是问题。
赶紧关掉这篇文章,背上包,去星巴克假装数字游民吧

愿折腾常在,Bug 远离。