Summary
Extract the Linux implementation into AirBridge, an independently maintained Linux-first application rather than an arch/ add-on to a Windows wrapper.
What changed
- Rename the Python package, application IDs, executables, XDG paths, BLE device, desktop integration, service, assets, and release naming to AirBridge.
- Preserve UxPlay-based AirPlay mirroring with embedded loopback RTP/H.264, GStreamer, and GTK 4.
- Preserve BLE HID-over-GATT AssistiveTouch control: absolute video-surface pointing, relative touchpad input, click/drag/scroll, horizontal paging, keyboard typing, editing shortcuts, and system actions.
- Route Home, App Switcher, and Spotlight through the same eight-button absolute pointer used by the mirrored screen; iOS still requires its one-time AssistiveTouch button assignment.
- Add a dark phone-focused GTK layout with persistent system controls, live status, cursor overlay, and a scrollable control sidebar.
- Add an idempotent user-local Arch installer, Python packaging,
airbridge-git PKGBUILD, XDG launchers, and a systemd user service.
- Add Linux-first README, contribution guide, security policy, changelog, attribution notice, and live hardware checklist.
- Add pinned-action Arch CI plus tag-only release automation. No release is created by this PR.
Security model
- BLE advertising starts only in explicit control mode and is torn down on exit.
- HID input is ignored until iOS subscribes to the relevant encrypted report characteristic.
- The local control endpoint is a mode-
0600 Unix socket in a mode-0700 runtime directory and validates Linux peer credentials; no network control socket exists.
- Embedded RTP is loopback-only. LAN exposure is limited to UxPlay's AirPlay/mDNS listener.
- Firewall and system-service changes are explicit installer options.
Validation
- 19 headless pytest tests passed.
- Python bytecode compilation and all four built-in self-tests passed.
- Ruff lint and formatting checks passed.
- Bash syntax and ShellCheck passed.
- Desktop entry validation passed.
git diff --check passed across the complete repository history.
- Python sdist and wheel built successfully.
airbridge-git built successfully with makepkg; its tests ran inside the package build, and Namcap reported only expected dynamic/vendored-dependency warnings.
- GTK control window launched successfully on the Arch/Wayland test host.
Known limitations
AirBridge uses iOS AssistiveTouch's supported Bluetooth mouse and keyboard interface. It does not implement Apple's authenticated macOS iPhone Mirroring protocol. An unlocked iPhone is generally required; Face ID, protected lock-screen input, true multitouch, camera/microphone integration, and universal clipboard are unavailable. System actions require one-time on-device AssistiveTouch mapping.
Attribution
AirBridge was initially derived from the Linux work developed against Grega Bulog's MIT-licensed gbulog/pcairplay project. Nolan Cotter developed the Linux port and AssistiveTouch control implementation. UxPlay is a separate dependency and implements the AirPlay receiver. The existing upstream contribution remains independent of this repository.
Summary
Extract the Linux implementation into AirBridge, an independently maintained Linux-first application rather than an
arch/add-on to a Windows wrapper.What changed
airbridge-gitPKGBUILD, XDG launchers, and a systemd user service.Security model
0600Unix socket in a mode-0700runtime directory and validates Linux peer credentials; no network control socket exists.Validation
git diff --checkpassed across the complete repository history.airbridge-gitbuilt successfully withmakepkg; its tests ran inside the package build, and Namcap reported only expected dynamic/vendored-dependency warnings.Known limitations
AirBridge uses iOS AssistiveTouch's supported Bluetooth mouse and keyboard interface. It does not implement Apple's authenticated macOS iPhone Mirroring protocol. An unlocked iPhone is generally required; Face ID, protected lock-screen input, true multitouch, camera/microphone integration, and universal clipboard are unavailable. System actions require one-time on-device AssistiveTouch mapping.
Attribution
AirBridge was initially derived from the Linux work developed against Grega Bulog's MIT-licensed
gbulog/pcairplayproject. Nolan Cotter developed the Linux port and AssistiveTouch control implementation. UxPlay is a separate dependency and implements the AirPlay receiver. The existing upstream contribution remains independent of this repository.