Run the digital bridge on Windows

The bridge launched its helper only through Wine. It now starts any
process, so on Windows it runs the helper directly. WineBridgeChannel is
renamed ProcessBridgeChannel.

WindowsControlSetup sets up the control side on Windows. The digital
dialog, AppSession, README and docs/digital-bridge.md describe the
Windows setup. publish-windows.sh builds a Windows release.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 21:56:47 +00:00
co-authored by Claude Sonnet 5.5
parent 0ad894bfae
commit c18d79ba5a
11 changed files with 211 additions and 27 deletions
+34 -4
View File
@@ -40,6 +40,36 @@ Everything that judges a station — the bar under the callsign box, a row in th
check window, a spot on the bandmap, a line in the log — is coloured by the same
scorer: red for a dupe, green for a new multiplier, blue for points.
## Windows
Build the Windows copy on any machine that has the .NET 10 SDK:
```sh
./publish-windows.sh # writes dist/nonemm-win-x64/ and dist/nonemm-win-x64.zip
```
On Windows itself, run this from PowerShell instead:
```powershell
dotnet publish src\Nonemm.App -c Release -r win-x64 --self-contained -o dist\nonemm-win-x64
```
The result needs no .NET install. Unzip it anywhere you can write to and run
`Nonemm.App.exe`. Files go in `Documents\N1MM Logger+` and `Documents\Nonemm`,
or in the folder `NONEMM_HOME` names.
What differs from Linux:
| Part | On Windows |
| --- | --- |
| MMTTY and 2Tone | The bridge starts directly, with no Wine. Register `bridge\XMMT.ocx` once with the **Register** button in the digital settings. Windows asks for administrator rights, because the control is written to the registry. Keep the file where it is afterwards. See `docs/digital-bridge.md` |
| CW | `cwdaemon` has no Windows build. Use a WinKeyer on its COM port |
| Radio | Start `rigctld` from the Windows hamlib build, with a COM port: `rigctld -m 2028 -r COM3` |
| Voice playback | Plays through PowerShell's `Media.SoundPlayer`. The command is a setting |
| Voice recording | Windows has no recorder to call. Install `sox` or `ffmpeg` and put its command in the keyer settings |
No part of this has been run on Windows yet. The tests pass on Linux only.
## What it does
| | |
@@ -56,13 +86,13 @@ scorer: red for a dupe, green for a new multiplier, blue for points.
| Bandmap | drawn like N1MM's: a frequency scale with the receiver on it and callsigns beside it, joined by leader lines |
| Network | contacts shared with the other stations of a multi-operator entry, in N1MM's own contact message |
| Keying | CW through `cwdaemon` or a WinKeyer, with N1MM's message macros; phone through the voice keyer, which plays each operator's own recordings |
| Digital | N1MM's digital interface window, running MMTTY or 2Tone under Wine through the same `XMMT.ocx` N1MM drives them with |
| Digital | N1MM's digital interface window, running MMTTY or 2Tone (under Wine on Linux, directly on Windows) through the same `XMMT.ocx` N1MM drives them with |
### The digital window
**Window ▸ Digital Interface** opens N1MM's digital interface. **Engine ▸
Settings** says where MMTTY or 2Tone is; **Engine ▸ Start** runs it under Wine.
`docs/digital-bridge.md` covers setting the Wine prefix up.
Settings** says where MMTTY or 2Tone is; **Engine ▸ Start** runs it: under Wine on Linux, directly on Windows.
`docs/digital-bridge.md` covers setting up the Wine prefix or, on Windows, registering the control.
What the window does, and what each part of it is for:
@@ -1040,7 +1070,7 @@ windows redraw where they stand.
| `Nonemm.Spotting` | Spots, the bandmap, the DX cluster client |
| `Nonemm.Network` | Contacts shared between the stations of a multi-operator entry |
| `Nonemm.Keying` | CW through `cwdaemon` or a WinKeyer, and the voice keyer's recordings |
| `Nonemm.Digital` | MMTTY and 2Tone, over the Wine bridge in `bridge/` |
| `Nonemm.Digital` | MMTTY and 2Tone, over the bridge in `bridge/` |
| `Nonemm.Session` | The contest in progress, and one entry position per radio — no UI toolkit |
| `Nonemm.App` | The Avalonia windows |