InputFlow is a native C++17 Linux companion for Microsoft PowerToys "Mouse Without Borders", enabling seamless cursor and keyboard sharing between Linux and Windows.
Recommended first-run flow for most users:
- Install Prerequisites:
- Fedora:
sudo dnf install python3-gobject gtk3 libayatana-appindicator3 - Ubuntu/Debian:
sudo apt install python3-gi gir1.2-gtk-3.0 libayatana-appindicator3-0.1
- Fedora:
- Launch Setup UI: Run
./mwb-desktop-ui.sh menu - Configure:
- Go to Settings -> Enter your Windows Host IP and Security Key.
- Pair with Windows:
- In the same UI, use the Export Helper option.
- Run the exported
.ps1script on your Windows machine to register the Linux peer.
- Start: Choose Start Service or launch the tray with
./build/mwb_tray.
For the full beta setup, health-check, diagnostics, connection-quality, and packaging-verification workflow, see docs/beta-workflow.md.
Ubuntu / Debian:
sudo apt-get install -y build-essential cmake pkg-config libssl-dev zlib1g-dev \
python3-gi gir1.2-gtk-3.0 libayatana-appindicator3-devFedora:
sudo dnf install -y gcc-c++ cmake make pkgconf-pkg-config openssl-devel zlib-devel \
python3-gobject gtk3 libayatana-appindicator3-develcmake -S . -B build -DMWB_BUILD_TRAY=ON
cmake --build build -j$(nproc)sudo modprobe uinput
sudo groupadd -r inputflow
sudo usermod -aG inputflow $USER
echo 'KERNEL=="uinput", GROUP="inputflow", MODE="0660", OPTIONS+="static_node=uinput"' | sudo tee /etc/udev/rules.d/99-inputflow-uinput.rules
sudo udevadm control --reload-rules && sudo udevadm triggerLogout and back in for group changes to take effect.
- Absolute Cursor Movement: Precise pointer control across screens.
- Keyboard Sync: Full keyboard sharing with media key support.
- Rich Clipboard: Text, HTML, and Image synchronization.
- Systemd Integration: Runs as a lightweight user service.
- Tray Tool: Quick access to settings and connection status.
- Auto-Reconnect: Smart backoff logic when Windows goes offline.
InputFlow is usable today but is still stabilizing. Expect rough edges around reconnection and desktop-environment edge cases.
What is working well:
- Windows-to-Linux keyboard/mouse input.
- Full Clipboard sync (Text/HTML/Images).
systemdservice management.- Windows pairing-helper for easy setup.
For power users who prefer manual control:
./build/mwb_client run --config ~/.config/mwb-client/config.ini
./build/mwb_client discover
./build/mwb_client doctor --config ~/.config/mwb-client/config.iniSee the full documentation section for environment variables and protocol details.
User-facing beta operations:
- Guided Windows pairing and export helper
- Health checks and diagnostics bundle
- Connection quality and latency reporting
- Packaging verification
This repository started as a fork of chrischip/mwb-client-linux and has been substantially expanded with service management, rich clipboard support, and recovery tooling.
Supports key_file, key_secret_id (keyring), screen_width/height overrides, and more. Default path: ~/.config/mwb-client/config.ini.
The client detects screen size in this order:
- Config/CLI overrides
- KDE logical geometry (
kscreen-doctor) - DRM connector modes (
/sys/class/drm) - 1920x1080 fallback
- Port: 15101 (Input), 15100 (Clipboard).
- Encryption: AES-256-CBC (PowerToys compatible).
GNU GPL v3.0 — see LICENSE.
InputFlow is independent and not affiliated with Microsoft. Interoperability is based on the open-source microsoft/PowerToys implementation.