之前在 内存文件系统与云盘音乐 这个帖子分享了我使用 rclone 将云盘中的歌映射到本地并使用本地播放器进行播放的过程
其中有提到一个 kde 的挂件,用来在 kde 的面板上实时显示当前的歌词
很喜欢这类工具,它不像更多的桌面歌词工具,覆盖在正常内容之上,而是充份利用没有被使用的空间。在 windows 上我使用过可以在任务栏显示歌词的软件,一时差点成为我转向 linux 的最大阻力。
在 kde 上,这个功能有很多现成的工具,我使用了 lyrica
后来折腾别的桌面环境,不能用 lyrica 了,需要自己写 waybar 的脚本
在 chatgpt, grok, gemini, deepseek 等大佬的帮助下,我最终写出了一个 python 脚本,大体的思路是,通过 mpris 来获取当前播放的歌的信息,播放进度,甚至完整歌词,然后输出当前进度下的单句歌词到标准输出。
后来还是回到了 kde ,但是发现我用的脚本能够给出更低的延迟和更灵活的处理,所以换掉了 lyrica。具体的做法是,让脚本将当前的歌词每隔1ms写入到一命名管道中,然后在 kde 面板中使用 这个挂件,它的作用是将指定命令的输出显示出来。对它的设置是每隔10ms执行一次 cat 命令,这样就可以显示当前的歌词了,时间精度10ms。
再后来,我想到了这样一个可能性。这个脚本可以通过 mpris 获取歌曲名和歌手名,播放进度。而 kdeconnect 是支持这些的。
也就是说,可以这样玩:在手机上进行播放,通过蓝牙在电脑上输出音频,通过 kdeconnect 在电脑上进行进度控制,并显示我自己编辑的歌词
而后和 waylyrics 的作者反溃,这是一个可以在 linux 桌面上显示歌词的独立软件,它现在可以通过向 dbus 接口写入文本来进行显示自定义的歌词。而我也在我的脚本中加入了相关的机制,现在在运行一些全屏游戏时可以使用 waylyrics 进行歌词的显示,效果像是这样