Skip to content
MEKCCK edited this page Aug 15, 2026 · 3 revisions

pulse-ring Wiki

Wayland 壁纸层上的音乐律动可视化 —— GPU 渲染 + QML 配置 + Lua 插件

目录

特性总览

功能 说明
多重圆环 外环(频段律动)/ 中环(整体能量)/ 内环(低频 bass)
形状系统 ring / square / diamond / hexagon / triangle / star / flower,支持旋转、虚线
星环效果 连续半透明环带 + 密集粒子环绕
粒子系统 burst / orbit / ring 三种模式,重力/阻力/淡入/闪烁/波动/自旋/拖尾
Widgets 时钟(数字/指针)、图片、圆环、条形频谱、专辑封面,自由放置
专辑封面 MPRIS 实时读取当前播放歌曲封面,居中裁切方形 + 随乐伸缩
歌词 本地 LRC / QQ音乐 / Lrclib 在线获取,行级点亮高亮 + 上一/下一行
壁纸引擎 静态图片 / GStreamer 视频壁纸 / 多壁纸轮播,50+ GLSL 切换动画
条形频谱 经典均衡器效果,支持镜像、频段选择
Lua 插件 动态增删 widget、运行时改配置、自定义频段算法
启动动画 expand 展开,多种缓动(outCubic/outBack/elastic/bounce)
多显示器 每台显示器独立渲染
音频 PipeWire 监听默认输出 monitor(自动跟随耳机/音箱切换),实时 FFT

架构

┌─────────────────────────────────────────────┐
│  Lua 脚本层(可选)                          │
│  onUpdate / transformBands / pulse.* API    │
└──────────────┬──────────────────────────────┘
               │ 每帧调用
┌──────────────▼──────────────────────────────┐
│  Rust 内核                                  │
│  ├─ 音频:PipeWire monitor → FFT → 128 频段  │
│  ├─ 配置:QML 解析 → Config                 │
│  ├─ 渲染:wgpu (Vulkan) → wl-layer-shell    │
│  ├─ 壁纸:图片/视频/轮播 + 50 种 GLSL 过渡  │
│  └─ Widgets:时钟/图片/封面/条形/圆环/歌词   │
└─────────────────────────────────────────────┘

技术栈

  • 语言:Rust + Lua(mlua)
  • 渲染:wgpu 30(Vulkan 后端),全矢量 SDF + 抗锯齿
  • 合成器接口:smithay-client-toolkit(wlr-layer-shell)
  • 音频:cpal + realfft,PipeWire monitor 捕获
  • 配置:自定义 QML 子集解析器
  • 字体:rusttype(Noto Sans,3x 超采样)
  • 图片:image crate(PNG/JPEG)
  • 音乐:playerctl/MPRIS

Clone this wiki locally