feat: implement Linux receiver service #5

Merged
erik merged 1 commit from feat/task-bd721b22-linux-receiver into main 2026-07-17 07:58:51 -05:00
Owner

Summary

Implement the Linux TCP receiver service with uinput injection and user-service installation support.

Task

#task-bd721b22

Changes

  • Add source-IP-restricted TCP receiver and framed protocol handling.
  • Inject supported HID keyboard, media, pointer, button, and scroll events through uinput.
  • Release tracked input on handoff, disconnect, malformed connections, and graceful shutdown.
  • Document and provide systemd user-service installation.

Testing

  • Unit tests added/updated (cargo test --all-targets, 17 tests).
  • Manual service startup test with non-root uinput access.

Checklist

  • ./scripts/pre-pr.sh passes locally: blocked because swift is not installed; Rust format, clippy, and tests pass.
  • Documentation updated.
  • No unrelated changes included.
## Summary Implement the Linux TCP receiver service with `uinput` injection and user-service installation support. ## Task #task-bd721b22 ## Changes - Add source-IP-restricted TCP receiver and framed protocol handling. - Inject supported HID keyboard, media, pointer, button, and scroll events through `uinput`. - Release tracked input on handoff, disconnect, malformed connections, and graceful shutdown. - Document and provide systemd user-service installation. ## Testing - [x] Unit tests added/updated (`cargo test --all-targets`, 17 tests). - [x] Manual service startup test with non-root `uinput` access. ## Checklist - [ ] `./scripts/pre-pr.sh` passes locally: blocked because `swift` is not installed; Rust format, clippy, and tests pass. - [x] Documentation updated. - [x] No unrelated changes included.
feat: implement Linux receiver service
All checks were successful
CI / Rust build, lint, and test (pull_request) Successful in 11s
CI / Swift build, lint, and test (pull_request) Successful in 13s
ca3f233961
Task: #task-bd721b22
Author
Owner

Review

Summary

The Linux receiver implementation is aligned with the receiver-service task and CI passed for both Rust and Swift jobs.

Acceptance criteria

  • GNOME user service: a systemd user unit starts the receiver with the graphical session and documents installation.
  • Non-root uinput injection: the receiver creates a virtual keyboard/pointer device; installation documents user-level uinput access. Manual startup succeeded without root.
  • Source-IP restriction: the listener compares every peer address with the configured Mac IP and rejects others; this is unit-tested.
  • Held-input cleanup: the receiver tracks pressed keys and buttons and releases them on handoff, disconnect, malformed connections, and graceful shutdown; this is unit-tested.

Blocking issues

None.

Warnings

None.

Verdict

Approved.

## Review ### Summary The Linux receiver implementation is aligned with the receiver-service task and CI passed for both Rust and Swift jobs. ### Acceptance criteria - [x] **GNOME user service:** a systemd user unit starts the receiver with the graphical session and documents installation. - [x] **Non-root `uinput` injection:** the receiver creates a virtual keyboard/pointer device; installation documents user-level `uinput` access. Manual startup succeeded without root. - [x] **Source-IP restriction:** the listener compares every peer address with the configured Mac IP and rejects others; this is unit-tested. - [x] **Held-input cleanup:** the receiver tracks pressed keys and buttons and releases them on handoff, disconnect, malformed connections, and graceful shutdown; this is unit-tested. ### Blocking issues None. ### Warnings None. ### Verdict Approved.
erik force-pushed feat/task-bd721b22-linux-receiver from ca3f233961
All checks were successful
CI / Rust build, lint, and test (pull_request) Successful in 11s
CI / Swift build, lint, and test (pull_request) Successful in 13s
to 7a49eab872
All checks were successful
CI / Rust build, lint, and test (pull_request) Successful in 11s
CI / Swift build, lint, and test (pull_request) Successful in 13s
2026-07-17 07:58:04 -05:00
Compare
erik merged commit 27d3191bed into main 2026-07-17 07:58:51 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
erik/kvshare!5
No description provided.