ZX-Next-Unite
Cross-platform (Windows, Linux, macOS) desktop app for ZX Spectrum Next users. It unites two great tools — Hdfm-Gooey and NextSync — in a single GUI, and adds a built-in browser to discover ZX Spectrum / Spectrum Next software across GetIt, ZXDB/ZXInfo, zxArt and itch.io.
By Julien Clauzel, based on HDFM-GOOEY by em00k and NextSync by Jari Komppa (with the Sync4 extensions by Julien Clauzel).
Co-developed with the assistance of Claude (Anthropic's AI).
The main tabs, in Retro mode: SD Card Utility · NextSync (classic sync, then the Remote Explorer) · GetIt · ZXArt.ee · ZXDB/ZXInfo.dk · Unite! · Alien Floyd's. Every tab is documented in the User Manual.
Showcase
The Remote Explorer, live — a real Spectrum Next's SD card browsed over
Wi-Fi from the app (the Next runs .sync5 -l or -L): full two-pane file
management, both directions, remote zip/unzip included.
Meet Wizzy — the built-in onboarding wizard tours every tab, offers
in-depth guides for the SD Card and NextSync tools, speaks seven languages
(switching live with the app language), tells Speccy jokes, offers to put
the .sync5 dot into a freshly loaded disk image, has a friendly word about
ZX Next Remote — the companion app
on the Next itself, files both ways over Wi-Fi and even Next to Next — and
walks like an Egyptian:
The SD Card Utility in the dark "Next" chrome — PC on the left, the mounted NextZXOS image on the right, drag & drop and clipboard both ways, emulator launch buttons below:
Features
- SD Card tab — mount an HDF image, copy files in/out with a built-in explorer, then launch CSpect or MAME directly. No emulator command lines to remember.
- NextSync tab — push files over Wi-Fi from your PC to a real Spectrum Next
(KS1/KS2 or clones with an ESP module) using the
.sync5dot command. - ⭐ Remote Explorer — a two-pane file manager for your Next's real
filesystem over Wi-Fi: browse, drag & drop, upload/download and manage files
(new folder, delete) directly — no SD-card swapping. Run
.sync5 -listen(short:-lor-L) on the Next to connect, and launch the app with the-start-remote-explorer-listenerswitch to have the listen server running from startup with no clicks. See the Wiki. - ⭐
.sync5deployed into your disk image for you — emulator users need the Next-side half of NextSync, the.sync5dot command, in the image's/dotfolder before the Remote Explorer can talk to the emulated Next. When an image is loaded on the SD Card tab and/dothas no.sync5(or an older build than this version ships), the app offers to download the latest from GitHub and put it there — Wizzy asks when the wizard is on, a 15-second toast otherwise — reads it back to check its version banner, and stays quiet for a current or newer dot, or an image an emulator is holding. Settings → "Auto update and deploy .sync5 command in an .img file" (on by default) switches the offer off. - ⭐ Remote self-update over the wire — a running
.sync5dot (v5.9+) or ZX Next Remote.nex(1.0.3+) is updated over its own live-listensession — no card pulling: the new build is staged, verified against the CRC-32 the Next computes of it (read back and byte-compared on builds that predate the crc op), then swapped in place, and the previous build always stays on the card as<name>.bakfor an instant revert. A ZX Next Remote package that ships adeploypak.txtbeside its.nex(one file or folder per line — its.nximenus,.sprsprite banks, whole folders sent recursively) has those sent to the same folder on the Next first, each checked against the Next's CRC-32 and re-sent up to three times, before the build itself is swapped — they are written in place, so the.bakrevert does not cover them. The package's other flavour (n2n⇄httpbridge) travels the same way ahead of the swap, so both.nexfiles on the card stay in step (a package missing the other flavour is refused; the console'sforcepushes the one build without it). Driven from the Remote Explorer (an "Update to x.y.z" link appears when the connected build is older), from the itch.io tab's Send via NextSync on the ZX Next Remote item, or from thenextsync5console. Both in-app doors now open a build picker listing every version installed on this PC, newest selected: you can re-flash the running build to repair a bad copy, or deliberately roll back to an older one (each asks first). From the itch.io tab, a Next that is not running ZX Next Remote instead gets a plain copy of the package — both.nexand everydeploypak.txtfile — landing directly in a folder you name, no sub-folders. CLI examples and the manifest format in the z88dk README, full story on the NextSync wiki page. - ⭐ HTTP bridge — remote access to a Next's file system over plain HTTP:
a built-in web server (Flask) republishes the Remote Explorer's
-listensession as HTTP routes, so you can browse, download, upload and manage the Next's SD card from a browser,curl— or from another Next using the built-in.httpdot command. Enable it in the Settings tab (the port — 80 by default — is set in the box next to the toggle). See the HTTP bridge documentation. - ⭐ PowerShell module (
ZxNextRemote) — drive a connected Next's SD card from a script or a prompt, with no HTTP call in sight: list the seated machines,Ls/Get/Put/Ren/Rcpy, andVerifyan upload against the CRC-32 the Next computes of it (Crc/VerifyCrc; the size + checksum read-back stays as the fallback for older listeners). Runs on Windows PowerShell 5.1 and PowerShell 7 (macOS/Linux included), with typed errors that tell the bridge's two different 401s apart — a wrong bearer token vs a write the remote machine's OS protection refused. It powersPS-Send-ToNext.ps1, a build → push → verify → run-on-hardware loop bound toCtrl+Shift+Bin VS Code. See the PowerShell helper guide, and SampleNex for a ready-made demo project you can clone and push to your Next in one key. - Online libraries — search and download from GetIt, ZXDB/ZXInfo, zxArt and (optionally) itch.io.
- 🎁 Starter pack — one click on the GetIt tab fills your SD image with
20 hand-picked modern homebrew titles from the freely-distributable GetIt
catalogue, each in its own folder under
/games/StarterPack— exactly what a new Next owner wants on day one, rights-clean by construction.
Quick start
Windows: download the latest zx-next-unite-v9.x.x.exe from the
Releases page — no Python needed.
Linux (x86_64): download zx-next-unite-v9.x.x-linux-x86_64.tar.gz from the
same page, extract it and run the binary inside. A Flatpak package is also
available: grab zx-next-unite.flatpak from the
flatpak workflow artifacts and
flatpak install --user zx-next-unite.flatpak (see flatpak/ for
details and the Flathub roadmap).
macOS (Apple Silicon): download zx-next-unite-v9.x.x-macos-arm64.zip,
extract it and start the app. The app is not code-signed, so the first launch
needs right-click → Open (or xattr -cr on the .app) to get past Gatekeeper.
All three packages are built by CI from the tagged source (release workflow), and the app's built-in update check offers the right package for your platform when a newer release is published.
Via pipx (any platform, from PyPI):
pipx install "zx-next-unite[full]"
installs the zx-next-unite command (plus the nextsync5 command-line sync
server) in its own isolated environment — one line, no repo checkout. Drop
[full] to skip the optional extras (retro pygame views, itch.io tab,
Recycle-Bin deletes, HTTP bridge).
From source (any platform):
git clone https://github.com/jclauzel/ZX-Next-Unite
cd ZX-Next-Unite
python -m pip install -r REQUIREMENTS.txt
python zx-next-unite.py
Requires Python 3.10 or newer (the stock Python of Ubuntu 22.04 / Debian
12 and later works out of the box; CI runs the test suite on 3.10 and 3.13).
Use python3 on Linux/macOS. Only PySide6 is required; pygame-ce,
itch-dl and flask are optional (flask powers the NextSync HTTP bridge —
the web server that lets a Next drive another Next's SD card via the .http
dot command; without it the Settings toggle is simply greyed out).
Documentation
Full setup, emulator / hdfmonkey / Mono configuration and troubleshooting are in the Wiki:
- Home / overview
- Installation
- 📖 User Manual — new: a page per tab, with screenshots, aimed at first-time users. What each tab is for, a quick start, and a reference for every control: SD Card Utility · NextSync · Unite! · GetIt · ZXArt.ee · ZXDB/ZXInfo.dk · itch.io · Favorites · Alien Floyd's · Settings · Help
PowerShell automation
- 🧰 PowerShell helper guide — the
ZxNextRemotemodule: install/uninstall, the class and error reference, the bearer-token pattern,PS-Send-ToNext.ps1, and the VS Code integration (PowerShell/vscode-sample/tasks.json). - 🎮 SampleNex — a tiny z88dk ZX
Spectrum Next app wired to all of the above, ready to clone. It prints
Hello Dev Builders <n>!with a number that increments on every build, so one glance at the TV proves the bytes running are the ones you just compiled.Ctrl+Shift+Bbuilds it, pushes it, verifies it and runs it on real hardware.
License
Released under the MIT license (see LICENSE). Built on PySide6 (Qt for Python, LGPL v3) and optionally pygame-ce (LGPL v2.1), itch-dl by Dragoon Aethis (MIT), Flask by the Pallets team (BSD-3-Clause), the web server that powers the NextSync HTTP bridge, and Send2Trash by Andrew Senetar and contributors (BSD-3-Clause), which sends locally-deleted files to the system Recycle Bin / Trash.
Provenance and license details for every third-party component — including NextSync (Jari Komppa, Unlicense), HDFM-Gooey (em00k), hdfmonkey (GPL v3), CSpect and MAME — are in THIRD-PARTY-NOTICES.md.
Legal disclaimer — third-party content
The author of ZX-Next-Unite does NOT distribute any files, ROMs, games, demos, graphics, music, or any other content obtained through the GetIt, ZXDB, or zxArt integrations.
All content is served exclusively by the respective third-party services listed above. ZX-Next-Unite acts solely as a frontend client that queries their public APIs and downloads files directly from the URLs those APIs return.
It is the sole responsibility of the end user to ensure that any content they download or use through this application complies with the applicable copyright, licensing, and legal requirements in their jurisdiction.
If in doubt, consult the terms of service of the relevant platform and seek appropriate legal advice before downloading or using any content.
The first time you open the GetIt, ZXDB, or zxArt pane, the application will display this disclaimer and ask you to acknowledge it. You can dismiss the dialog to continue using the pane; the dialog will reappear on the next visit until you check "I agree and understand. Do not show this message again", at which point your acknowledgement is saved to hdfg.cfg and the dialog will not be shown again.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zx_next_unite-9.7.17.tar.gz.
File metadata
- Download URL: zx_next_unite-9.7.17.tar.gz
- Upload date:
- Size: 39.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e0f93f6e4d6cdf58358403393b2f4d987835bc4b45e82d3e92a6523daced16b
|
|
| MD5 |
09d2ffa1a4d6205e649dc8e1c5dbbfba
|
|
| BLAKE2b-256 |
97be6c1f351a3d50a2b273674293092e8f4ddae085145261ca9c28d3c89bef76
|
Provenance
The following attestation bundles were made for zx_next_unite-9.7.17.tar.gz:
Publisher:
publish.yml on jclauzel/ZX-Next-Unite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zx_next_unite-9.7.17.tar.gz -
Subject digest:
5e0f93f6e4d6cdf58358403393b2f4d987835bc4b45e82d3e92a6523daced16b - Sigstore transparency entry: 2791689751
- Sigstore integration time:
-
Permalink:
jclauzel/ZX-Next-Unite@5a06735f44cc7e4368fce12d2af218e1b38d3fb8 -
Branch / Tag:
refs/tags/v9.7.17 - Owner: https://github.com/jclauzel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a06735f44cc7e4368fce12d2af218e1b38d3fb8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zx_next_unite-9.7.17-py3-none-any.whl.
File metadata
- Download URL: zx_next_unite-9.7.17-py3-none-any.whl
- Upload date:
- Size: 40.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c554eb7c1c5068dcfb45d985b6f988afb43dbea620b812d18e932f42bbdde992
|
|
| MD5 |
fa8ef0afc393ac6feeef8d570859c468
|
|
| BLAKE2b-256 |
02b9b054635ee331bcd25ac72f619b81695c3eef3d32abde031f2a5c507dd4f5
|
Provenance
The following attestation bundles were made for zx_next_unite-9.7.17-py3-none-any.whl:
Publisher:
publish.yml on jclauzel/ZX-Next-Unite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zx_next_unite-9.7.17-py3-none-any.whl -
Subject digest:
c554eb7c1c5068dcfb45d985b6f988afb43dbea620b812d18e932f42bbdde992 - Sigstore transparency entry: 2791689780
- Sigstore integration time:
-
Permalink:
jclauzel/ZX-Next-Unite@5a06735f44cc7e4368fce12d2af218e1b38d3fb8 -
Branch / Tag:
refs/tags/v9.7.17 - Owner: https://github.com/jclauzel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a06735f44cc7e4368fce12d2af218e1b38d3fb8 -
Trigger Event:
release
-
Statement type: