Conversation
91f5884 to
5e5b428
Compare
should probably have an indication when not connected
tbh, I did not want to get results right away; batching would have been fine. But, BlueR seems to give the first scan result only after 10s if I set sampling period.
* build: 👷 add nix flake * chore: 🙈 add nix's result to gitignore
|
Thanks for the great work here! I was just missing a couple features that I needed:
So I added those here in this fork https://github.com/Chrisbattarbee/librepods with some instructions on how to set it up with nixOS Just leaving this here incase some others had the same needs |
Wrap set_card_profile_sync call in std::panic::catch_unwind to handle panics in libpulse-binding when deactivating A2DP profile.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
@YuseiRun you are running the old version, not this rewrite. Please limit the comments here to the rewrite. |
…ort (#469) * feat: add stem press track control and headless mode support - Parse STEM_PRESS packets and emit AACPEvent::StemPress with press type and bud side - Enable double/triple tap detection on init via StemConfig control command (0x06) - Double press → next track, triple press → previous track via MPRIS D-Bus - Add next_track() and previous_track() to MediaController - Add --no-tray flag for headless operation without a GUI - Replace unwrap() on ui_tx.send() calls with graceful warn! logging (vibecoded) * Update main.rs * feat: make stem press track control optional with GUI toggle Add a --no-stem-control CLI flag and a toggle in the Settings tab for environments that handle AirPods AVRCP commands natively (e.g. via BlueZ/PipeWire). The feature remains enabled by default. - Load stem_control from app settings JSON on startup; --no-stem-control overrides it to false regardless of the saved value - Share an Arc<AtomicBool> between the async backend and the GUI thread; AirPodsDevice holds the Arc directly so the event loop reads the live value on every stem press — toggle takes effect immediately without reconnecting - Persist stem_control to settings JSON alongside theme and tray_text_mode - Add a "Controls" section to the Settings tab with a toggler labelled "Stem press track control", with a subtitle explaining the AVRCP conflict scenario - Fix StemConfig bitmask comment to clarify it uses a separate numbering scheme from the StemPressType event enum values (0x05–0x08)
|
thanks so much for the continued work on this! one minor issue I'd like to report is missing the case battery percentage, using AirPods Pro 3.
More importantly, in my opinion, is that conversation awareness doesn't take into account when you're in a call, so when the microphone is in use. This causes for the conversation awareness to trigger and lower the volume of the call. I think if there's a way to check an ongoing microphone use, conversation awareness shouldn't lower the volume. The workaround is manually disabling this feature and re-enabling it as needed. I'm using latest artifact from 2f1208c. |
|
@randshell the battery is only shown when one of the AirPods are in the case. From your screenshot, I believe none of the AirPods are charging. Thanks for the suggestion about the conversational awareness. I'll implement it when get the time. |
Yes, your assumption is correct.
If it helps, I remember that |
|
I have noticed that the app forces Airpods Pro 3 to SBC-XQ is this intended behaviour and if so why? |
I can reproduce this. |
|
The app handles the audio profiles to route all audio properly based on if the AirPods are worn. And the app also activates/deactivates the profile when some other device connected to AirPods plays audio. It is specifically SBC-XQ because I remember reading somewhere it better than AAC, but I can add an option in the settings to pick which codec to use. For using headset profile- as long as no media starts playing (anything that creates a MPRIS service) when you manually switch to HSP/HFP, the app will not switch to A2DP. |
|
SBC-XQ does indeed have higher quality than AAC. Under most circumstances it is the best choice, but can reduce battery life slightly. If librepods could record what A2DP profile is set by the user on the Pulse/PW side and use that, that'd work and be transparent. I understand that's more complicated to implement than a static default though. |
omg, this 100%. I've quit LibrePods-rust and changed from SBC-XQ to AAC and the link now is more stable when I'm out of the room, and the breaks in the audio are considerably less. It's just more useable overall like this. |
I use AAC preferably that should be also native for AirPods i think but i agree with what @Ari-43 said it would be great if it could get the A2DP profile from system settings. |
I think SBC-XQ is still a fairly sensible default for most users as long as there is some way to choose other codecs. If it is not possible to have LibrePods remember what the user sets in PulseAudio/PipeWire--the most transparent solution--then an option in LibrePods would suffice. |


not sure if this is gonna stay in this repo (reason below)
So, the current Qt app wasn’t really as updated as the Android app- the maintainer didn’t have time, and it was too different from the Android implementation for me to easily port new stuff.
This new app is built in Rust, using the iced library, and borrowing the AACP and ATT implementation from the Android app. This app also has a much better UI, and now isn’t just limited to AirPods! The AirPods basic implementation like ear detection and conversational awareness is already in place, along with battery and changing ANC mode.
To-Do List
UI message channel closed)Nothingwill work on this after airpods so it can be merged firstParse notificationsRead battery status from bluez (or something else- it's not sent over ATT)