Repository navigation
AB6A TimeShift 1.0
Runs several WSJT-X instances at once, each on its own clock. Offsets are adjustable to the nanosecond while an instance is running, and the rest of the Mac keeps exact time.
Install
Unzip and drag AB6A TimeShift.app to /Applications. The app is signed with a Developer ID and notarized, so it opens on a double click.
Then build the shim and make an injectable copy of WSJT-X:
git clone https://github.com/djsincla/ab6a-timeShift
cd ab6a-timeShift && make
bin/timeshift-resign /Applications/wsjtx.app "/Applications/wsjtx shift.app"WSJT-X ships with the hardened runtime and rejects an injected dylib as delivered. timeshift-resign duplicates your installed copy and re-signs the duplicate — your original is left untouched, and nothing is redistributed.
What it does
- Up to six rigs, each with its own
--rig-nameand its own control file. A blank rig name launches WSJT-X's default configuration. - A slider and ±0.1 s steps per rig, applied live to a running instance.
- A floating control panel that joins all Spaces, so the rigs are reachable from any display. It is non-activating: adjusting a rig does not take focus from WSJT-X.
- Menu bar icon turns green while any instance is running.
Requires macOS 13 or later. Universal (arm64 + x86_64).
Known limits
- Grant the microphone to AB6A TimeShift, not to WSJT-X: macOS attributes a child process's request to whatever launched it.
- Your log moves with the clock — ADIF times, PSK Reporter spots and
ALL.TXTall record the shifted time. - Leave the monotonic clock alone unless you know you need it; WSJT-X aligns its 15-second slots off the wall clock.
Full documentation: https://djsincla.github.io/ab6a-timeShift/