[GH-ISSUE #223] Linux: Implement Double and Triple Tap Gestures for Media Control #101

Closed
opened 2026-03-02 12:03:29 +03:00 by kerem · 3 comments
Owner

Originally created by @xxmathias on GitHub (Oct 2, 2025).
Original GitHub issue: https://github.com/kavishdevar/librepods/issues/223

Currently there is lack of support for using double and triple tap gestures to control media playback on Linux (Next/Previous Track). This feature is already fully implemented on Android but missing on Linux.

Implementing this would significantly enhance the user experience, as these are standard gestures on many wireless earbuds.

Gesture Proposed Action
Double Tap Next Track
Triple Tap Previous Track

I would like to implement this feature.

Is this a feature the community and maintainers would like to see implemented?

Originally created by @xxmathias on GitHub (Oct 2, 2025). Original GitHub issue: https://github.com/kavishdevar/librepods/issues/223 Currently there is lack of support for using double and triple tap gestures to control media playback on Linux (Next/Previous Track). This feature is already fully implemented on Android but missing on Linux. Implementing this would significantly enhance the user experience, as these are standard gestures on many wireless earbuds. | Gesture | Proposed Action | | :--- | :--- | | **Double Tap** | **Next Track** | | **Triple Tap** | **Previous Track** | I would like to implement this feature. Is this a feature the community and maintainers would like to see implemented?
kerem closed this issue 2026-03-02 12:03:29 +03:00
Author
Owner

@kavishdevar commented on GitHub (Oct 2, 2025):

Running mpris-proxy fixes the problem for me. Could you give that a try?

It should work OOB, but doesn't for some reason. Apple doesn't use any proprietary software for that. It's standard AVRCP, and should work natively.

<!-- gh-comment-id:3361384993 --> @kavishdevar commented on GitHub (Oct 2, 2025): Running `mpris-proxy` fixes the problem for me. Could you give that a try? It should work OOB, but doesn't for some reason. Apple doesn't use any proprietary software for that. It's standard AVRCP, and should work natively.
Author
Owner

@xxmathias commented on GitHub (Oct 2, 2025):

Thanks for the suggestion! I tried mpris-proxy, but unfortunately it had the opposite effect on my system - the gestures stopped working entirely when it was running.

I'm using WirePlumber 0.5.11 with PipeWire 1.4.8, and it turns out mpris-proxy conflicts with WirePlumber's native AVRCP handling. The issue was that WirePlumber's dummy AVRCP player was disabled by default.

The fix was to enable it by creating ~/.config/wireplumber/wireplumber.conf.d/51-bluez-avrcp.conf:

monitor.bluez.properties = {
  # Enable dummy AVRCP player for proper media control support
  # This is required for AirPods and other devices to send play/pause/skip commands
  bluez5.dummy-avrcp-player = true
}

After restarting WirePlumber all gestures work perfectly.

It looks like the solution depends on the audio stack:

  • PulseAudio → needs mpris-proxy
  • PipeWire/WirePlumber → needs bluez5.dummy-avrcp-player = true (and mpris-proxy should be disabled)

Hope this helps anyone else running into the same issue on WirePlumber.
Can be closed i guess :)

<!-- gh-comment-id:3361568889 --> @xxmathias commented on GitHub (Oct 2, 2025): Thanks for the suggestion! I tried `mpris-proxy`, but unfortunately it had the opposite effect on my system - the gestures stopped working entirely when it was running. I'm using WirePlumber 0.5.11 with PipeWire 1.4.8, and it turns out `mpris-proxy` conflicts with WirePlumber's native AVRCP handling. The issue was that WirePlumber's dummy AVRCP player was disabled by default. The fix was to enable it by creating `~/.config/wireplumber/wireplumber.conf.d/51-bluez-avrcp.conf`: ```conf monitor.bluez.properties = { # Enable dummy AVRCP player for proper media control support # This is required for AirPods and other devices to send play/pause/skip commands bluez5.dummy-avrcp-player = true } ``` After restarting WirePlumber all gestures work perfectly. It looks like the solution depends on the audio stack: - PulseAudio → needs mpris-proxy - PipeWire/WirePlumber → needs bluez5.dummy-avrcp-player = true (and mpris-proxy should be disabled) Hope this helps anyone else running into the same issue on WirePlumber. Can be closed i guess :)
Author
Owner

@kavishdevar commented on GitHub (Oct 2, 2025):

thank you!

<!-- gh-comment-id:3361675942 --> @kavishdevar commented on GitHub (Oct 2, 2025): thank you!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/librepods#101
No description provided.