- 0
- 0
- 0
- 0
- 0
About Shuffle Player
Shuffle Player is a minimal local music player for Ubuntu Touch, designed for workouts and other activities where playback should continue with very little interaction.
Version 0.1.5
Playback
- The main screen shows the selected folder, recursive track count, a large Play button, and the Shuffle switch.
- Tap the folder row to see All music and every discovered subfolder in a full-height folder list.
- Choose All music to play the complete Shuffle Player library root.
- Choose a subfolder to play only that folder and all of its child folders.
- Shuffle is enabled by default.
- Turn Shuffle off for path-ordered sequential playback.
- Repeat All is permanent: the queue wraps from the last track back to the first and continues indefinitely.
- Album art, song title, album, and the immediate parent folder of the playing track are shown while playing. Only the last folder level is displayed.
- Previous and Next controls are available on the activity display.
- The display stays awake during playback and the normal app screen becomes a dark activity display.
- Stopping requires a deliberate hold on Hold to stop, reducing accidental touches.
- The activity content can scroll on short/landscape screens while the Stop control remains fixed and reachable.
Album artwork
- First use a readable JPG/JPEG in the same folder as the playing track. cover.jpg, folder.jpg, front.jpg and album.jpg are preferred names; otherwise the first JPEG by name is used.
- If no folder JPEG exists, embedded ID3v2 APIC/PIC artwork is extracted directly from MP3 files.
- Qt Multimedia cover metadata is the final fallback for formats/backends that expose embedded art.
- If no artwork is found, the Shuffle Player logo is shown.
Local library and OpenStore confinement
Ubuntu Touch reserves direct phone-wide Music-folder access behind the music_files/music_files_read AppArmor policy groups. Shuffle Player deliberately does not request those reserved policies.
Instead, music is stored persistently in the app-private package-ID directory:
~/.local/share/shuffleplayer.barrydegraaff/Music
Use Library > Import music to select local audio through Ubuntu Touch Content Hub. Imported tracks are copied into the currently selected Shuffle Player folder. Create subfolders inside the app and import tracks into them as required. A capable file manager or developer shell can also populate the private Music directory directly; Refresh music rescans it.
Supported playback file types
Shuffle Player scans/imports: .mp3, .flac, .ogg, .oga, .opus, .wav, .m4a, .aac and .wma. Actual decoding depends on the codecs and GStreamer/Qt Multimedia support installed in the Ubuntu Touch image.
This approach uses only common AppArmor policy groups:
- audio
- keep-display-on
- content_exchange
- content_exchange_source
No unconfined mode, custom AppArmor rules, daemon, music_files, music_files_read, or other reserved policy group is used.
Phone migration
- Backup and restore is available from the top-right hamburger menu.
- Configuration is exported/imported as UTF-8 JSON through Content Hub.
- Light/dark mode, Shuffle, and the selected folder are included.
- Music files are not included in the configuration backup.
- Include credentials/secrets is optional and off by default.
- Shuffle Player currently stores no production credentials, API keys, tokens or other secrets, so exported backups report secretsIncluded: false.
- If a restored selected folder does not exist on the new phone, playback safely falls back to All music.
Persistent settings
Every setting change is written immediately using QSettings::setValue(...) followed by QSettings::sync(). Settings live below the package-ID configuration directory:
~/.config/shuffleplayer.barrydegraaff/shuffleplayer.conf
A clean shutdown is not required for settings durability.
Interface
- Version 0.1.5 adds the playing track's last-level folder to the activity display and makes Repeat All permanent so the active queue never ends normally.
- Native Qt/QML application for Ubuntu Touch 24.04 on arm64.
- Light and dark mode.
- Minimal main playback controls.
- Hamburger menu at the top right.
- Responsive portrait and landscape layouts.
- Scrollable forms and keyboard-aware field positioning.
- About dialog includes version 0.1.5.
Privacy
- No advertising.
- No analytics.
- No telemetry.
- No developer-operated cloud service.
- No network access requested.
- Music stays in the app-private local library unless the user explicitly manages files outside the app.
- Configuration leaves the app only when the user explicitly exports a backup.
This app was vibe coded using an AI. The source code is published for inspection and improvement.
Shuffle Player is released under MIT No Attribution, SPDX identifier MIT-0.
MIT No Attribution
Copyright 2026 Barry de Graaff
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Recent Changes
Permissions
- Audio
- Keep Display On
- Content Exchange
- Content Exchange Source
Community Built
This app has been released under the Public Domain license.It is developed in the open and you can review the source code.
Info
Published Date
Sep 2, 2026
Updated Date
Sep 2, 2026
Current Version
0.1.5
Total Downloads
53
Latest Version Downloads
53
Supported Architectures
arm64
Links
Source Code
Support
Donate
Reviews
No reviews yet!