diff --git a/.gitignore b/.gitignore index 0483327..f052ea6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .cache/** build/** musicfox-target-port.patch +.history/** diff --git a/CMakeLists.txt b/CMakeLists.txt index 216db19..d2cd0dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.5) -project(lyric-for-musicfox VERSION 0.1 LANGUAGES CXX) +project(lyric-for-musicfox VERSION 1.3 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) @@ -119,7 +119,7 @@ endif() # If you are developing for iOS or macOS you should consider setting an # explicit, fixed bundle identifier manually though. if(${QT_VERSION} VERSION_LESS 6.1.0) - set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.lyric-for-musicfox) + set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.lyric-for-musicfox) endif() set_target_properties(lyric-for-musicfox PROPERTIES ${BUNDLE_ID_OPTION} @@ -141,7 +141,6 @@ if(QT_VERSION_MAJOR EQUAL 6) if(UNIX) qt_finalize_executable(mpris-lyric-sender) endif() - endif() # 生成带有自定端口的补丁 diff --git a/README.MD b/README.MD index cf49001..415ce29 100644 --- a/README.MD +++ b/README.MD @@ -1,4 +1,4 @@ -## Lyric For Musicfox +# Lyric For Musicfox 本程序基于细微修改后的[go-musicfox](https://github.com/go-musicfox/go-musicfox)项目上, 使得能够在Linux KDE Plasma6桌面上显示歌词。若您的设备运行着 Linux,则可以在设置界面中勾选上 @@ -7,14 +7,20 @@ Mpris 模式并保存,而免于运行打补丁的 musicfox。 如果鼠标事件无法正常穿透则使用 `-platform xcb` 参数尝试启动,即 `./lyric-for-musicfox -platform xcb`。 WINDOWS 下运行会出现无法移动窗口现象,需要改配置文件+反复开关歌词程序以确定位置。 -### 构建 +## 构建 + +### 利用 Github Action 构建 + +直接 folk 一份仓库后,等待 action 跑完后可以在 action 下下载构建好的二进制包。 + +### 自己动手构建 前置需求:[go-musicfox](https://github.com/go-musicfox/go-musicfox)项目所需需求以外还需要: * QT5 或 QT6 * libdbus-1 (仅Linux下构建才需要) -``` +```shell clone https://github.com/SmileYik/lyric-for-musicfox.git cd lyric-for-musicfox cmake -S . -B build @@ -23,7 +29,8 @@ make ``` CMake 配置时可选编译打补丁的musicfox。 -``` + +```shell cmake -S . -B build -DSKIP_BUILD_MUSICFOX=YES # 跳过构建 musicfox cmake -S . -B build -DSKIP_BUILD_MUSICFOX=NO # 构建 musicfox ``` @@ -33,26 +40,38 @@ cmake -S . -B build -DSKIP_BUILD_MUSICFOX=NO # 构建 musicfox 可选修改歌词通信端口:打开 `CMakeLists.txt` 修改 `CONFIG_PORT` 为自己想要的通信端口后进行编译即可。 若编译过程中出现打补丁失败字样可以自行文本修改`musicfox.patch`中`${CONFIG_PORT}`至想要的端口后手动打补丁编译。 -### 运行模式 +## 运行模式 + +现有两种运行模式,一种需要运行修改后的 go-musicfox,另一种依赖于 mpris,并且从其中获取歌词。 -现有两种运行模式,一种需要运行修改后的 go-musicfox,另一种依赖于 mpris,并且从其中获取歌词。 +但两种运行模式都有共同点,就是歌词程序会监听一个UDP端口,该UDP端口用于接收歌词与相关指令信息,之后在窗口中渲染出来。 -#### 修改 go-musicfox 的运行模式 +### 修改 go-musicfox 的运行模式 该模式支持 Linux 及 Windows 平台。主要依赖于修改后的 go-musicfox 客户端。修改后的 go-musicfox 客户端在 更新歌词时,都会通过 UDP 协议,发送当前当句歌词信息给桌面歌词程序,然后桌面歌词程序再进行窗口渲染,将歌词文本 -渲染在窗口中。在该模式下,桌面歌词程序并不知道完整的歌词信息,仅知道当前时间下的单句歌词信息。 +渲染在窗口中。在该模式下,桌面歌词程序并不知道完整的歌词信息,仅知道当前时间下的单句歌词文本信息。若歌词超过了 +窗口的最大宽度,则需要进行滚动展示歌词,但是由于不知道当前歌词的持续的具体时间,所以需要依赖于 go-musicfox 发送 +歌词的频率: 每多发一次相同歌词,就将当前显示的歌词滚动固定偏移量一次。 大概工作流程为: 修改后的go-musicfox --发送歌词--> lyric-for-musicfox -#### 依赖于 mpris 的运行模式 +### 依赖于 mpris 的运行模式 + +该模式仅支持 Linux, 可以在设定界面中启用设置,若您的设备为 Windows,则在编译时会自动剔除 mpris 相关的代码。 +启用该模式后,桌面歌词会启用 mpris 控制器,从 mpris 中获取当前播放歌曲信息及完整的歌词信息,并模拟时间轴,推算 +当前时间点应该显示的歌词,通过 UDP 报文发送至渲染端。相当于启动了一个新的控制器用于顶替修改后的 go-musicfox 客 +户端功能。 + +大概工作流程为:go-musicfox --更新歌词及播放状态--> mpris --获取信息--> lyric-for-musicfox 的 mpris 控制器 --发送歌词--> lyric-for-musicfox. -该模式仅支持 Linux, 可以在设定界面中启用设置。桌面歌词程序会从 mpris 中获取当前播放中的歌曲的完整歌词信息, -并内置计时器计算当前时间下应该显示的歌词进行渲染, 从而不需要修改后的 musicfox。 +对于 lyric-for-musicfox 的 mpris 控制器,可以单独运行,并指定歌词发送的目的地IP和目的地的端口。假如您正在使用 + termux 版本的 go-musicfox, 可以单独运行 mpris 控制器,将歌词发送至同一网络下的 PC 桌面设备,进行歌词渲染。 +具体效果如下图: -大概工作流程为:go-musicfox --更新歌词及播放状态--> mpris --获取信息--> lyric-for-musicfox +![termux-musicfox](./docs/termux-1.png) -### 配置 +## 配置 ![setting window](./docs/3.png) @@ -72,6 +91,6 @@ cmake -S . -B build -DSKIP_BUILD_MUSICFOX=NO # 构建 musicfox 取消勾选“Frame Less”复选框,以显示歌词窗口边框,此时对歌词窗口进行移位或调整窗口大小。当认为合适时,勾选上“Frame Less”复选框, 与此同时,按下“Save Self Position”按钮进行保存相关信息。之后直接不保存配置,并关闭设定窗口,到此设置完毕。 -### 效果 +## 效果 ![2](./docs/2.png) diff --git a/docs/2.png b/docs/2.png index 08e74df..ec8f6a0 100644 Binary files a/docs/2.png and b/docs/2.png differ diff --git a/docs/termux-1.png b/docs/termux-1.png new file mode 100644 index 0000000..ffd7bc8 Binary files /dev/null and b/docs/termux-1.png differ