Skip to content

Conversation

@ShadowApex
Copy link
Contributor

@ShadowApex ShadowApex commented Mar 5, 2025

This change adds websocket source/target devices that use the UCIS standard for its wire protocol. To use this feature, you can now use the websocket target device which exposes an org.shadowblip.Input.Websocket dbus interface that can be used to connect to a remote instance of InputPlumber to route input over the network to another device.

To start a websocket server (i.e. a websocket source device), an entry can be added to a composite device config with the address/port to listen on:

source_devices:
  - group: gamepad
    websocket:
      address: "0.0.0.0"
      port: 12907

Then using either the dbus interface, or the cli, you can connect remote composite device:

inputplumber device 0 connect ws://x.x.x.x:12907

This change required some amount of refactoring to use a new device enum instead of our previous assumption that all source devices would be udev devices.

@ShadowApex ShadowApex requested a review from pastaq March 5, 2025 05:41
@ShadowApex ShadowApex force-pushed the shadowapex/networking branch from 7812f70 to b62dc7d Compare March 5, 2025 06:15
@R1kaB3rN
Copy link

R1kaB3rN commented Mar 20, 2025

As a future and optional enhancement to this, what do you think about creating a secure channel protocol between the client/server? I don’t imagine ensuring confidentiality to be a requirement, but I think strong, mutual authentication would be great. The noise protocol framework as used by WireGuard makes this pretty straightforward to design and implement one.

@pastaq
Copy link
Contributor

pastaq commented Apr 21, 2025

Aside from a rebase, what is this waiting on?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants