Add soundcore-buds plugin - #686
Merged
Merged
Conversation
Contributor
|
That's nice |
Contributor
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin
sankity/soundcore-budsplugin.toml)What it does
Soundcore battery, listening mode and ANC strength in the Noctalia bar, powered by OpenSCQ30. Bar widget (
soundcore) shows buds outline plus lowest battery; left click opens the panel (panel), right click cycles the listening mode via the service (service) without opening anything. The panel exposes battery, listening modes + ANC sub-modes, touch controls, sound/device settings and a Find-my-buds locating tone — all capability-driven, so unsupported controls stay hidden per model. Tested against Soundcore R60i NC (D1202C).plugin_api = 24: youngest capability used is the argument-array form ofnoctalia.runAsync()(every call site passes an argv table). Nothing above level 24 is used ([widget.actions]= 14,capture_keys= 13,noctalia.nowMs()= 12). Levels 24–28 all map to the same Noctalia release, so 24 is the oldest level this plugin requires.External dependencies
openscq30— device query/control (all Soundcore communication goes through it)bluetoothctl— discovery and connection statebusctl— pause/resume MPRIS players while the Find tone playspactl— sink selection, volume/mute save, boost and restorepaplay(orpw-play) — play the locating tonepython3— synthesize the 20 s locating WAV locally via heredoc (no download)bash— run the shippedhelpers/find.shAll seven are listed in
dependenciesinplugin.tomland documented under Requirements inREADME.md.Testing
Opened the widget on the bar, opened the panel via left click and via
noctalia msg panel-toggle sankity/soundcore-buds:panel, cycled modes via right click and vianoctalia msg plugin sankity/soundcore-buds:service all cycle-noise, exercisedrefresh,find-left/find-right/stop-find, and toggled the widget settings (hide_when_disconnected,icon) plus plugin settings (openscq30_path,poll_interval).Screenshots / Videos
Checklist
idafter the/inplugin.tomlexactly.plugin.toml,README.md,thumbnail.webp, andtranslations/en.json.README.mdfollows theREADME template, documents
every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.
thumbnail.webpis present and relevant; for a new plugin I created it with the thumbnail generator, and for an update I regenerated it with the generator if the visual identity or user-facing appearance changed.versionfollows semver and is bumped in this PR;plugin_apiis the oldest API level this plugin requires.understand that language well enough to review and maintain it (no unreviewed machine/LLM translations).
catalog.toml; CI generates it.Code review attestation
licensedeclared inplugin.toml.