# Nativer Linux-Port aus macOS-Bytecode — Stand: ✅ LÄUFT ## Verifiziert (headless auf echtem Xorg) - **Image baut sauber** (Debian stretch via archive.debian.org + debian-security). - **App startet nativ** aus Original-macOS-Bytecode, **ohne Wine**: wx 3.0.2 (gtk2 classic), numpy 1.12.1, scipy 0.18.1 laden, one_unit/child_unit laufen als Original-`.pyc`. - **GUI rendert korrekt** (Menü File/Tools/Help, Status-Icons, „All Units (0 units online)", Voice-Acoustic-Logo) — siehe `screenshot-native.png`. **Kein schwarzer Wine-Screen.** - **Log ist sauber** — keine Tracebacks (nur eine harmlose wxPyDeprecationWarning). Getestet mit Xorg **dummy**-Treiber (liefert VidMode/RandR) im Container; **Xvfb geht NICHT**, weil es die XFree86-VidMode-Extension nicht hat und wx 3.0 dann bei `wxDisplay.GetCurrentMode()` crasht — reines Test-Artefakt, auf echtem Display irrelevant. ## Drei Linux-Fixes in `va/launch.py` (non-invasiv, KEIN Bytecode-Patch) 1. **`platform.version()`** unter Linux beginnt mit `#…` → `int('#')` in einer Windows- Versionsprüfung (`one_unit.start()`) crasht und deaktiviert dabei RTA. Fix: Windows-artigen String liefern → Prüfung läuft durch, RTA bleibt aktiv. 2. **wx-Assertions → SUPPRESS**: diese wxGTK-Build wirft C++-Assertions als Python-Exceptions (Default). `one_unit.app.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)` = Release-/Mac-Verhalten; sonst crasht `flatmenu.DrawMenuBar` an einer transienten negativen Bitmapgröße. 3. **`my_MenuBar.left_down`**: wird nur im Nicht-Mac-Zweig von `__init__` gesetzt (Linux läuft als „mac", `mac_names='posix'`), `OnPaint` braucht es aber → Klassen-Default `= False`. ## Noch offen (braucht deine Maschine) - **Realer Lauf auf dem Desktop** via `./run.sh` (X11/XWayland) — sollte laut Headless-Test direkt gehen; GDK_BACKEND=x11 + `--ipc=host` sind gesetzt. - **Geräteanbindung** ungetestet mangels Amp: Ethernet (Host-Netz) oder seriell/COM (`SERIAL_DEV=/dev/ttyUSB0`). Discovery/Protokoll laufen als Original-Bytecode. - **RTA-Mikrofon**: braucht Audio-Durchreichung (ALSA/Pulse) in den Container.