- Swift 100%
| CrossSoundClient.swift | ||
| CrossSoundPanel.swift | ||
| CrossSoundPlugin.swift | ||
| CrossSoundWidgetView.swift | ||
| README.md | ||
| widget.json | ||
CrossSound widget for DockDoor Pro
A DockDoor Pro dock widget that drives the CrossSound desktop app: cover art and transport in the dock, and a panel with a player, a playlist picker, a Discover picker and the live queue.
CrossSound/ is a drop-in widget folder for
ejbills/dockdoorpro-widgets □^^t widget.json` plus Swift sources, exactly the layout that repo expects. The
folder deliberately holds nothing else (their house style: no README, no scripts
inside a widget folder), which is why this file lives one level up.
How it talks to CrossSound
It does not touch SoundCloud, tokens or the keychain. CrossSound already serves a small HTTP API on the loopback interface for its companion integrations, and the widget is just another client of it:
| Widget action | Endpoint |
|---|---|
| Now playing, play state, like state, queue | GET /state |
| Cover art (proxied by CrossSound, never fetched from the internet) | GET /artwork |
| Play / pause, next, previous, like, shuffle, repeat | POST /playpause, /next, /previous, /like, /shuffle, /repeat |
| Scrub | POST /seek |
| Your playlists, and playing one | GET /playlists, POST /play-playlist |
| Discover shelves, and playing an item | GET /discover/mixed, POST /play |
| Jumping inside the queue | POST /play-index |
Ports are probed in order: 52124 (the Stream Deck bridge) then 8963 (the
Game Bar bridge). Set a specific port in the widget settings to skip probing.
State is polled on TimelineView ticks, so nothing runs while the widget is off
screen.
Playlists and Discover need CrossSound to be signed in; without it those endpoints answer 503 and the panel says so.
Build and install
On the Mac, with the widgets repo cloned:
cp -R /path/to/SCSC/dockdoor-widget/CrossSound dockdoorpro-widgets/Widgets/
cd dockdoorpro-widgets
bash scripts/build-widgets.sh Widgets/CrossSound
cp -r build/CrossSound.bundle ~/Library/Application\ Support/DockDoorPro/Widgets/
Restart DockDoor Pro and add CrossSound from the widget picker. Needs macOS
14+, Xcode 15+ and python3 (the build script parses widget.json with it).
Layouts
- Single slot □^`^t cover art, dimmed while paused, with a heart when the track is liked. Clicking the slot toggles playback.
- Double slot □^`^t art plus title and artist (configurable), stacked horizontally on a bottom/top dock and vertically on a left/right dock.
- Panel □^`^t long-press, right-click or hover-activate: art, title, artist, heart, scrubber, previous / play-pause / next, shuffle and repeat, then a Playlists / Discover / Queue picker.
Settings
| Setting | Default |
|---|---|
| Dock Text | Title and Artist |
| Show Album Art in the Dock | on |
| Show Heart When Liked | on |
| API Port | blank (auto) |