macOS多显示器+多网络一键切换需统一用“位置”管理网络、DisplayPlacer固化显示布局,并通过快捷指令或终端命令同步触发;全程基于系统原生能力与轻量工具,无需第三方后台服务。
在 macos 中实现多显示器 + 多网络环境的一键切换,关键不是分别配置两个功能再手动联动,而是把它们当作同一工作场景的两组状态——用“位置(location)”统一管理网络,用“displayplacer”脚本固化显示布局,再通过快捷指令或菜单栏工具触发两者同步切换。整套流程不依赖第三方后台服务,全部基于系统原生能力+轻量命令行工具。
一、为每个工作场景创建专属网络位置
网络位置是 macOS 原生支持的状态集,它不仅保存 Wi-Fi 名称和代理开关,还控制所有接口(以太网、蓝牙 PAN)的启用状态、IP 分配方式、DNS 服务器、服务顺序等。一个位置就代表一套完整的联网逻辑。
- 打开系统设置 → 网络 → 右上角 ⋯ → 编辑位置… → +,新建如“办公室”“家庭”“咖啡馆”等名称的位置
- 选中该位置后,在左侧服务列表中只勾选实际要用的接口(例如“办公室”勾选“以太网”,取消“Wi-Fi”;“咖啡馆”则反之)
- 点击对应接口右侧的详细信息… → TCP/IP,设为“手动”填入固定 IP(如需),或保留“使用 DHCP”;再进DNS页添加公司内网 DNS 或公共 DNS(如 223.5.5.5)
- 点左下角齿轮图标 →设定服务顺序…,把当前场景最优先的接口拖到顶部(比如办公室里以太网永远比 Wi-Fi 靠前)
二、用 DisplayPlacer 记录并复用每套显示器布局
macOS 自带的显示器排列设置无法随网络位置自动切换,但 DisplayPlacer 可以通过终端命令精确还原分辨率、缩放、旋转、相对坐标和主屏位置——且执行毫秒级完成,无闪烁或重排延迟。
- 先安装:
brew install displayplacer(需已装 Homebrew) - 连接好某套显示器(如办公室双屏),运行
displayplacer list查看各屏 ID 和当前参数 - 复制输出中类似这行内容(注意替换真实 ID):
id:ABC123 res:2560x1440 hz:60 origin:(0,0) degree:0 scaling:on - 新建脚本文件,例如
~/bin/office-display.sh,写入:#!/bin/bash<br>displayplacer "id:ABC123 res:2560x1440 hz:60 origin:(0,0) scaling:on" "id:DEF456 res:1920x1080 hz:60 origin:(2560,0) scaling:off"
- 赋予执行权限:
chmod +x ~/bin/office-display.sh
三、一键联动:网络位置 + 显示器布局同时切换
单点操作触发两项变更,避免漏切、错切或顺序颠倒。推荐两种稳定方案:
-
方案 A:用快捷指令 App 组合执行
新建快捷指令,添加两个操作:“运行 Shell 脚本”(路径填~/bin/office-display.sh)+ “运行快捷指令” → 搜索“更改位置”动作(系统自带),选择目标位置(如“办公室”)。保存后可添加到程序坞或用 Spotlight 快速唤起 -
方案 B:终端一行命令搞定
在终端输入:networksetup -switchlocation "办公室" && ~/bin/office-display.sh
可将其设为别名(如alias office='networksetup -switchlocation "办公室" && ~/bin/office-display.sh'),下次只需敲office即可
四、进阶提示:保持状态干净与快速验证
实际使用中容易忽略的细节,直接影响切换可靠性:
- 每个网络位置的服务顺序必须独立设置——不能只改 IP,忘了调接口优先级,否则可能连上 Wi-Fi 却走错网关
- DisplayPlacer 的
origin值必须严格匹配物理摆放(比如副屏在主屏右侧,origin 就得是(2560,0),不是(1920,0)),否则鼠标会卡边或丢失焦点 - 切换后快速验证:
scutil --nwi看当前默认路由走哪个接口;displayplacer list确认坐标和缩放是否生效 - 不需要时可导出位置配置:
sudo cp /Library/Preferences/SystemConfiguration/locations.plist ~/Desktop/locations-backup.plist,便于迁移或回滚


















