This guide covers the user-facing beta path for pairing Linux with PowerToys Mouse Without Borders on Windows, checking health, collecting diagnostics, tuning connection quality, and validating package output.
Use the desktop controller for the guided path:
./mwb-desktop-ui.sh menu- Open Settings and enter the Windows host IP, local machine name, port, and exactly one authentication source: inline key,
key_file, or Secret Service key ID. - Use Connection Behavior to choose automatic reconnect behavior before starting the service.
- For one Linux/Fedora monitor, leave topology disabled and use the normal PowerToys layout path.
- Optionally run Advanced Topology/Layout only if you have multiple Linux displays, stacked/asymmetric edges, wrap behavior, or wrong-edge handoff problems.
- Export a Windows helper from Linux when the UI exposes the action, or use the CLI fallback:
./build/mwb_client export-windows-pair \
--config ~/.config/mwb-client/config.ini \
--output inputflow-windows-pair.ps1 \
--position autoThe helper writes the Linux peer name, IP, layout position, shared key, MachinePool, MachineMatrixString, and Name2IP values expected by PowerToys. On Windows, install and open PowerToys Mouse Without Borders once, then run the exported script in PowerShell:
powershell -ExecutionPolicy Bypass -File .\inputflow-windows-pair.ps1Keep the exported .ps1 private because it contains pairing material. Delete it after confirming Windows sees the Linux peer.
Open the wizard from the desktop controller only when the normal PowerToys layout is not enough:
./mwb-desktop-ui.sh layout-wizardThe wizard asks for a plain-language layout, Linux/Windows machine names, display size, wrap policy, and output file name. It shows a preview of the exact topology file before making changes. For one Linux monitor, prefer Use PowerToys Layout Only instead.
Only after confirmation, the wizard writes the topology file under ~/.config/mwb-client/ and updates config.ini:
topology_enabled=true
topology_file=/home/example/.config/mwb-client/topology-side-by-side.topologyWhen topology is enabled, configured cross-machine edge transitions are enforced at runtime. Same-machine transitions remain local, and invalid topology falls back to the existing behavior with a warning.
Use Explain Current Topology after saving. It translates the topology into English and reminds users that Windows PowerToys still owns the Windows-side machine layout. Keep the PowerToys machine placement and the InputFlow topology edges consistent.
Run the built-in doctor before filing a beta issue or after changing package/service setup:
./build/mwb_client doctor --config ~/.config/mwb-client/config.iniThe desktop controller shows the same health check together with the user service status through:
./mwb-desktop-ui.sh statusReview warnings for missing /dev/uinput access, Wayland input-gating, missing inputflow group membership, missing packaged files, unavailable clipboard helpers, unavailable Secret Service/session bus, or invalid authentication configuration.
Create a redacted support bundle before filing beta reports:
./scripts/inputflow-diagnostics-bundle.sh \
--config ~/.config/mwb-client/config.ini \
--state ~/.local/state/mwb-client/state.ini \
--output .The archive includes summary.json for machine-readable triage, redacted config/state summaries, session and /dev/uinput checks, package/build details, service status, recent user-service journal lines, and mwb_client doctor output. Review the archive before posting publicly. Do not attach exported Windows helper scripts or unredacted Secret Service identifiers to public issues.
For most beta users, keep automatic reconnect enabled and tune only if the service reconnects too aggressively or too slowly:
auto_connect_enabled=true
reconnect_initial_backoff_ms=500
reconnect_max_backoff_ms=30000
reconnect_idle_retry_ms=5000
latency_report=falseEnable latency reporting only while debugging missed or delayed input:
./build/mwb_client run --config ~/.config/mwb-client/config.ini --latency-reportYou can also set latency_report=true in config.ini or run with MWB_LATENCY_REPORT=1. The report prints client-side queue and injection timing when the client shuts down.
Validate RPM metadata without a full RPM build:
scripts/validate-rpm-packaging.shRun full Fedora RPM validation when the build dependencies are available:
MWB_VALIDATE_RPM_BUILD=1 scripts/validate-rpm-packaging.shThe validation checks that the package keeps the compatibility binary and service names, includes the user unit, sysusers integration, modules-load file, and /dev/uinput udev rule, and does not introduce undocumented command aliases.