一个基于 Metal 着色器的 macOS 动态桌面背景应用,提供多种粒子效果和自适应性能优化。
-
🎨 多种视觉效果
- Noise Halo(噪声光环,默认)
- Liquid Tunnel(流体隧道)
- Particles in Gravity(粒子引力系统)
- Rotating Lorenz(旋转的 Lorenz 吸引子)
-
⚡️ 智能性能管理
- 根据桌面可见性自动调整更新频率
- 桌面可见时:30 FPS(高性能)
- 窗口遮挡时:10 FPS(低功耗)
- 每个效果都经过优化,即使在 5K 分辨率下也能流畅运行
-
🖥️ 多屏幕支持
- 自动适配所有连接的显示器
- 每个屏幕独立渲染,保持正确的纵横比
-
💫 GPU 加速
- 使用 Metal Compute Shader 进行粒子物理计算
- Fragment Shader 实现高效渲染
- Raymarching 技术实现 3D 效果
- macOS 15.6 或更高版本
- 支持 Metal 的 Mac 设备(2012 年后的大部分 Mac)
- Xcode 17.0 或更高版本(仅编译需要)
-
克隆仓库
git clone https://github.com/Triadica/shader-bg.git cd shader-bg -
打开项目
open shader-bg.xcodeproj
-
编译运行
- 在 Xcode 中选择
shader-bgscheme - 点击运行按钮(⌘R)或选择 Product > Run
- 或者使用命令行:
xcodebuild -project shader-bg.xcodeproj -scheme shader-bg -configuration Release build
- 在 Xcode 中选择
-
安装到应用程序文件夹(可选)
# 编译 Release 版本 xcodebuild -project shader-bg.xcodeproj -scheme shader-bg -configuration Release build # 复制到应用程序文件夹 cp -r ~/Library/Developer/Xcode/DerivedData/shader-bg-*/Build/Products/Release/shader-bg.app /Applications/
本项目提供了自动化构建脚本,可以快速生成 Release 版本和 DMG 安装包:
# 快速构建(仅生成 .app)
./scripts/quick-build.sh
# 完整构建(生成 .app 和 .dmg)
./scripts/build-release.sh详见 RELEASE_BUILD.md 了解构建系统的完整说明。
从 Releases 页面下载最新的 DMG 文件:
- 下载
shader-bg-vX.X.X.dmg.zip - 解压得到 DMG 文件
- 双击 DMG 挂载
- 拖放
shader-bg.app到应用程序文件夹
首次打开提示:如果遇到"无法打开,因为它来自身份不明的开发者",运行:
xattr -cr /Applications/shader-bg.app或右键点击应用,按住 Option 键,选择"打开"。
本项目原始工程(shader-bg.xcodeproj)面向 Xcode 17+ 与 macOS 15.6+。如果你暂时无法升级环境,可使用仓库内的兼容工程 shader-bg-xcode15.xcodeproj 在 Xcode 15 与 macOS 14.2+ 上本地构建与运行。
# 打开工程
open shader-bg-xcode15.xcodeproj
# 或命令行构建 Release 版本
xcodebuild -project shader-bg-xcode15.xcodeproj -scheme shader-bg -configuration Release build-
从应用程序文件夹(若已拷贝进去):
open -n -a "shader-bg" -
直接从 DerivedData 启动构建产物:
open "$(/usr/bin/find ~/Library/Developer/Xcode/DerivedData -path "*shader-bg-xcode15*/Build/Products/Release/shader-bg.app" -print -quit)"
- 该兼容工程将部署目标设置为 macOS 14.2,适配旧系统运行;
- 本地构建(开发调试)默认关闭代码签名与公证,仅用于本机使用;
- 功能与主工程保持一致;如需打包发布,建议使用主工程(Xcode 17+/macOS 15.6+)进行签名、公证与分发。
- 打开
shader-bg.app - 应用会在后台运行,菜单栏会出现 ✨ 图标
- 桌面会自动显示默认的粒子引力效果
如果你习惯用终端启动或刚从 Xcode 构建完成,可以用以下方式启动(默认 zsh):
-
已安装到应用程序文件夹:
open -n -a "shader-bg" -
刚用原始工程(适配 Xcode 17+/macOS 15)构建的 Release 包:
open "$(/usr/bin/find ~/Library/Developer/Xcode/DerivedData -path "*shader-bg*/Build/Products/Release/shader-bg.app" -print -quit)" -
如果你使用了兼容 Xcode 15 的辅助工程(本仓库提供的备用方案):
open "$(/usr/bin/find ~/Library/Developer/Xcode/DerivedData -path "*shader-bg-xcode15*/Build/Products/Release/shader-bg.app" -print -quit)"
提示:想要“重启”应用,可以先结束再启动:
pkill -x shader-bg || true
open -n -a "shader-bg"点击菜单栏的 ✨ 图标,可以:
- 显示/隐藏背景 - 快速切换背景显示
- 选择效果 - 在不同的视觉效果之间切换
- Particles in Gravity(粒子引力系统)
- Rotating Lorenz(旋转的 Lorenz 吸引子)
- 退出 - 关闭应用
⌘H- 隐藏/显示背景⌘Q- 退出应用
shader-bg/
├── Effects/ # 效果系统
│ ├── EffectProtocol.swift # 效果协议定义
│ ├── EffectManager.swift # 效果管理器
│ ├── ParticlesInGravity/ # 粒子引力效果
│ │ ├── ParticlesInGravityEffect.swift
│ │ ├── ParticlesInGravityRenderer.swift
│ │ ├── ParticlesInGravityShaders.metal
│ │ └── ParticlesInGravityData.swift
│ └── RotatingLorenz/ # Lorenz 吸引子效果
│ ├── RotatingLorenzEffect.swift
│ ├── RotatingLorenzRenderer.swift
│ ├── RotatingLorenzShaders.metal
│ └── RotatingLorenzData.swift
├── PerformanceManager.swift # 性能管理器
├── AppDelegate.swift # 应用委托
├── MetalView.swift # Metal 渲染视图
├── WallpaperWindow.swift # 壁纸窗口
└── WallpaperContentView.swift # 内容视图
-
粒子数量优化
- Particles in Gravity: 3000 粒子
- Rotating Lorenz: 2000 粒子
-
自适应更新频率
- 使用
CGWindowListCopyWindowInfoAPI 检测桌面遮挡 - 当遮挡超过 40% 屏幕面积时,降低更新频率
- 每 2 秒检测一次桌面可见性
- 使用
-
GPU 优化
- Metal Compute Shader 并行计算粒子物理
- 批量更新,减少 CPU-GPU 通信
- 自适应粒子大小,保持跨屏幕一致性
- 创建新的效果文件夹:
Effects/YourEffect/ - 实现
VisualEffect协议 - 创建对应的 Renderer、Shaders 和 Data 文件
- 在
EffectManager.swift中注册新效果 - 在
MetalView.swift的switchToEffect方法中添加 case
查看实时日志:
log stream --predicate 'subsystem == "com.cirru.bg.shader-bg"' --level debug或直接在 Xcode 控制台查看输出。
本项目使用 GitHub Actions 自动构建和发布。创建新版本的步骤:
# 1. 确保所有更改已提交
git add .
git commit -m "Release v1.0.0"
git push origin main
# 2. 创建并推送版本 tag
git tag v1.0.0
git push origin v1.0.0
# 3. 在 GitHub 上创建 Release(这会触发自动构建)
# 访问: https://github.com/YOUR_USERNAME/shader-bg/releases
# 点击 "Create a new release" → 选择 tag → 点击 "Publish release"
# 4. 等待 GitHub Actions 完成(约 5-10 分钟)
# 5. DMG 文件会自动上传到 Release 页面发布的文件包括:
shader-bg-vX.X.X.dmg- DMG 安装包(~1MB)shader-bg-vX.X.X.dmg.zip- 压缩的 DMG(更小)
详细说明请参考 GitHub Actions Release Workflow。
项目提供了两个构建脚本:
-
快速构建(测试用)
./scripts/quick-build.sh
生成 Release 版本的 .app,显示安装路径
-
完整构建(发布用)
./scripts/build-release.sh
生成 .app 和 DMG 安装包,保存到
release/目录
更多详情请查看 RELEASE_BUILD.md 和 scripts/README.md。
欢迎提交 Issue 和 Pull Request!
MIT License
- Metal 渲染框架
- Lorenz 吸引子数学模型
- macOS 窗口层级系统
A: 请检查:
- 应用是否正在运行(菜单栏有 ✨ 图标)
- 是否点击了"显示背景"
- 是否有其他应用全屏覆盖桌面
A: 应用针对性能进行了优化:
- 空闲时(桌面被遮挡):CPU < 5%, GPU < 10%
- 活跃时(桌面可见):CPU < 10%, GPU < 20%
- 使用智能检测避免不必要的渲染
A: 支持任意数量和分辨率的显示器,包括:
- 不同分辨率的多显示器
- 不同纵横比的显示器(16:9, 16:10, 21:9 等)
- Retina 和非 Retina 显示器混用
A:
- 点击菜单栏图标选择"退出"
- 将
shader-bg.app移到废纸篓 - 删除偏好设置(可选):
rm -rf ~/Library/Preferences/com.cirru.bg.shader-bg.plist
- GitHub Issues: https://github.com/Triadica/shader-bg/issues
- 作者: Triadica