mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 08:45:38 +02:00
## Description Oops.. another massive PR 🥲 This PR contains multiple improvements and changes. Firstly, thanks gst-wayland-display's PR [here](https://github.com/games-on-whales/gst-wayland-display/pull/20). NVIDIA path is now way more efficient than before. Secondly, adding controller support was a massive hurdle, requiring me to start another project [vimputti](https://github.com/DatCaptainHorse/vimputti) - which allows simple virtual controller inputs in isolated containers. Well, it's not simple, it includes LD_PRELOAD shims and other craziness, but the library API is simple to use.. Thirdly, split runner image into 3 separate stages, base + build + runtime, should help keep things in check in future, also added GitHub Actions CI builds for v2 to v4 builds (hopefully they pass..). Fourth, replaced the runner's runtime Steam patching with better and simpler bubblewrap patch, massive thanks to `games-on-whales` to figuring it out better! Fifth, relay for once needed some changes, the new changes are still mostly WIP, but I'll deal with them next time I have energy.. I'm spent now. Needed to include these changes as relay needed a minor change to allow rumble events to flow back to client peer. Sixth.. tons of package updates, minor code improvements and the usual. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * End-to-end gamepad/controller support (attach/detach, buttons, sticks, triggers, rumble) with client/server integration and virtual controller plumbing. * Optional Prometheus metrics endpoint and WebTransport support. * Background vimputti manager process added for controller handling. * **Improvements** * Multi-variant container image builds and streamlined runtime images. * Zero-copy video pipeline and encoder improvements for lower latency. * Updated Steam compat mapping and dependency/toolchain refreshes. * **Bug Fixes** * More robust GPU detection, input/fullscreen lifecycle, startup/entrypoint, and container runtime fixes. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
132 lines
3.4 KiB
Protocol Buffer
132 lines
3.4 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
option go_package = "relay/internal/proto";
|
|
|
|
package proto;
|
|
|
|
/* Mouse messages */
|
|
|
|
// MouseMove message
|
|
message ProtoMouseMove {
|
|
string type = 1; // Fixed value "MouseMove"
|
|
int32 x = 2;
|
|
int32 y = 3;
|
|
}
|
|
|
|
// MouseMoveAbs message
|
|
message ProtoMouseMoveAbs {
|
|
string type = 1; // Fixed value "MouseMoveAbs"
|
|
int32 x = 2;
|
|
int32 y = 3;
|
|
}
|
|
|
|
// MouseWheel message
|
|
message ProtoMouseWheel {
|
|
string type = 1; // Fixed value "MouseWheel"
|
|
int32 x = 2;
|
|
int32 y = 3;
|
|
}
|
|
|
|
// MouseKeyDown message
|
|
message ProtoMouseKeyDown {
|
|
string type = 1; // Fixed value "MouseKeyDown"
|
|
int32 key = 2;
|
|
}
|
|
|
|
// MouseKeyUp message
|
|
message ProtoMouseKeyUp {
|
|
string type = 1; // Fixed value "MouseKeyUp"
|
|
int32 key = 2;
|
|
}
|
|
|
|
/* Keyboard messages */
|
|
|
|
// KeyDown message
|
|
message ProtoKeyDown {
|
|
string type = 1; // Fixed value "KeyDown"
|
|
int32 key = 2;
|
|
}
|
|
|
|
// KeyUp message
|
|
message ProtoKeyUp {
|
|
string type = 1; // Fixed value "KeyUp"
|
|
int32 key = 2;
|
|
}
|
|
|
|
/* Controller messages */
|
|
|
|
// ControllerAttach message
|
|
message ProtoControllerAttach {
|
|
string type = 1; // Fixed value "ControllerAttach"
|
|
string id = 2; // One of the following enums: "ps", "xbox" or "switch"
|
|
int32 slot = 3; // Slot number (0-3)
|
|
}
|
|
|
|
// ControllerDetach message
|
|
message ProtoControllerDetach {
|
|
string type = 1; // Fixed value "ControllerDetach"
|
|
int32 slot = 2; // Slot number (0-3)
|
|
}
|
|
|
|
// ControllerButton message
|
|
message ProtoControllerButton {
|
|
string type = 1; // Fixed value "ControllerButtons"
|
|
int32 slot = 2; // Slot number (0-3)
|
|
int32 button = 3; // Button code (linux input event code)
|
|
bool pressed = 4; // true if pressed, false if released
|
|
}
|
|
|
|
// ControllerTriggers message
|
|
message ProtoControllerTrigger {
|
|
string type = 1; // Fixed value "ControllerTriggers"
|
|
int32 slot = 2; // Slot number (0-3)
|
|
int32 trigger = 3; // Trigger number (0 for left, 1 for right)
|
|
int32 value = 4; // trigger value (-32768 to 32767)
|
|
}
|
|
|
|
// ControllerSticks message
|
|
message ProtoControllerStick {
|
|
string type = 1; // Fixed value "ControllerStick"
|
|
int32 slot = 2; // Slot number (0-3)
|
|
int32 stick = 3; // Stick number (0 for left, 1 for right)
|
|
int32 x = 4; // X axis value (-32768 to 32767)
|
|
int32 y = 5; // Y axis value (-32768 to 32767)
|
|
}
|
|
|
|
// ControllerAxis message
|
|
message ProtoControllerAxis {
|
|
string type = 1; // Fixed value "ControllerAxis"
|
|
int32 slot = 2; // Slot number (0-3)
|
|
int32 axis = 3; // Axis number (0 for d-pad horizontal, 1 for d-pad vertical)
|
|
int32 value = 4; // axis value (-1 to 1)
|
|
}
|
|
|
|
// ControllerRumble message
|
|
message ProtoControllerRumble {
|
|
string type = 1; // Fixed value "ControllerRumble"
|
|
int32 slot = 2; // Slot number (0-3)
|
|
int32 low_frequency = 3; // Low frequency rumble (0-65535)
|
|
int32 high_frequency = 4; // High frequency rumble (0-65535)
|
|
int32 duration = 5; // Duration in milliseconds
|
|
}
|
|
|
|
// Union of all Input types
|
|
message ProtoInput {
|
|
oneof input_type {
|
|
ProtoMouseMove mouse_move = 1;
|
|
ProtoMouseMoveAbs mouse_move_abs = 2;
|
|
ProtoMouseWheel mouse_wheel = 3;
|
|
ProtoMouseKeyDown mouse_key_down = 4;
|
|
ProtoMouseKeyUp mouse_key_up = 5;
|
|
ProtoKeyDown key_down = 6;
|
|
ProtoKeyUp key_up = 7;
|
|
ProtoControllerAttach controller_attach = 8;
|
|
ProtoControllerDetach controller_detach = 9;
|
|
ProtoControllerButton controller_button = 10;
|
|
ProtoControllerTrigger controller_trigger = 11;
|
|
ProtoControllerStick controller_stick = 12;
|
|
ProtoControllerAxis controller_axis = 13;
|
|
ProtoControllerRumble controller_rumble = 14;
|
|
}
|
|
}
|