Rein

Improving Cross-Platform Remote Input Reliability

Background and Motivation

Rein is a cross-platform, LAN-based remote input controller. It allows touchscreen devices to act as a trackpad and keyboard for a desktop system through a locally served web interface.

While the core functionality is already implemented, several areas require improvement to ensure consistent behavior across operating systems, display protocols, and input methods.


Overview of Tasks

  • Improve cursor handling on Wayland (Highest Priority)

    • Resolve cursor position desynchronization on Wayland (e.g., KDE).
    • Investigate virtual input devices or alternative input injection methods.
    • Ensure the cursor position is either correctly synced or reliably indicated.
  • Complete and normalize key mappings

    • Modifier keys, navigation keys, function keys, and media keys.
  • Ensure cross-platform compatibility

    • Test across operating systems and display protocols.
    • Automate creation of distributables for all supported platforms (Linux must be distributed as a Flatpak).
    • Document platform-specific limitations and behavior.
  • Authentication

    • Use an authentication token passed via URL (link and QR code).

    • Persist tokens on the server after successful connection.

    • Expire tokens after a defined period of inactivity.

  • Screen mirror

    • Explore possibility of screen mirroring on the trackpad region.
  • Improve UI/UX

    • Make the interface more intuitive and easier to use.

Candidates are expected to refine these tasks in their GSoC proposals.


Requirements

Technical Skills

  • Familiarity with the current stack: TypeScript, Node.js, WebSockets, TanStack, Nut.js
  • Understanding of input injection and virtual input devices.
  • Experience with cross-platform packaging of Node.js applications.
  • Ability to test across different operating systems and environments (using VMs), including Linux, macOS, Windows, and potentially others.

Proposal Expectations

  • Clear, concise, and easy to understand.
  • Demonstrates understanding of current limitations and the end-to-end flow of proposed solutions.
  • Includes decision points and actions, ideally supported with diagrams.
  • Identifies where alternative libraries could improve reliability or compatibility.
  • Justifies the planned work, utilizing the entire GSoC period
  • Discusses potential future improvements and scope.

General Abilities

  • Ability to take ownership and work autonomously.
  • Evaluate technical decisions and the existing stack against alternatives.
  • Maintain cross-platform behavior and compatibility.
  • Record demos or tutorials when appropriate.
  • Produce clear documentation, including diagrams and architecture overviews.
  • Help grow the user base through community and social channels.

Resources


Mentors

  • GitHub: @imxade Discord: @Rituraj

Communication Channel

Join our Discord server (https://discord.gg/xnmAPS7zqB and discuss this idea in AOSSIE-Discord → Projects → Rein.