fix: v1.1.1 — deb conflict with input-sync + Illegal instruction (clo… #11
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build & Release InputSync | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| inputs: | |
| create_release: | |
| description: 'Create GitHub Release' | |
| type: boolean | |
| default: false | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| # ── Linux binary ───────────────────────────────────────────────────────────── | |
| build-linux: | |
| name: Linux x86_64 (native binary) | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update -q | |
| sudo apt-get install -y \ | |
| libgtk-3-dev \ | |
| libayatana-appindicator3-dev \ | |
| libx11-dev libxtst-dev libxi-dev \ | |
| libxdo-dev libxkbcommon-dev \ | |
| libwayland-dev \ | |
| libglib2.0-dev \ | |
| build-essential curl wget file \ | |
| libssl-dev patchelf \ | |
| cmake nasm | |
| - name: Install Rust stable | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: x86_64-unknown-linux-gnu | |
| - name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: src-tauri | |
| - name: Build Linux release binary | |
| working-directory: src-tauri | |
| run: cargo build --release | |
| - name: Package binary | |
| working-directory: src-tauri/target/release | |
| run: | | |
| mkdir -p pkg | |
| cp inputsync pkg/inputsync-linux-x86_64 | |
| sha256sum inputsync-linux-x86_64 > pkg/SHA256SUMS-linux.txt | |
| cat pkg/SHA256SUMS-linux.txt | |
| - name: Upload Linux artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux-binary | |
| path: src-tauri/target/release/pkg/ | |
| if-no-files-found: error | |
| # ── Windows binary ──────────────────────────────────────────────────────────── | |
| build-windows: | |
| name: Windows x86_64 (.exe) | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust stable | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: x86_64-pc-windows-msvc | |
| - name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: src-tauri | |
| - name: Build Windows release binary | |
| working-directory: src-tauri | |
| run: cargo build --release | |
| - name: Package binary and compute checksum | |
| shell: pwsh | |
| working-directory: src-tauri/target/release | |
| run: | | |
| Copy-Item inputsync.exe inputsync-windows-x86_64.exe | |
| Get-FileHash inputsync-windows-x86_64.exe -Algorithm SHA256 | ` | |
| ForEach-Object { "$($_.Hash) inputsync-windows-x86_64.exe" } | ` | |
| Out-File -FilePath "SHA256SUMS-windows.txt" | |
| Get-Content SHA256SUMS-windows.txt | |
| - name: Upload Windows artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-exe | |
| path: | | |
| src-tauri/target/release/inputsync-windows-x86_64.exe | |
| src-tauri/target/release/SHA256SUMS-windows.txt | |
| if-no-files-found: error | |
| # ── GitHub Release ───────────────────────────────────────────────────────────── | |
| release: | |
| name: Publish GitHub Release | |
| needs: [build-linux, build-windows] | |
| runs-on: ubuntu-latest | |
| if: (startsWith(github.ref, 'refs/tags/') || github.event.inputs.create_release == 'true') && always() && (needs.build-windows.result == 'success' || needs.build-linux.result == 'success') | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Download Linux artifact | |
| uses: actions/download-artifact@v4 | |
| if: needs.build-linux.result == 'success' | |
| with: | |
| name: linux-binary | |
| path: release-assets/linux | |
| - name: Download Windows artifact | |
| uses: actions/download-artifact@v4 | |
| if: needs.build-windows.result == 'success' | |
| with: | |
| name: windows-exe | |
| path: release-assets/windows | |
| - name: List release assets | |
| run: find release-assets -type f | sort | |
| - name: Publish release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| name: "InputSync ${{ github.ref_name }} — Native Rust KVM Switch" | |
| draft: false | |
| prerelease: false | |
| files: | | |
| release-assets/linux/inputsync-linux-x86_64 | |
| release-assets/linux/SHA256SUMS-linux.txt | |
| release-assets/windows/inputsync-windows-x86_64.exe | |
| release-assets/windows/SHA256SUMS-windows.txt | |
| body: | | |
| ## InputSync ${{ github.ref_name }} — Native Rust KVM Switch | |
| Control multiple computers with one keyboard and mouse over your local network — end-to-end encrypted, no browser engine, no installer, no runtime dependencies. | |
| **Pure Rust + egui. Single portable binary. ~9 MB.** | |
| --- | |
| ### What's New in ${{ github.ref_name }} | |
| **Architecture — Full migration from Tauri/WebView2/React to pure Rust + egui:** | |
| - Replaced the entire Tauri + React frontend with a native egui (eframe 0.31 + glow) UI — no browser engine, no WebView2, no Node.js required at build or runtime | |
| - Single portable native binary (~9 MB stripped) replaces the old .deb/.exe installer packages | |
| - Windows no longer requires WebView2 Runtime — completely self-contained executable | |
| **New features:** | |
| - Screen edge switching — move the cursor to any configured screen edge to automatically forward control to the connected client | |
| - Dead corners — configurable corner regions that block edge triggers to prevent accidental switching | |
| - Dead zones — configurable rectangular screen regions that suppress edge activation | |
| - Optional TLS transport — self-signed TOFU certificate via rcgen + rustls + tokio-rustls, layered on top of the existing ChaCha20 session encryption | |
| - Settings persistence — all configuration saved to `~/.local/share/inputsync/config.json` | |
| - In-app log viewer — real-time log output in the Logs tab | |
| - Mini screen-map widget — clickable widget in Settings for configuring edge targets | |
| - Tabs: Main | Settings | Logs | |
| **Bug fixes:** | |
| - Server restart after stop — `Start Server` now auto-stops any running server; no stale state | |
| - Stopped TCP listener now releases port immediately on shutdown | |
| --- | |
| ### Downloads | |
| | Platform | File | Notes | | |
| |----------|------|-------| | |
| | **Linux** (x86_64) | `inputsync-linux-x86_64` | Run directly — no install needed | | |
| | **Windows** (10/11 x64) | `inputsync-windows-x86_64.exe` | Run directly — no installer, no WebView2 | | |
| Checksums: `SHA256SUMS-linux.txt` / `SHA256SUMS-windows.txt` | |
| --- | |
| ### Quick Start | |
| 1. **Server (keyboard/mouse machine):** Run InputSync → Start Server → note the 6-character code + IP | |
| 2. **Client (machine to control):** Run InputSync → Enter code + IP → Connect | |
| 3. **Switch control:** Move cursor to a configured screen edge, or press **ScrollLock**, or click the Forwarding toggle | |
| 4. All input events are encrypted end-to-end (X25519 ECDH + ChaCha20-Poly1305) | |
| --- | |
| ### System Requirements | |
| **Linux:** `libx11`, `libxtst`, `libxdo`, `libwayland` (most distros include these) | |
| **Windows:** Windows 10+ x64 — no additional runtime required | |
| **Network:** TCP :24800 + UDP :24801-24802 open on the server machine | |
| --- | |
| ### Verify Downloads | |
| ```bash | |
| # Linux | |
| sha256sum -c SHA256SUMS-linux.txt | |
| chmod +x inputsync-linux-x86_64 && ./inputsync-linux-x86_64 | |
| # Windows (PowerShell) | |
| Get-FileHash inputsync-windows-x86_64.exe -Algorithm SHA256 | |
| # Compare against SHA256SUMS-windows.txt | |
| ``` | |
| --- | |
| *Built with Rust + egui — no WebView2, no Electron, no Node.js* |