-
Notifications
You must be signed in to change notification settings - Fork 0
Home
ZX-Next-Unite by Julien Clauzel, based on:
- HDFM-GOOEY by em00k, and
- NextSync by Jari Komppa (with the Sync4 extensions by Julien Clauzel).
A cross-platform (Windows, Linux, macOS) graphical front-end that unites two great ZX Spectrum Next tools in a single utility — Hdfm-Gooey and NextSync — and adds a built-in browser for discovering ZX Spectrum / Spectrum Next software across several online archives (GetIt, ZXDB/ZXInfo, zxArt and itch.io).
- The SD Card tab targets CSpect and MAME users: mount an HDF image, copy content in and out with a simple file explorer, then launch the emulator — no command-line options to memorise.
- The NextSync tab is for real hardware owners (KS1, KS2 or clones with an ESP Wi-Fi module): push content from your PC to the Next over the network.
Just want to install it? See the Installation page.
- Licensing
- Videos
- The SD Card / emulator tab
- The NextSync tab
- Online libraries: GetIt, ZXDB, zxArt
- Keyboard shortcuts
- Installation
- Settings
- Startup parameters
- Known issues
- Source & architecture
- Legal disclaimer — third-party content
ZX-Next-Unite is licensed under the MIT license.
It is a Qt application built with PySide6 and pygame-ce on top of Qt 6,
which retains its GPLv2/LGPL licensing (see the LICENSE file). It optionally
uses itch-dl by Dragoon Aethis (MIT,
© 2022) to power the itch.io tab, and Flask
by the Pallets team (BSD-3-Clause) to power the NextSync HTTP bridge — the web
server behind the Next's .http dot command. Like PySide6 and pygame-ce, itch-dl
and Flask are not bundled with a standard Python install and must be installed
separately (pip install -r REQUIREMENTS.txt); the itch.io tab only appears when
itch-dl is installed, and the HTTP bridge toggle in Settings is greyed out until
Flask is installed.
- Setup & How-to: https://youtu.be/-gUxV4fM1yo (the full Python install is also covered in the older Py-Hdfm-Gooey video, since ZX-Next-Unite evolved from it: https://youtu.be/FJG-Z0DCIjQ)
- NextSync v4 the new .sync4 command explained https://youtu.be/pKchUZhNHKE
- Demo / Show time!: https://youtu.be/0qsIU01zsoM
- Emulator integration: https://youtube.com/shorts/hPmV5shvBfo
Older Py-Hdfm-Gooey videos:
- NextSync — Head Over Heels: https://www.youtube.com/watch?v=D3_WqTPvjOE
- NextSync — Night Knight: https://www.youtube.com/watch?v=eN1eMIqMCm4
The first tab is aimed at CSpect and MAME users and developers. You mount an HDF image (think of it as an ISO that contains everything the machine needs to boot) and upload/download content using a built-in file explorer. Once your content is on the image, launch CSpect or MAME directly from the app. Key settings such as screen size are adjustable in the UI, so you never need to remember emulator command-line options.
See Installation → Optional components for how to set up CSpect, MAME, hdfmonkey and the system images.
The second tab is for real-hardware owners whose Next has an ESP (Wi-Fi) module. Jari Komppa's NextSync protocol synchronises a folder from your PC/Mac/Linux machine to the Next over the network. ZX-Next-Unite implements the server side that listens for the Next; your Next runs a dot command that connects to it (by default over TCP port 2048).
-
Current command:
.sync5— the Sync4 protocol: faster transfers and bidirectional sync (.sync5 -send <file|dir>pushes files back from the Next to the PC). Speed hints-slow,-default,-fastreplace the oldsyncfast/syncslowcommands. -
Remote file explorer:
.sync5 -listen(short alias:.sync5 -l) — turns the Next into a small remote file server so you can browse and transfer its filesystem from the app (see Remote file explorer below). Press BREAK (Caps Shift + Space) on the Next to stop it — the Next-side equivalent of Ctrl-C. -
Legacy command:
.sync— the older PC → Next-only command still works.
Typical usage: open the NextSync tab, select the folder to sync, and click
Start NextSync server. The first run, enable Sync once so the server stops
after a single sync while you verify things. Then run .sync5 on the Next. Once
the first full sync completes, a SyncPoint file records what has been sent so
subsequent runs only transfer what changed. syncignore.txt lets you exclude
file types from syncing (see Jari's documentation).
📖 Full step-by-step setup, IP configuration and building the dot from source: Installation → NextSync.
Beyond folder syncing, the NextSync tab can turn into a two-pane file manager — just like the SD Card tab, but the right-hand pane is your Next's real filesystem (reached over Wi-Fi) instead of a disk image:
[ your PC files ] ->: :<- [ your Next's files ]
How to use it:
- Click 🗂 Remote Explorer in the NextSync tab. The log window flips into the two-pane view, and the normal sync controls are replaced by a single ▶ Start NextSync server button.
- Click Start NextSync server. A toast reminds you to run
.sync5 -listenon your Next; a pulsing green indicator shows the server is live. - On the Next, run
.sync5 -listen(or the short alias.sync5 -l). It connects and the right pane fills with the current Next directory.
Then you can:
-
Transfer — select item(s) and use
->:(upload PC → Next) or:<-(download Next → PC), or just drag & drop between the panes (and from your OS file manager onto the Next pane). - Navigate — double-click folders, or use Up / Refresh on either pane.
- Manage — New Folder and Delete (right-click menu or the buttons) create and remove folders/files on the Next.
End the session any of three ways: click ⏹ Stop NextSync server, toggle
🗂 Return to classic sync off, or press BREAK (Caps Shift + Space) on the
Next itself — the Next-side equivalent of Ctrl-C. BREAK always lets any
in-progress transfer finish first, so no file or directory is left half-written.
This uses the same .sync5 command and Wi-Fi connection as a normal sync —
nothing else to install.
Tip: launch the app with python zx-next-unite.py -start-remote-explorer-listener to skip steps 1–2 — the Remote Explorer view
opens and its listen server starts automatically at startup (using the saved
sync root), so the Next only has to run .sync5 -listen.
Three tabs let you search and download ZX Spectrum / Spectrum Next software directly from public community archives. ZX-Next-Unite is only a front-end client: it queries each service's public API and downloads from the URLs those APIs return (see the legal disclaimer).
| Tab | What it is | API base used |
|---|---|---|
| 🌍 GetIt | Browse and download software published for the Spectrum Next. | https://zxnext.uk |
| 🌍 ZXDB / ZXInfo.dk | The largest open database of ZX Spectrum software (search titles, view screenshots and inlays). Data via the ZXInfo API; project at github.com/zxdb/ZXDB. | https://api.zxinfo.dk/v3 |
| 🌍 ZXArt.ee | The zxart.ee gallery/archive of ZX Spectrum art, music and productions (demos, games, graphics). | https://zxart.ee/api |
An optional itch.io tab also appears when itch-dl is installed and you have
entered your itch.io API key — it browses your collections/owned games and installs
selected items. Anything you download can then be copied to your HDF image or
synced to your Next.
The three built-in file explorers (the SD Card local explorer, the SD Card disk-image explorer and the NextSync local explorer) share the usual editing shortcuts. Copy / Cut / Paste work across all three explorers and also exchange with the operating-system clipboard (e.g. copy in Windows Explorer, then paste into the disk image, and vice-versa):
- Ctrl+C — Copy the selected file(s)/folder(s) to the shared clipboard.
- Ctrl+X — Cut the selection (moved to the destination on the next paste).
- Ctrl+V — Paste into the selected folder (or the folder currently shown).
- F2 — Rename the selected file or folder.
- Delete — Delete the selected file or folder (disk-image and NextSync explorers).
In the picture (gallery) item viewer — opened by double-clicking an item in the GetIt, ZXDB, zxArt or itch.io tabs:
- Esc — Close the viewer and return to the gallery.
- Left / Right arrows — Show the previous / next screenshot.
On Windows, the easiest route is to download the latest ZX-Next-Unite-v9.x
executable from the Releases page
(plus the .sync5 dot command if you want NextSync) — no Python required.
On any platform you can run from source: install a recent Python (3.13 recommended), clone the repo, install the dependencies, and run:
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(On Linux/macOS use python3. Only PySide6 is required; pygame-ce,
itch-dl and flask are optional.)
👉 Full instructions — virtual environments, CSpect/MAME/hdfmonkey/Mono setup and troubleshooting — are on the Installation page.
All options are stored in a single hdfg.cfg file, created automatically in
the same directory as the tool. The format is compatible with em00k's original
tool but adds more options (including NextSync support). To reset everything, back
up and delete hdfg.cfg.
The Settings tab also hosts the NextSync HTTP bridge toggle (requires the
optional flask package): a small web server that republishes the Remote
Explorer's .sync5 -listen session as HTTP routes, so a browser, curl or
another Next (via the built-in .http dot command) can drive the connected
Next's SD card. Its port — 80 by default — is set in the input box next to
the toggle and persisted to hdfg.cfg, as is the maximum number of
concurrent connections (default 1, the recommended value to avoid
concurrent access — extra requests wait their turn rather than being
rejected). Full route reference and call samples:
HTTP bridge documentation.
To force a specific retro animation on startup (requires pygame-ce):
python zx-next-unite.py --anim <walk|c5|ufo|aliens>aliens spawns Sir Clive's saucer plus the attacking green alien squadron.
To have the Remote file explorer's listen server
running right from startup (using the saved sync root — no clicks needed
before running .sync5 -listen on the Next):
python zx-next-unite.py -start-remote-explorer-listenerThis forces the Remote Explorer view open for this run only (the saved Settings are not modified). Pairs nicely with the NextSync HTTP bridge for a fully hands-off remote setup.
-
hdfmonkey is required. On startup the app checks your PATH for it. On Windows
it can auto-download it; on macOS/Linux you install it manually. If the Windows
auto-download fails while your internet works, it is almost always a firewall
blocking outbound calls from
python.exe(or the app exe) — see Installation → Troubleshooting. - PySide6 and a recent Python are required — install these first (see Installation).
- Non-Windows platforms require you to install/compile hdfmonkey manually and install Mono (to run CSpect, which is .NET-based).
- Special characters (e.g. single quotes) in filenames on the Next image may not download correctly.
-
ESP / Wi-Fi errors can occur on an unstable connection; reduce the rate with
the Slow transfer option (or
-slow). -
Timermessages in the console during NextSync can be safely ignored. - If NextSync misbehaves, try Jari Komppa's original command-line
nextsync.pyfirst (bundled in the nextsync v1.2 release); ZX-Next-Unite shares the same code base, so if that syncs, this should too.
ZX-Next-Unite is written in Python (PySide6/Qt 6). The entry point is
zx-next-unite.py, which holds the single MainWindow class and all tab/pane UI.
The rest is split into focused modules:
| File | Role |
|---|---|
zx-next-unite.py |
Entry point; MainWindow and all tab/pane UI logic |
zxnu_config.py |
Constants, SETTING_* keys, API base URLs, UI strings, colour defaults and pure helpers |
zxnu_workers.py |
Background threading primitives (signals, HDF task worker, progress dialog) |
zxnu_media.py |
ZX Spectrum SCREEN$ decoder, placeholder rendering, format tags, shared pixmap cache |
zxnu_gallery.py |
Reusable gallery widgets (cells, grid view, animated background) |
zxnu_itchio.py |
Optional itch.io integration (detection, API access, install via itch-dl) |
rc_backgrounds.py |
Auto-generated Qt resource module (do not edit by hand) |
The .sync5 dot-command source lives under nextsync/sync. It can be built two
ways: the classic SDCC 4.5.0 build (build.ps1, limited to the 8 KB dot
size), or the newer z88dk "dotN" build (z88dk/build_dotn.ps1) which lifts
that 8 KB limit by paging overflow into extra banks. See
Installation → building the dot from source.
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 front-end 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 displays
this disclaimer and asks you to acknowledge it. You can dismiss the dialog to
continue using the pane; it reappears on the next visit until you tick "I agree
and understand. Do not show this message again", at which point your
acknowledgement is saved to hdfg.cfg and the dialog is no longer shown.
Tools
Online libraries
The rest