Skip to content

feat(lyrics): add SPlayer source#55

Merged
ItsLemmy merged 2 commits into
noctalia-dev:mainfrom
h465855hgg:update-lyrics-1.4.1
Jul 20, 2026
Merged

feat(lyrics): add SPlayer source#55
ItsLemmy merged 2 commits into
noctalia-dev:mainfrom
h465855hgg:update-lyrics-1.4.1

Conversation

@h465855hgg

@h465855hgg h465855hgg commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Plugin

  • Id: h465855hgg/lyrics
  • New plugin
  • Update to an existing plugin (version bumped in plugin.toml)

What it does

Updates Lyrics to version 1.4.1 and adds an SPlayer source that reads SPlayer current final lrcData/yrcData through its local API. The adapter preserves line and word timing, translations, romanization, background lines, and duet markers. It also detects pseudo word-timed LRC lines stretched to the next timestamp so instrumental cues remain visible.

External dependencies

  • playerctl: reads and controls MPRIS players.
  • python3: runs the unified lyric-source adapter and dynamic lyric parser.
  • cp: preserves local MPRIS artwork in the plugin cache.
  • chmod: secures the temporary request directory before credentials are written.
  • SPlayer local API: the new source reads the currently playing lyrics from SPlayer at the configurable splayer_api_url (default: http://127.0.0.1:25884). SPlayer must be running when this source is used.
  • Existing optional lyric providers make the network requests documented in lyrics/README.md.

The command dependencies are listed in lyrics/plugin.toml.

Testing

  • noctalia plugins lint lyrics (0 errors, 0 warnings)

  • python3 -m py_compile lyric_sources.py krc_decode.py lrclib_lyric.py

  • Live SPlayer lyric transmission test

  • Pseudo word-timing/interlude regression test

  • GitHub Actions Validate Plugin Manifests check

  • Tested on Niri

  • Tested on Hyprland

  • Tested on Sway

  • Tested on another compositor:

  • Noctalia version tested against: v5.0.0 (v5.0.0-beta.3-11-ga336b7d1b9d5)

  • Plugin API level: 3

Screenshots / Videos

This source update does not change the visual surface. Existing screenshots remain available in lyrics/screenshots, including the widget and settings.

Checklist

  • The directory name matches the part of id after the / in plugin.toml exactly.
  • It ships plugin.toml, README.md, thumbnail.webp, and translations/en.json.
  • README.md follows the README template, documents every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.
  • I created thumbnail.webp with the thumbnail generator. Existing thumbnail; generation method not verified for this update.
  • version follows semver and is bumped in this PR; plugin_api is the oldest API level this plugin requires.
  • Every non-English translation in this PR uses a locale supported by Noctalia core, and I can read, write, and understand that language well enough to review and maintain it (no unreviewed machine/LLM translations). No non-English translation files are changed by this PR.
  • I did not edit catalog.toml; CI generates it.
  • This PR touches exactly one plugin directory.

Code review attestation

Plugins run as trusted, unsandboxed Luau in the user session. Confirm:

  • The code is readable and not obfuscated, minified, or generated.
  • It does not download and execute remote code.
  • Every network call, filesystem write, and spawned process is something the description above accounts for.
  • I have the right to publish this code under the license declared in plugin.toml.

@ItsLemmy
ItsLemmy merged commit a079c8a into noctalia-dev:main Jul 20, 2026
1 check passed
@h465855hgg

Copy link
Copy Markdown
Contributor Author

Hi! Thanks for the i18n cleanup on lyrics.

One small nit from 77d7e64 (lyrics: new translations reorder): the settings.lyrics_sources.description string lost splayer from the listed source IDs.

Current:
lrclib, netease, qqmusic, kugou, ...

Expected (matches the default order / SPlayer source from this PR):
lrclib, netease, splayer, qqmusic, kugou, ...

Functionality is fine — only the settings help text is incomplete. Happy to open a one-line PR if preferred.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants