Skip to content

Add AirDeck plugin#1068

Open
matthieupoupin3704-alt wants to merge 1 commit into
SteamDeckHomebrew:mainfrom
matthieupoupin3704-alt:add/AirDeck
Open

Add AirDeck plugin#1068
matthieupoupin3704-alt wants to merge 1 commit into
SteamDeckHomebrew:mainfrom
matthieupoupin3704-alt:add/AirDeck

Conversation

@matthieupoupin3704-alt

@matthieupoupin3704-alt matthieupoupin3704-alt commented Jun 20, 2026

Copy link
Copy Markdown

Add AirDeck to Plugin Store

AirDeck is a Decky plugin that controls music playing from a paired phone over Bluetooth AVRCP directly from the Quick Access Menu.

Works with any app that exposes AVRCP: Apple Music, Spotify, SoundCloud, YouTube Music, etc. No extra software required on the phone/Steam Deck

Repository: https://github.com/matthieupoupin3704-alt/AirDeck

Features:

  • Play / Pause / Next / Previous
  • Shuffle and Repeat toggle
  • Album art fetched automatically (MusicBrainz + iTunes fallback)
  • Progress bar with real-time position (seeking to be featured)
  • Now playing toast notifications (configurable)
  • Redirects to Bluetooth settings if no device is connected

No similar plugin exists on the store. MusicControl (the closest) was delisted in 2024 and targeted MPRIS/Spotify on Linux, not Bluetooth AVRCP from a phone.

Task Checklist

Developer

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.
  • Generative AI was NOT used to write a majority of the code I am submitting.

Plugin

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or provides more/alternative functionality to a plugin already on the store.

Backend

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
  • No: I am using a custom binary that has all of it's dependencies statically linked.

Community

  • I have tested and left feedback on two other pull requests for new or updating plugins.
  • I have commented links to my testing report in this PR.

Testing

  • Tested by a third party on SteamOS Stable or Beta update channel.

@matthieupoupin3704-alt
matthieupoupin3704-alt requested a review from a team as a code owner June 20, 2026 16:41
@github-actions github-actions Bot added the plugin-addition Adding a plugin to the Plugin Store label Jun 20, 2026
@github-actions

Copy link
Copy Markdown

Issues Found

No issues with your PR description were found.

Next Steps

  1. If we found any issues above, please edit your pull request description to resolve them and leave a comment saying you've done so.
  2. For the quickest review, please see the Community section of the pull request template for how you can help other developers.
  3. Once your description is correct, a maintainer will review your pull request as soon as possible.

Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️

@matthieupoupin3704-alt

matthieupoupin3704-alt commented Jun 20, 2026

Copy link
Copy Markdown
Author

Tested gamescheap and DeckyOstMusic as part of the review process.

@github-actions

Copy link
Copy Markdown

This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy.

@BRiAn3274

Copy link
Copy Markdown

Plugin Testing Report

Plugin: AirDeck
PR: #1068
Tester: BRiAn3274
Device: Steam Deck OLED 512GB
SteamOS channel: Stable
SteamOS version: 3.8.11
Steam version: 1782533657
Decky Loader version: v3.2.6
Install method: Manually installed from PR build for testing

Test Environment

  • Steam Deck: Steam Deck OLED 512GB
  • Mode: Game Mode
  • SteamOS version: 3.8.11
  • Steam version: 1782533657
  • Decky Loader: v3.2.6
  • Installed plugins during this test:
    • AirDeck
    • Mixer
    • Decky Clash
    • KDEck
  • Paired device: phone over Bluetooth
  • Media source: phone music playback over Bluetooth

Summary

I tested AirDeck on a real Steam Deck OLED in Game Mode. The plugin installed successfully, appeared in Decky Loader, and was able to control music playback from a Bluetooth-paired phone.

The main playback controls worked correctly. Play / pause and track switching responded quickly during testing.

Installation

  • Installed AirDeck from the PR build.
  • The plugin appeared in the Decky quick access menu.
  • The plugin opened successfully.
  • No Decky Loader restart loop was observed.
  • No plugin load failure was observed.

Result: Pass

Bluetooth Pairing

  • Paired a phone with the Steam Deck over Bluetooth.
  • The phone was able to connect to the Steam Deck.
  • Music playback from the phone was available for AirDeck control.

Result: Pass

Playback Controls

Tested the following controls from the AirDeck plugin UI:

  • Play / pause
  • Next track
  • Previous track
  • Current track display while music was playing

The phone responded correctly to playback control commands from AirDeck. Track switching was responsive during testing.

Result: Pass

UI / Navigation

The main playback UI displayed correctly while music was playing, including album art, track information, progress, and playback controls.

Observed non-blocking UI issues:

  • Track change notifications appeared, but they were not always immediate.
  • The "Connect a device" button did not appear to support controller navigation properly in the disconnected state. I had to rely on touch input / non-controller interaction for that part.

Result: Minor issues found

Issues Found

No major blocking issues found.

Minor non-blocking issues:

  1. Track change notification timing is not always immediate.

    • Expected: notification appears shortly after switching tracks.
    • Actual: notification can appear with noticeable delay.
  2. The "Connect a device" button does not appear to be reachable through normal controller navigation.

    • Expected: the button should be focusable/selectable using Steam Deck controls.
    • Actual: controller navigation did not focus the button in my test.

Final Result

Pass with minor issues.

AirDeck worked correctly for the tested Bluetooth media control workflow on a real Steam Deck OLED. The main functionality is usable, and the issues found are UI/navigation polish issues rather than blocking functionality problems.
20260629124050_1
20260629124738_1

@BRiAn3274

Copy link
Copy Markdown

I am also submitting my own plugin, KDEck, here:

#1067

If you have time, I would appreciate a test report in return. KDEck focuses on KDE Connect-style clipboard and file transfer in Game Mode.

@BRiAn3274 BRiAn3274 mentioned this pull request Jun 29, 2026
8 tasks
@matthieupoupin3704-alt

matthieupoupin3704-alt commented Jun 29, 2026

Copy link
Copy Markdown
Author

Plugin Testing Report

Plugin: AirDeck PR: #1068 Tester: BRiAn3274 Device: Steam Deck OLED 512GB SteamOS channel: Stable SteamOS version: 3.8.11 Steam version: 1782533657 Decky Loader version: v3.2.6 Install method: Manually installed from PR build for testing

Test Environment

  • Steam Deck: Steam Deck OLED 512GB

  • Mode: Game Mode

  • SteamOS version: 3.8.11

  • Steam version: 1782533657

  • Decky Loader: v3.2.6

  • Installed plugins during this test:

    • AirDeck
    • Mixer
    • Decky Clash
    • KDEck
  • Paired device: phone over Bluetooth

  • Media source: phone music playback over Bluetooth

Summary

I tested AirDeck on a real Steam Deck OLED in Game Mode. The plugin installed successfully, appeared in Decky Loader, and was able to control music playback from a Bluetooth-paired phone.

The main playback controls worked correctly. Play / pause and track switching responded quickly during testing.

Installation

  • Installed AirDeck from the PR build.
  • The plugin appeared in the Decky quick access menu.
  • The plugin opened successfully.
  • No Decky Loader restart loop was observed.
  • No plugin load failure was observed.

Result: Pass

Bluetooth Pairing

  • Paired a phone with the Steam Deck over Bluetooth.
  • The phone was able to connect to the Steam Deck.
  • Music playback from the phone was available for AirDeck control.

Result: Pass

Playback Controls

Tested the following controls from the AirDeck plugin UI:

  • Play / pause
  • Next track
  • Previous track
  • Current track display while music was playing

The phone responded correctly to playback control commands from AirDeck. Track switching was responsive during testing.

Result: Pass

UI / Navigation

The main playback UI displayed correctly while music was playing, including album art, track information, progress, and playback controls.

Observed non-blocking UI issues:

  • Track change notifications appeared, but they were not always immediate.
  • The "Connect a device" button did not appear to support controller navigation properly in the disconnected state. I had to rely on touch input / non-controller interaction for that part.

Result: Minor issues found

Issues Found

No major blocking issues found.

Minor non-blocking issues:

  1. Track change notification timing is not always immediate.

    • Expected: notification appears shortly after switching tracks.
    • Actual: notification can appear with noticeable delay.
  2. The "Connect a device" button does not appear to be reachable through normal controller navigation.

    • Expected: the button should be focusable/selectable using Steam Deck controls.
    • Actual: controller navigation did not focus the button in my test.

Final Result

Pass with minor issues.

AirDeck worked correctly for the tested Bluetooth media control workflow on a real Steam Deck OLED. The main functionality is usable, and the issues found are UI/navigation polish issues rather than blocking functionality problems. 20260629124050_1 20260629124738_1

Hey @BRiAn3274, thanks a lot for the detailed test report.

Glad the core functionality works on OLED. Regarding the two issues:

  1. Notification timing: I reduced the polling interval from 1s to 500ms to catch track changes faster. Notifications should now appear more quickly after switching tracks. There may still be a small delay depending on how fast your phone reports the new track over Bluetooth, but it should be noticeably better.

  2. "Connect a device" button not reachable via controller: I honestly forgot to make the buttons controller-compatible lol. Fixed.

Thanks again for taking the time to test! I will make sure to test your plugin when I have enough time.

@github-actions github-actions Bot removed the stale label Jun 30, 2026
@BRiAn3274

Copy link
Copy Markdown

Thanks again for taking the time to test! I will make sure to test your plugin when I have enough time.

The changes sound good, especially making the buttons controller-compatible. I’ll try to retest the latest build on my OLED when I get a chance and will report back if I notice anything else.

And no rush on testing KDEck, only when you have time. Thanks!

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy.

@github-actions github-actions Bot added the stale label Jul 9, 2026
@matthieupoupin3704-alt

Copy link
Copy Markdown
Author

Community testing done: I've now left testing reports on two other plugin PRs:

Also pushed v0.2.0 in the meantime, which addresses the two points from @BRiAn3274's report, plus some other features and bug fixes.

@github-actions github-actions Bot removed the stale label Jul 15, 2026
@github-actions

Copy link
Copy Markdown

This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy.

@github-actions github-actions Bot added the stale label Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

plugin-addition Adding a plugin to the Plugin Store stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants