🧪 一键自动化脚本 (Beta)
⚠️ 实验性功能
以下脚本旨在通过命令行自动化完成环境安装与配置。 由于系统环境(MacOS/Windows 版本、网络环境)的差异,脚本尚未经过大规模兼容性测试。 请在使用前阅读代码,并确保你了解脚本即将执行的操作。
我们为高级用户准备了 Shell (macOS) 和 PowerShell (Windows) 脚本,可一键完成以下任务:
- ✅ 自动安装 DeskFlow, LocalSend, BlackHole/SonoBus
- ✅ 自动修复 macOS 应用签名 (
xattr) - ✅ 自动生成包含键位映射的配置文件
- ✅ 自动引导打开防火墙或系统权限设置
🍎 macOS 一键配置脚本
此脚本会自动检测 Homebrew,安装软件,生成配置文件,并打开辅助功能设置页。
使用方法
- 打开终端 (Terminal)。
- 创建一个脚本文件并粘贴代码:bash
nano setup_mac.sh # 粘贴下方代码,然后按 Ctrl+O 保存,Ctrl+X 退出 - 赋予执行权限并运行:bash
chmod +x setup_mac.sh ./setup_mac.sh
脚本代码 (setup_deskbridge.sh)
点击展开查看 Shell 脚本代码
sh
#!/bin/bash
# ==========================================
# 🌉 Win-Mac DeskBridge 一键配置脚本
# 作者: AGI-FBHC Lab
# 描述: 自动安装 DeskFlow/BlackHole,生成键位映射配置,引导权限设置。
# ==========================================
# 定义颜色,让输出更好看
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${BLUE}=========================================${NC}"
echo -e "${BLUE} 🌉 Win-Mac DeskBridge Setup v1.0 ${NC}"
echo -e "${BLUE}=========================================${NC}"
# --- 1. 检查并安装 Homebrew ---
echo -e "\n${YELLOW}[1/5] 检查环境...${NC}"
if ! command -v brew &> /dev/null; then
echo -e "${RED}未检测到 Homebrew。${NC}"
echo "请先安装 Homebrew: /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
exit 1
else
echo -e "${GREEN}Homebrew 已安装。${NC}"
fi
# --- 2. 安装 DeskFlow 和 BlackHole ---
echo -e "\n${YELLOW}[2/5] 安装核心组件...${NC}"
# 安装 DeskFlow
if brew list deskflow &> /dev/null; then
echo -e "DeskFlow 已安装,跳过。"
else
echo "正在安装 DeskFlow..."
brew tap deskflow/homebrew-tap
brew install deskflow
fi
# 安装 BlackHole (音频驱动)
if brew list blackhole-2ch &> /dev/null; then
echo -e "BlackHole 已安装,跳过。"
else
echo "正在安装 BlackHole 2ch..."
brew install blackhole-2ch
echo -e "${GREEN}音频驱动安装完成(可能需要重启后生效)。${NC}"
fi
# --- 3. 自动修复应用权限 (xattr) ---
echo -e "\n${YELLOW}[3/5] 修复 DeskFlow 签名权限...${NC}"
APP_PATH="/Applications/DeskFlow.app"
if [ -d "$APP_PATH" ]; then
sudo xattr -cr "$APP_PATH"
echo -e "${GREEN}已移除隔离属性,防止'应用已损坏'报错。${NC}"
else
echo -e "${RED}警告: 未找到 $APP_PATH,请确认安装路径。${NC}"
fi
# --- 4. 生成完美配置文件 (.conf) ---
# 这是最爽的一步:直接生成带键位映射的配置,免去 GUI 手动配置的痛苦
echo -e "\n${YELLOW}[4/5] 生成智能配置文件...${NC}"
CONFIG_DIR="$HOME/Library/Deskflow"
CONFIG_FILE="$CONFIG_DIR/deskflow.conf"
mkdir -p "$CONFIG_DIR"
# 获取当前用户名作为主机名
MAC_HOSTNAME=$(scutil --get LocalHostName)
WIN_HOSTNAME="win-client" # 默认 Windows 名字
echo "正在生成配置文件到: $CONFIG_FILE"
cat > "$CONFIG_FILE" <<EOF
section: screens
$MAC_HOSTNAME:
# Mac 作为服务端
$WIN_HOSTNAME:
# Windows 作为客户端
# 键位映射魔法:把 Win 的 Ctrl 变成 Command (Super),把 Win 的 Win键 变成 Ctrl
ctrl = super
super = ctrl
end
section: aliases
end
section: links
$MAC_HOSTNAME:
# Windows 在 Mac 的右边 (如果不合适请手动改为 left)
right = $WIN_HOSTNAME
$WIN_HOSTNAME:
left = $MAC_HOSTNAME
end
section: options
relativeMouseMoves = false
screenSaverSync = false
win32KeepForeground = false
clipboardSharing = true
switchCorners = none
switchCornerSize = 0
end
EOF
echo -e "${GREEN}配置文件已生成!${NC}"
echo -e "默认设置:Mac 为主控,Windows 名为 '${YELLOW}$WIN_HOSTNAME${NC}',位于 Mac 右侧。"
echo -e "已应用键位映射:${BLUE}Ctrl -> Command, Win -> Ctrl${NC}"
# --- 5. 引导权限设置 ---
echo -e "\n${YELLOW}[5/5] 引导系统权限设置...${NC}"
echo -e "${RED}注意:由于 macOS 安全限制,脚本无法自动勾选权限。${NC}"
echo -e "即将打开系统设置,请手动开启 DeskFlow 的 ${YELLOW}[辅助功能]${NC} 和 ${YELLOW}[输入监控]${NC} 权限。"
read -p "按回车键打开系统设置..."
# 打开“隐私与安全性”面板
open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
echo -e "\n${GREEN}=== ✅ 配置脚本执行完毕 ===${NC}"
echo -e "下一步操作:"
echo -e "1. 在弹出的设置窗口中,允许 DeskFlow 控制电脑。"
echo -e "2. 打开 DeskFlow 软件。"
echo -e "3. 点击菜单栏 'File' -> 'Save Configuration As' -> 选择刚才生成的 $CONFIG_FILE (可选)"
echo -e " 或者直接在界面上把 Screen Name 改为 ${YELLOW}$MAC_HOSTNAME${NC} 即可。"
echo -e "4. 在 Windows 端 DeskFlow 输入 Screen Name: ${YELLOW}$WIN_HOSTNAME${NC}"(注:如果上方代码无法显示,请访问仓库目录 /scripts/setup_deskbridge.sh 查看)
🪟 Windows 一键配置脚本
此脚本利用 Winget 和 GitHub API 自动安装软件,配置防火墙规则,并引导音频设置。
使用方法
- 在桌面新建一个文本文档,重命名为
setup_win.ps1(注意后缀是.ps1)。 - 右键文件 -> 编辑,粘贴下方代码并保存。
- 右键文件 -> 选择 “使用 PowerShell 运行”。
- 如果提示无法运行脚本,请以管理员身份打开 PowerShell 并输入:powershell
Set-ExecutionPolicy RemoteSigned # 输入 Y 确认
脚本代码 (setup_deskbridge.ps1)
点击展开查看 PowerShell 脚本代码
ps1
<#
.SYNOPSIS
🌉 Win-Mac DeskBridge Windows 端一键配置脚本
.DESCRIPTION
自动安装 DeskFlow/LocalSend/SonoBus,配置防火墙规则,引导音频和SMB设置。
.NOTES
需要以管理员权限运行。
#>
Write-Host "=========================================" -ForegroundColor Cyan
Write-Host " 🌉 Win-Mac DeskBridge Windows Setup " -ForegroundColor Cyan
Write-Host "=========================================" -ForegroundColor Cyan
# --- 检查管理员权限 ---
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Warning "请以管理员身份运行此脚本!(右键 -> 使用 PowerShell 运行)"
Start-Sleep -Seconds 3
Exit
}
# --- 1. 使用 Winget 安装常用工具 (LocalSend, SonoBus) ---
Write-Host "`n[1/4] 正在检查并安装基础软件 (Winget)..." -ForegroundColor Yellow
$tools = @{
"LocalSend" = "LocalSend.LocalSend";
"SonoBus" = "SonoBus.SonoBus"
}
foreach ($name in $tools.Keys) {
$id = $tools[$name]
Write-Host "正在检查 $name..."
winget list -e $id | Out-Null
if ($LASTEXITCODE -ne 0) {
Write-Host "正在安装 $name..." -ForegroundColor Green
winget install --id $id -e --source winget --accept-package-agreements --accept-source-agreements
} else {
Write-Host "$name 已安装,跳过。" -ForegroundColor Gray
}
}
# --- 2. 手动下载并安装 DeskFlow (GitHub Releases) ---
# 因为 DeskFlow 较新,Winget 可能未收录,我们直接从 GitHub 抓取最新 msi
Write-Host "`n[2/4] 正在获取 DeskFlow 最新版本..." -ForegroundColor Yellow
$repo = "deskflow/deskflow"
$releasesUrl = "https://api.github.com/repos/$repo/releases/latest"
try {
# 获取最新版本的下载链接 (查找 windows-x86_64.msi)
$release = Invoke-RestMethod -Uri $releasesUrl
$asset = $release.assets | Where-Object { $_.name -match "windows-x86_64.msi$" } | Select-Object -First 1
if ($asset) {
$downloadUrl = $asset.browser_download_url
$outFile = "$env:TEMP\deskflow_installer.msi"
Write-Host "正在下载: $($asset.name)" -ForegroundColor Green
Invoke-WebRequest -Uri $downloadUrl -OutFile $outFile
Write-Host "正在静默安装 DeskFlow..." -ForegroundColor Green
# 启动 MSI 安装
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$outFile`" /quiet /norestart" -Wait
Write-Host "DeskFlow 安装完成!" -ForegroundColor Green
} else {
Write-Error "未找到 Windows 安装包,请手动下载。"
}
} catch {
Write-Error "下载失败: $_"
Write-Warning "请手动访问 https://github.com/deskflow/deskflow/releases 下载安装。"
}
# --- 3. 配置防火墙 (至关重要) ---
Write-Host "`n[3/4] 配置防火墙规则..." -ForegroundColor Yellow
$progPath = "C:\Program Files\DeskFlow\deskflow.exe" # 默认路径,根据实际情况可能需要调整
if (Test-Path $progPath) {
# 删除旧规则(如果有)
Remove-NetFirewallRule -DisplayName "DeskFlow Allowed" -ErrorAction SilentlyContinue
# 添加新规则:允许 DeskFlow 在专用和公用网络通信
New-NetFirewallRule -DisplayName "DeskFlow Allowed" -Direction Inbound -Program $progPath -Action Allow -Profile Any | Out-Null
Write-Host "防火墙规则已添加:允许 DeskFlow 通信。" -ForegroundColor Green
} else {
Write-Warning "未找到 DeskFlow 主程序,跳过防火墙配置。请手动允许 deskflow.exe 通过防火墙。"
}
# --- 4. 引导后续设置 ---
Write-Host "`n[4/4] 正在打开系统设置面板..." -ForegroundColor Yellow
# 打开声音录制面板 (方便设置 Line-In 侦听)
Write-Host "-> 打开声音录制面板 (请找到 '线路输入' -> 属性 -> 侦听)"
Start-Process "mmsys.cpl" -ArgumentList ",1"
# 打开映射网络驱动器向导
Write-Host "-> 打开映射网络驱动器向导 (请输入 Mac 的 SMB 地址)"
# 这是一个黑科技命令,直接唤起“映射网络驱动器”窗口
$objShell = New-Object -ComObject Shell.Application
$objShell.FileRun()
#以此提示用户输入 \\IP
Write-Host "`n=========================================" -ForegroundColor Green
Write-Host " ✅ Windows 端配置脚本执行完毕" -ForegroundColor Green
Write-Host "========================================="
Write-Host "下一步:"
Write-Host "1. 在刚才弹出的声音窗口中配置音频侦听。"
Write-Host "2. 打开桌面的 DeskFlow 图标,填入 Client 配置。"
Write-Host "3. 按 Win+R 输入 \\Mac-IP 访问文件。"
Start-Sleep -Seconds 5(注:如果上方代码无法显示,请访问仓库目录 /scripts/setup_deskbridge.ps1 查看)