Skip to content

xfoa/Spud

Repository files navigation

Spud

The Spud icon, a potato with a game controller D-pad and buttons carved into it

Spud solves the problem of wanting to play games on a computer attached your TV, from a laptop on your couch. It's a cross-platform remote control application that sends local input to a remote server, and is optimised for gaming. Input is as responsive as possible, and protocol parameters are tunable for latency and reliability. As it's intended to be used in a situation where you can already see the output from the server on another device, it doesn't accept video or sound output from the server.

Why use Spud?

So you got yourself a wee gaming rig for your TV, but you don't have a controller or you prefer keyboard/mouse. Spud's got you: run the server on your gaming machine, and the client on your laptop, and voilà! You can now game on your big TV and impressive sound system from the comfort of your couch, without wires!

Spud is optimised for gaming, and is easy to set up. It's also open-source, so if something is broken or there's a feature you'd like to implement, you're very welcome to contribute.

Why not use something else?

There already exist tools that solve similar problems to Spud, so why not use them instead?

  • Synergy is a great tool for remote control, but its latency makes it unsuitable for gaming.
  • Parsec is fantastically optimised and easy to set up, but it's too heavyweight when you don't need video sent back to the controlling device.
  • Moonlight/Sunlight are brilliant projects, but can be difficult to set up and don't support input-only mode.
  • Lan Mouse is a very similar project to this, but is less optimised.

Features

  • Simple UI
  • Cross-platform
  • Low latency input streaming
  • Input capture toggling by hotkey
  • Relative or absolute pointer movement
  • LAN discovery
  • Optional local screen blanking on input capture
  • Tolerance of poor network conditions
  • Optional password protection and encryption
  • Tunable performance and reliability settings

Supported platforms

  • Linux
    • X11
      • Tested on Gnome and KDE
    • Wayland
      • Tested on Gnome, KDE, and COSMIC
  • macOS
    • Tested on Tahoe (version 26)
  • Windows 11
    • Tested on version 25H2

Install

Linux

A .deb package is built by CI and can be downloaded from GitHub Actions artifacts or the releases page:

sudo dpkg -i spud_1.0.0_amd64.deb

Alternatively, a raw binary is available from the same sources. Put it wherever your system expects to find binaries.

On Linux, the server can inject input events via a privileged helper that runs through pkexec. To start the server without having to enter your password (eg if starting on boot), install the polkit rule:

sudo install -Dm644 linux/50-spud-injection.pkla \
    /etc/polkit-1/localauthority/50-local.d/50-spud-injection.pkla

Or run the provided install script which also builds and installs the binary and desktop entry:

./scripts/install-linux.sh

macOS

A universal .app bundle is built by CI and can be downloaded from GitHub Actions artifacts or the releases page.

On macOS, fullscreen/hotkey input capture requires Accessibility permission (and Input Monitoring permission on macOS 10.15+). The app will prompt you to enable these in System Settings when you first attempt to capture input. Server-side input injection does not require special permissions.

Windows

An .msi installer is built by CI and can be downloaded from GitHub Actions artifacts or the releases page.

Run the installer and launch Spud from the Start Menu.

Build

You can build this project using:

cargo build

Then run using:

cargo run

Packaging

Install cargo-bundle and build platform packages:

cargo install cargo-bundle

# Linux
cargo bundle --format deb --release

# macOS
cargo bundle --format osx --release

# Windows
cargo bundle --format msi --release

Screenshots

Client

Spud client tab showing the connection page

Server

Spud server tab showing the status page

Contribute

Please feel free to open issues, create PRs, and fork this project!

License

This project is distributed under the GPL-3.0 license.

About

A cross-platform remote control application, optimised for gaming.

Resources

License

Stars

Watchers

Forks

Contributors