1- ## Lyric For Musicfox
1+ # Lyric For Musicfox
22
33本程序基于细微修改后的[ go-musicfox] ( https://github.com/go-musicfox/go-musicfox ) 项目上,
44使得能够在Linux KDE Plasma6桌面上显示歌词。若您的设备运行着 Linux,则可以在设置界面中勾选上
@@ -7,14 +7,20 @@ Mpris 模式并保存,而免于运行打补丁的 musicfox。
77如果鼠标事件无法正常穿透则使用 ` -platform xcb ` 参数尝试启动,即 ` ./lyric-for-musicfox -platform xcb ` 。
88WINDOWS 下运行会出现无法移动窗口现象,需要改配置文件+反复开关歌词程序以确定位置。
99
10- ### 构建
10+ ## 构建
11+
12+ ### 利用 Github Action 构建
13+
14+ 直接 folk 一份仓库后,等待 action 跑完后可以在 action 下下载构建好的二进制包。
15+
16+ ### 自己动手构建
1117
1218前置需求:[ go-musicfox] ( https://github.com/go-musicfox/go-musicfox ) 项目所需需求以外还需要:
1319
1420* QT5 或 QT6
1521* libdbus-1 (仅Linux下构建才需要)
1622
17- ```
23+ ``` shell
1824clone https://github.com/SmileYik/lyric-for-musicfox.git
1925cd lyric-for-musicfox
2026cmake -S . -B build
2329```
2430
2531CMake 配置时可选编译打补丁的musicfox。
26- ```
32+
33+ ``` shell
2734cmake -S . -B build -DSKIP_BUILD_MUSICFOX=YES # 跳过构建 musicfox
2835cmake -S . -B build -DSKIP_BUILD_MUSICFOX=NO # 构建 musicfox
2936```
@@ -33,26 +40,38 @@ cmake -S . -B build -DSKIP_BUILD_MUSICFOX=NO # 构建 musicfox
3340可选修改歌词通信端口:打开 ` CMakeLists.txt ` 修改 ` CONFIG_PORT ` 为自己想要的通信端口后进行编译即可。
3441若编译过程中出现打补丁失败字样可以自行文本修改` musicfox.patch ` 中` ${CONFIG_PORT} ` 至想要的端口后手动打补丁编译。
3542
36- ### 运行模式
43+ ## 运行模式
44+
45+ 现有两种运行模式,一种需要运行修改后的 go-musicfox,另一种依赖于 mpris,并且从其中获取歌词。
3746
38- 现有两种运行模式,一种需要运行修改后的 go-musicfox,另一种依赖于 mpris,并且从其中获取歌词 。
47+ 但两种运行模式都有共同点,就是歌词程序会监听一个UDP端口,该UDP端口用于接收歌词与相关指令信息,之后在窗口中渲染出来 。
3948
40- #### 修改 go-musicfox 的运行模式
49+ ### 修改 go-musicfox 的运行模式
4150
4251该模式支持 Linux 及 Windows 平台。主要依赖于修改后的 go-musicfox 客户端。修改后的 go-musicfox 客户端在
4352更新歌词时,都会通过 UDP 协议,发送当前当句歌词信息给桌面歌词程序,然后桌面歌词程序再进行窗口渲染,将歌词文本
44- 渲染在窗口中。在该模式下,桌面歌词程序并不知道完整的歌词信息,仅知道当前时间下的单句歌词信息。
53+ 渲染在窗口中。在该模式下,桌面歌词程序并不知道完整的歌词信息,仅知道当前时间下的单句歌词文本信息。若歌词超过了
54+ 窗口的最大宽度,则需要进行滚动展示歌词,但是由于不知道当前歌词的持续的具体时间,所以需要依赖于 go-musicfox 发送
55+ 歌词的频率: 每多发一次相同歌词,就将当前显示的歌词滚动固定偏移量一次。
4556
4657大概工作流程为: 修改后的go-musicfox --发送歌词--> lyric-for-musicfox
4758
48- #### 依赖于 mpris 的运行模式
59+ ### 依赖于 mpris 的运行模式
60+
61+ 该模式仅支持 Linux, 可以在设定界面中启用设置,若您的设备为 Windows,则在编译时会自动剔除 mpris 相关的代码。
62+ 启用该模式后,桌面歌词会启用 mpris 控制器,从 mpris 中获取当前播放歌曲信息及完整的歌词信息,并模拟时间轴,推算
63+ 当前时间点应该显示的歌词,通过 UDP 报文发送至渲染端。相当于启动了一个新的控制器用于顶替修改后的 go-musicfox 客
64+ 户端功能。
65+
66+ 大概工作流程为:go-musicfox --更新歌词及播放状态--> mpris --获取信息--> lyric-for-musicfox 的 mpris 控制器 --发送歌词--> lyric-for-musicfox.
4967
50- 该模式仅支持 Linux, 可以在设定界面中启用设置。桌面歌词程序会从 mpris 中获取当前播放中的歌曲的完整歌词信息,
51- 并内置计时器计算当前时间下应该显示的歌词进行渲染, 从而不需要修改后的 musicfox。
68+ 对于 lyric-for-musicfox 的 mpris 控制器,可以单独运行,并指定歌词发送的目的地IP和目的地的端口。假如您正在使用
69+ termux 版本的 go-musicfox, 可以单独运行 mpris 控制器,将歌词发送至同一网络下的 PC 桌面设备,进行歌词渲染。
70+ 具体效果如下图:
5271
53- 大概工作流程为:go -musicfox --更新歌词及播放状态--> mpris --获取信息--> lyric-for-musicfox
72+ ![ termux -musicfox] ( ./docs/termux-1.png )
5473
55- ### 配置
74+ ## 配置
5675
5776![ setting window] ( ./docs/3.png )
5877
@@ -72,6 +91,6 @@ cmake -S . -B build -DSKIP_BUILD_MUSICFOX=NO # 构建 musicfox
7291取消勾选“Frame Less”复选框,以显示歌词窗口边框,此时对歌词窗口进行移位或调整窗口大小。当认为合适时,勾选上“Frame Less”复选框,
7392与此同时,按下“Save Self Position”按钮进行保存相关信息。之后直接不保存配置,并关闭设定窗口,到此设置完毕。
7493
75- ### 效果
94+ ## 效果
7695
7796![ 2] ( ./docs/2.png )
0 commit comments