Repository navigation
DesktopFX v1.3.0
DesktopFX v1.3.0
修掉一批交互与音量的顽疾,并把控制面板改回普通窗口的行为。
点击音效:音量真正对所有音效生效
MCI 的 waveaudio 设备根本不支持 setaudio volume(实测发任何取值都返回
err 261),此前"只有气泡声和旅店铃声有音量"的真凶就在这里 —— 那两个是
mp3,走的是 mpegvideo 设备,0~1000 区间合法;而全部 wav 走 waveaudio,
音量命令直接被拒,滑块动了等于没动。
改用 waveOut 软件混音(ctypes 直接调 waveOut*,零新依赖):
wave读 16-bit PCM → numpy 乘音量系数 → 统一 44.1k 立体声后起播- 每条流一条句柄,多击仍可叠播;守护线程轮询
WHDR_DONE回收 - 解码失败 / 无音频设备 / 池满自动退回 MCI 兜底
- mp3/wma 维持原路径(区间实测合法)
同时新增音量滑块,默认 100% 即等于当前系统音量;「语音与文字统一」
挑中的那条语音也纳入同一支滑块。
点击文字 / 表情:控制面板上也能看到了
此前"命中配置面板就整块屏蔽点击",面板空白处也一并没了。改为三态判定:
- 桌面与其它程序 → 照常触发
- 面板的交互控件(按钮 / 滑块 / 侧栏导航)→ 抑制,
彻底避免"按下触发的旧音效"与"选择后的试听"叠成两声 - 面板其它区域 → 放行
控制面板:改成普通窗口
- 不再
-topmost、不再每秒抢顶层,点它正常获得焦点、正常被别的窗口盖住 - 双击托盘唤出时仍会临时置顶一次再立刻摘掉置顶位,保证出现在最前面
- 移除播放点击特效期间的面板观感切换 —— 那会让面板"点一下颜色变深、
播完又变回来" - 特效层是 topmost,天然显示在普通窗口之上,不再需要任何临时提层
已知遗留
配置面板标题栏(用于拖动窗口的那一条)仍会被判定为交互控件,
点它第一次有特效、第二次没有。三个修法已评估,待定。
验证
_run_all_verify --fast15/15 通过_verify_zorder新增 4 条不变量(提层让位 / 恢复 / 标志置位 / 自愈),25→29_verify_click79 项(含音量解码与语义、面板三态判定、试听接线)- 真机:7 个内置音效全部起播且句柄回收;面板点击特效 0.2~2.0s 稳定可见;
6 秒内抢顶归零 0 次;点击时面板颜色变化 0
资源
DesktopFX.exe:单文件打包(PyInstaller,含assets与内置音效)- 源码已同步至
main,标签v1.3.0