@desklink/host 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/NOTICE CHANGED
@@ -9,6 +9,9 @@ licences.
9
9
  VP9 encoding. A source build links the host system's libvpx; the prebuilt
10
10
  engine (@desklink/host-linux-x64-gnu) links libvpx v1.16.0 statically and
11
11
  carries its licence and patent grant in THIRD_PARTY_LICENSES.txt.
12
+ Windows source builds use libvpx 1.16.0 statically with MSVC /MT. The
13
+ Windows build script retains its BSD licence, WebM patent grant and the
14
+ x86inc assembly macros' ISC notice in THIRD_PARTY_LICENSES.txt.
12
15
  https://chromium.googlesource.com/webm/libvpx/+/refs/heads/main/LICENSE
13
16
 
14
17
  inputtino MIT
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  <a href="https://www.npmjs.com/package/@desklink/host"><img alt="npm" src="https://img.shields.io/npm/v/@desklink/host?style=flat&label=npm" /></a>
5
5
  <a href="https://github.com/umeranjum17/desklink/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/umeranjum17/desklink/ci.yml?style=flat&branch=main" /></a>
6
6
  <a href="LICENSE"><img alt="Apache 2.0" src="https://img.shields.io/badge/license-Apache--2.0-666?style=flat" /></a>
7
- <img alt="Linux and macOS" src="https://img.shields.io/badge/Linux%20%7C%20macOS-111?style=flat" />
7
+ <img alt="Linux and macOS (preview)" src="https://img.shields.io/badge/Linux%20%7C%20macOS%20%28preview%29-111?style=flat" />
8
8
  </p>
9
9
 
10
10
  <p align="center">
@@ -19,8 +19,7 @@ particular application.
19
19
 
20
20
  ## What it does
21
21
 
22
- The engine supports Linux and macOS desktop sessions; macOS currently requires
23
- a source build with a static VP9 library.
22
+ The engine supports Linux desktop sessions, and macOS (preview) desktop sessions.
24
23
 
25
24
  - **Capture** through the XDG Desktop Portal (`ScreenCast`) and PipeWire, with
26
25
  compositor consent, from an explicitly selected X display's root window, or
@@ -74,7 +73,7 @@ a source build with a static VP9 library.
74
73
 
75
74
  The npm badge tracks the registry version. npm installs the matching optional
76
75
  engine package: `@desklink/host-linux-x64-gnu` or `@desklink/host-darwin-arm64`.
77
- Supported platforms: Linux x64 with glibc 2.36 or newer and macOS arm64.
76
+ Supported platforms: Linux x64 with glibc 2.36 or newer and macOS arm64 (preview).
78
77
  See the [changelog](../../CHANGELOG.md) for release changes.
79
78
 
80
79
  ```sh
@@ -89,18 +88,48 @@ platform package `@desklink/host-linux-x64-gnu`, which carries the prebuilt
89
88
  engine, and `resolveEngine()` finds it there. No Rust toolchain, compiler or
90
89
  install script is involved, so `--ignore-scripts` installs work. The engine
91
90
  requires the system's `libpipewire-0.3.so.0`, `libxkbcommon.so.0`,
92
- `libevdev.so.2`, `libstdc++.so.6`, `libXcursor.so.1`, `libX11.so.6`, and
93
- `libwayland-client.so.0` (normally supplied by a modern Linux desktop). If one is missing, the host reports `missing system library: <name>`
91
+ `libevdev.so.2`, `libstdc++.so.6`, `libXcursor.so.1`, `libX11.so.6`,
92
+ `libXext.so.6`, `libwayland-client.so.0`, `libfontconfig.so.1`, and `libfreetype.so.6`
93
+ (normally supplied by a modern Linux desktop). If one is missing, the host reports `missing system library: <name>`
94
94
  with code `missing-system-library` rather than failing silently; it does not
95
95
  bundle these system libraries. libvpx and inputtino are linked into the engine.
96
+ Wayland point labels use Fontconfig (MIT) and FreeType (FTL) from the system;
97
+ this software is based in part on the work of the FreeType Team.
96
98
 
97
99
  The one step no install does for you is [kernel input access](#kernel-input-access),
98
100
  and only the portal backend needs it.
99
101
 
100
- macOS arm64 also has a prebuilt engine. There is no prebuilt engine for other platforms. Another Linux (arm64, musl)
101
- can [build it from source](#building-from-source). Windows remains unsupported.
102
-
103
- ### macOS
102
+ macOS arm64 (preview) also has a prebuilt engine. There is no prebuilt engine for other platforms. Another Linux (arm64, musl)
103
+ can [build it from source](#building-from-source). Windows has a source-built transport preview for
104
+ `x86_64-pc-windows-msvc`: static libvpx enables `serve` and consumer-fed H.264
105
+ encoded sources. Native capture, input, clipboard and the agent indicator are
106
+ unavailable. Native Windows desktop capture sessions are not supported yet. Node resolution
107
+ is an opt-in preview for Windows 11 22H2+ x64: set `DESKLINK_WINDOWS=1` and
108
+ point `DESKLINK_ENGINE` at a built `desklink-host.exe`. Windows platform packages
109
+ are not published yet. Without static libvpx, the executable's `capabilities`
110
+ command remains available, but CLI `capabilities` and `bridge` require `serve`.
111
+ The Windows bridge defaults to `--source display` and handles Ctrl+Break;
112
+ consumer-fed video requires `--source encoded`.
113
+ A startup exit `0xC0000135` is reported as `missing-system-library` (a required
114
+ DLL could not load); spawn failures are reported as `engine-spawn-failed` with
115
+ the underlying error. Elevated windows and the secure desktop remain outside
116
+ Windows control support.
117
+
118
+ On Windows with Visual Studio Build Tools and PowerShell 7, build libvpx with
119
+ `release/build-libvpx-win.ps1 -OutDir <new-build-directory>`, set
120
+ `DESKLINK_VPX_STATIC_DIR` to its `prefix` directory and
121
+ `RUSTFLAGS=-Ctarget-feature=+crt-static`, then run `cargo build --locked --target
122
+ x86_64-pc-windows-msvc --manifest-path engine/Cargo.toml`. The build retains
123
+ libvpx's licence and patent grant in `prefix/THIRD_PARTY_LICENSES.txt`.
124
+ Without that prefix the compile seam still builds and refuses `serve`.
125
+ Hosted Windows CI resolves the opt-in engine through the published Node API
126
+ and completes a `serve` hello/capabilities handshake with clean shutdown; it
127
+ also checks indicator refusal, Chrome decode and input relay, and DLL
128
+ dependencies. Dedicated Windows rig qualification of
129
+ capture, input, mixed DPI, GPU encoding and elevation is pending; signing and
130
+ packaging are later lanes.
131
+
132
+ ### macOS (preview)
104
133
 
105
134
  The macOS engine shares protocol v3's WebRTC session path: selected-display
106
135
  ScreenCaptureKit capture, VP9 encoding (H.264 through VideoToolbox for a receiver
@@ -132,10 +161,12 @@ current input layout is diagnostic); free-form text uses Unicode key events.
132
161
 
133
162
  The published engine is an **unsigned macOS arm64 CLI** in the optional
134
163
  `@desklink/host-darwin-arm64` platform package; no Developer ID identity or
135
- notarization is required. The macOS engine is enabled by default; `DESKLINK_MACOS=0` explicitly disables it.
136
- To build and pack it, build on an Apple Silicon Mac with Rust 1.97+ and static
164
+ notarization is required. The macOS (preview) engine is enabled by default; `DESKLINK_MACOS=0` explicitly disables it.
165
+ To build and pack it, build on an Apple Silicon Mac with Rust 1.97.1+ and static
137
166
  Homebrew libvpx, then follow
138
167
  [Building and packing a release](#building-and-packing-a-release).
168
+ For a source build, `DESKLINK_VPX_STATIC_DIR` is the libvpx install prefix
169
+ (containing `include/` and `lib/libvpx.a`), not its `lib/` directory.
139
170
  The app-bundled signed harness is for local TCC qualification, not npm
140
171
  installation. See the [macOS protocol](docs/PROTOCOL.md#macos).
141
172
 
@@ -170,10 +201,13 @@ install:
170
201
  | libvpx (`vpx.pc`) | `libvpx-dev` | `libvpx-devel` | `libvpx` |
171
202
  | PipeWire 0.3.65+ (`libpipewire-0.3`) | `libpipewire-0.3-dev` | `pipewire-devel` | `pipewire` |
172
203
  | xkbcommon | `libxkbcommon-dev` | `libxkbcommon-devel` | `libxkbcommon` |
204
+ | FreeType (FTL; dynamically linked) | `libfreetype6-dev` | `freetype-devel` | `freetype2` |
205
+ | Fontconfig (MIT; dynamically linked) | `libfontconfig1-dev` | `fontconfig-devel` | `fontconfig` |
173
206
  | Wayland (`wayland-client`) | `libwayland-dev` | `wayland-devel` | `wayland` |
174
207
  | libevdev | `libevdev-dev` | `libevdev-devel` | `libevdev` |
175
208
  | libxcb (source/container builds only) | `libxcb1-dev` | `libxcb-devel` | `libxcb` |
176
209
  | Xcursor | `libxcursor-dev` | `libXcursor-devel` | `libxcursor` |
210
+ | Xext | `libxext-dev` | `libXext-devel` | `libxext` |
177
211
 
178
212
  These are build prerequisites, not additional runtime requirements for the
179
213
  prebuilt package; in particular, libxcb is not a prebuilt runtime requirement.
@@ -239,6 +273,16 @@ await client.acceptAnswer(session.sessionId, session.generation, answerSdp);
239
273
  await client.addCandidate(session.sessionId, session.generation, candidate, sdpMid, sdpMLineIndex);
240
274
  ```
241
275
 
276
+ For cursor-free recordings, open with `cursor: 'hidden'` and inspect
277
+ `session.cursor`: Linux portals require Metadata for hidden capture;
278
+ `positions` is true for accepted hidden sessions. Subscribe to
279
+ `session.cursor` events for source-coordinate `x`, `y`, `visible`, and monotonic
280
+ `timestamp_us` (the same clock as local frame metadata). Hidden-only portals
281
+ return `cursor_positions_unavailable`. X11 reports positions even on still
282
+ frames and already captures root pixels without a cursor. macOS, Windows, and consumer-encoded
283
+ sources return `cursor-unavailable` for hidden requests. Omitting the option
284
+ preserves existing behavior. See [the cursor protocol](docs/PROTOCOL.md#cursor-free-capture).
285
+
242
286
  `myChannel` is the application's own authenticated connection, whatever that is.
243
287
  There is no second identity system, no pairing ceremony and no account: the
244
288
  engine trusts the consumer's decision and enforces the scope it was given.
@@ -292,8 +336,9 @@ the executable bit already set in the tarball.
292
336
 
293
337
  `platformTag()` includes the libc (`-gnu` or `-musl`) because a glibc binary on a
294
338
  musl system fails in ways that read as "broken install" rather than "unsupported
295
- platform". Only variants that have passed their own qualification are published;
296
- see [Install and run](#install-and-run) for current support. Another variant,
339
+ platform". Linux variants are published only after their own qualification; macOS arm64
340
+ is published as a default-enabled preview, not as qualified desktop support.
341
+ See [Install and run](#install-and-run) for current support. Another variant,
297
342
  such as Linux arm64, needs a real machine to run a real journey first. macOS
298
343
  and Windows are separate backends, not separate builds.
299
344
 
@@ -301,7 +346,7 @@ and Windows are separate backends, not separate builds.
301
346
 
302
347
  The Linux engine build needs Docker and Node, with no local Rust toolchain or
303
348
  system libraries. The macOS engine build needs the Apple Silicon prerequisites
304
- in [macOS](#macos). Run the following from the repository root after installing
349
+ in [macOS (preview)](#macos-preview). Run the following from the repository root after installing
305
350
  workspace dependencies:
306
351
 
307
352
  ```sh
@@ -332,6 +377,9 @@ node packages/desktop-host/release/pack.mjs --engine dist-desklink/engine-darwin
332
377
  packages/desktop-host/release/check-install.sh
333
378
  ```
334
379
 
380
+ The Mac release build copies libvpx headers and its archive into an
381
+ archive-only prefix and rejects an executable that still links a libvpx dylib.
382
+
335
383
  Each call keeps the other platform tarball and also packs the host,
336
384
  React Native receiver and AXI CLI. All package versions must match before
337
385
  publication. Packing publishes nothing.
@@ -10,7 +10,7 @@
10
10
  import { spawn } from 'node:child_process';
11
11
  import { randomBytes } from 'node:crypto';
12
12
  import { Bridge } from '../dist/bridge.js';
13
- import { EngineClient } from '../dist/engineProcess.js';
13
+ import { EngineClient, windowsEngineStartupError } from '../dist/engineProcess.js';
14
14
  import { explainMissingEngine, resolveEngine } from '../dist/resolveEngine.js';
15
15
 
16
16
  const [command, ...rest] = process.argv.slice(2);
@@ -52,7 +52,7 @@ Set DESKLINK_ENGINE to use an engine built somewhere else (MUXR_DESKLINK_ENGINE
52
52
  const listen = flag('listen', '127.0.0.1:19400');
53
53
  const token = flag('token', randomBytes(24).toString('base64url'));
54
54
  if (typeof token !== 'string' || token.trim() === '') throw new Error('the bridge token must not be blank');
55
- const sourceKind = flag('source', process.env.MUXR_DESKTOP_SOURCE ?? 'portal');
55
+ const sourceKind = flag('source', process.env.MUXR_DESKTOP_SOURCE ?? (process.platform === 'win32' ? 'display' : 'portal'));
56
56
  const display = flag('display', process.env.MUXR_DESKTOP_X11_DISPLAY);
57
57
  const displayId = flag('display-id', process.env.MUXR_DESKTOP_DISPLAY_ID);
58
58
  if (!['portal', 'x11', 'display'].includes(sourceKind)) {
@@ -90,6 +90,7 @@ Set DESKLINK_ENGINE to use an engine built somewhere else (MUXR_DESKLINK_ENGINE
90
90
  const stop = async () => { await bridge.close(); process.exit(0); };
91
91
  process.on('SIGINT', () => void stop());
92
92
  process.on('SIGTERM', () => void stop());
93
+ if (process.platform === 'win32') process.on('SIGBREAK', () => void stop());
93
94
  return await new Promise(() => undefined);
94
95
  }
95
96
  if (command === 'capabilities') {
@@ -111,8 +112,15 @@ Set DESKLINK_ENGINE to use an engine built somewhere else (MUXR_DESKLINK_ENGINE
111
112
  console.error(explainMissingEngine());
112
113
  return 1;
113
114
  }
114
- const child = spawn(resolved.command, [command, ...rest], { stdio: 'inherit' });
115
- return await new Promise((resolve) => child.on('exit', (code) => resolve(code ?? 0)));
115
+ const child = spawn(resolved.command, [command, ...rest], { stdio: 'inherit', windowsHide: true });
116
+ return await new Promise((resolve, reject) => {
117
+ child.on('error', (error) => reject(windowsEngineStartupError(null, error) ?? error));
118
+ child.on('exit', (code) => {
119
+ const startupError = windowsEngineStartupError(code);
120
+ if (startupError !== null) reject(startupError);
121
+ else resolve(code ?? 0);
122
+ });
123
+ });
116
124
  }
117
125
 
118
126
  main().then(
@@ -1,4 +1,5 @@
1
- import { type EngineCapabilities, type EngineEvent, type OpenedSession, type OpenSessionRequest, type SessionMetrics } from './protocol.js';
1
+ import { EngineRefused, type EngineCapabilities, type EngineEvent, type OpenedSession, type PointRequest, type OpenSessionRequest, type SessionMetrics } from './protocol.js';
2
+ export declare function windowsEngineStartupError(code: number | null, error?: Error): EngineRefused | null;
2
3
  export interface EngineClientOptions {
3
4
  /**
4
5
  * Request timeout: an engine that does not answer in time is killed, not
@@ -62,6 +63,10 @@ export declare class EngineClient {
62
63
  writeClipboard(sessionId: string, text: string): Promise<{
63
64
  written: boolean;
64
65
  }>;
66
+ /** Show or clear a transient cue on the host, without moving its pointer. */
67
+ point(sessionId: string, request: PointRequest): Promise<{
68
+ shown: boolean;
69
+ }>;
65
70
  closeSession(sessionId: string): Promise<{
66
71
  closed: boolean;
67
72
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"engineProcess.d.ts","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACtB,MAAM,eAAe,CAAC;AAQvB,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO;IAuBP,mEAAmE;WACtD,KAAK,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,mBAAwB,EACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACrC,OAAO,CAAC,YAAY,CAAC;IA4BxB,OAAO,CAAC,UAAU;IAgClB;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,SAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;IAkBpG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI3C;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBpF,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAQhG,YAAY,CACR,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAUjC,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAIlC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI/E,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D,qDAAqD;IACrD,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAU9C;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAUT,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB9B"}
1
+ {"version":3,"file":"engineProcess.d.ts","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,17 @@ import { spawn, spawnSync } from 'node:child_process';
2
2
  import { appendFileSync } from 'node:fs';
3
3
  import { createInterface } from 'node:readline';
4
4
  import { EngineRefused, PROTOCOL_VERSION, } from './protocol.js';
5
+ export function windowsEngineStartupError(code, error) {
6
+ if (process.platform !== 'win32')
7
+ return null;
8
+ if (code !== null && (code >>> 0) === 0xc0000135) {
9
+ return new EngineRefused('missing-system-library', 'The Windows desktop engine could not load a required DLL (0xC0000135); use a complete Windows engine build with its required runtime libraries.');
10
+ }
11
+ if (error !== undefined) {
12
+ return new EngineRefused('engine-spawn-failed', `The Windows desktop engine could not start: ${error.message}. Check the engine path and Windows application-control policy.`);
13
+ }
14
+ return null;
15
+ }
5
16
  /**
6
17
  * A consumer of the engine's local control protocol.
7
18
  *
@@ -29,7 +40,7 @@ export class EngineClient {
29
40
  for (const [id, pending] of this.pending) {
30
41
  this.pending.delete(id);
31
42
  clearTimeout(pending.timer);
32
- pending.reject(new Error('the desktop engine exited'));
43
+ pending.reject(windowsEngineStartupError(code) ?? new Error('the desktop engine exited'));
33
44
  }
34
45
  if (!this.stopping)
35
46
  options.onExit?.({ code, signal });
@@ -37,6 +48,13 @@ export class EngineClient {
37
48
  child.on('error', (error) => {
38
49
  this.closed = true;
39
50
  options.onDiagnostic?.(`engine process error: ${error.message}`);
51
+ if (process.platform !== 'win32')
52
+ return;
53
+ for (const [id, pending] of this.pending) {
54
+ this.pending.delete(id);
55
+ clearTimeout(pending.timer);
56
+ pending.reject(windowsEngineStartupError(null, error) ?? error);
57
+ }
40
58
  });
41
59
  }
42
60
  /** Start an engine process and complete the protocol handshake. */
@@ -46,12 +64,12 @@ export class EngineClient {
46
64
  const missing = /error while loading shared libraries: ([^:\s]+): cannot open shared object file/.exec(probe.stderr ?? '')?.[1];
47
65
  if (missing !== undefined && [
48
66
  'libpipewire-0.3.so.0', 'libxkbcommon.so.0', 'libevdev.so.2', 'libstdc++.so.6',
49
- 'libXcursor.so.1', 'libX11.so.6', 'libwayland-client.so.0',
67
+ 'libXcursor.so.1', 'libX11.so.6', 'libXext.so.6', 'libwayland-client.so.0', 'libfontconfig.so.1', 'libfreetype.so.6',
50
68
  ].includes(missing)) {
51
69
  throw new EngineRefused('missing-system-library', `missing system library: ${missing}`);
52
70
  }
53
71
  }
54
- const child = spawn(command, args, { env, stdio: ['pipe', 'pipe', 'pipe'] });
72
+ const child = spawn(command, args, { env, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true });
55
73
  if (env.DESKLINK_AXI_ENGINE_PID_FILE && child.pid) {
56
74
  try {
57
75
  appendFileSync(env.DESKLINK_AXI_ENGINE_PID_FILE, `${child.pid}\n`);
@@ -89,7 +107,7 @@ export class EngineClient {
89
107
  const event = parsed;
90
108
  // Setup notifications are drained by the consumer; queue them so a
91
109
  // slow reader cannot lose an offer or a candidate.
92
- if (event.event !== 'session.frame.changed' || options.onEvent === undefined)
110
+ if ((event.event !== 'session.frame.changed' && event.event !== 'session.cursor') || options.onEvent === undefined)
93
111
  this.queue.push(event);
94
112
  options.onEvent?.(event);
95
113
  return;
@@ -145,6 +163,7 @@ export class EngineClient {
145
163
  return this.request('session.open', {
146
164
  ...(request.source === undefined ? {} : { source: request.source }),
147
165
  permissions: request.permissions,
166
+ ...(request.cursor === undefined ? {} : { cursor: request.cursor }),
148
167
  ...(request.maxWidth === undefined ? {} : { max_width: request.maxWidth }),
149
168
  ...(request.maxHeight === undefined ? {} : { max_height: request.maxHeight }),
150
169
  ...(request.bitrateKbps === undefined ? {} : { bitrate_kbps: request.bitrateKbps }),
@@ -182,6 +201,17 @@ export class EngineClient {
182
201
  writeClipboard(sessionId, text) {
183
202
  return this.request('session.clipboard.write', { session_id: sessionId, text });
184
203
  }
204
+ /** Show or clear a transient cue on the host, without moving its pointer. */
205
+ point(sessionId, request) {
206
+ return this.request('session.point', {
207
+ session_id: sessionId,
208
+ ...(request.clear === true ? { clear: true } : {
209
+ x: request.x, y: request.y,
210
+ ...(request.label === undefined ? {} : { label: request.label }),
211
+ ...(request.timeoutMs === undefined ? {} : { timeout_ms: request.timeoutMs }),
212
+ }),
213
+ });
214
+ }
185
215
  closeSession(sessionId) {
186
216
  return this.request('session.close', { session_id: sessionId });
187
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engineProcess.js","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engineProcess.js","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,11 @@ export interface EngineCapabilities {
29
29
  backends: string[];
30
30
  formats: string[];
31
31
  cursor: string;
32
+ cursor_modes?: Array<'embedded' | 'hidden'>;
33
+ cursor_positions?: {
34
+ x11: boolean;
35
+ portal: 'negotiated';
36
+ };
32
37
  audio: boolean;
33
38
  displays?: Array<{
34
39
  id: number;
@@ -102,7 +107,13 @@ export type SourceRequest = {
102
107
  kind: 'x11';
103
108
  display?: string;
104
109
  };
110
+ export interface CursorInfo {
111
+ mode: 'embedded' | 'hidden' | 'metadata' | 'unavailable';
112
+ positions: boolean;
113
+ }
105
114
  export interface OpenSessionRequest {
115
+ /** Cursor-free frames with independent source-coordinate position events. */
116
+ cursor?: 'embedded' | 'hidden';
106
117
  source?: SourceRequest;
107
118
  /** `view` alone is capture-only; `control` needs a working input backend. */
108
119
  permissions: Array<'view' | 'control' | 'clipboard'>;
@@ -130,6 +141,7 @@ export interface OpenSessionRequest {
130
141
  localFrames?: boolean;
131
142
  }
132
143
  export interface OpenedSession {
144
+ cursor?: CursorInfo;
133
145
  sessionId: string;
134
146
  generation: number;
135
147
  source: {
@@ -144,6 +156,15 @@ export interface OpenedSession {
144
156
  geometry: SurfaceGeometry;
145
157
  }
146
158
  export type EngineEvent = {
159
+ event: 'session.cursor';
160
+ params: {
161
+ sessionId: string;
162
+ x: number;
163
+ y: number;
164
+ visible: boolean;
165
+ timestamp_us: number;
166
+ };
167
+ } | {
147
168
  event: 'session.description';
148
169
  params: {
149
170
  sessionId: string;
@@ -168,6 +189,7 @@ export type EngineEvent = {
168
189
  sessionId: string;
169
190
  seq: number;
170
191
  damage: number[][];
192
+ timestamp_us?: number;
171
193
  };
172
194
  } | {
173
195
  event: 'session.state';
@@ -229,4 +251,14 @@ export declare class EngineRefused extends Error {
229
251
  readonly code: string;
230
252
  constructor(code: string, message: string);
231
253
  }
254
+ /** A visual cue in selected-desktop pixels, independent of input permissions. */
255
+ export type PointRequest = {
256
+ x: number;
257
+ y: number;
258
+ label?: string;
259
+ timeoutMs?: number;
260
+ clear?: false;
261
+ } | {
262
+ clear: true;
263
+ };
232
264
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAiJlC,wEAAwE;AACxE,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC3B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AA4JlC,wEAAwE;AACxE,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC3B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ"}
@@ -17,6 +17,12 @@ export interface ResolvedEngine {
17
17
  origin: 'configured' | 'prebuilt' | 'package';
18
18
  }
19
19
  export declare function macosEngineEnabled(platform?: NodeJS.Platform, flag?: string | undefined): boolean;
20
+ export declare function windowsEngineEnabled(platform?: NodeJS.Platform, flag?: string | undefined): boolean;
21
+ export declare function windowsBuildSupported(release?: string): {
22
+ supported: boolean;
23
+ build: string;
24
+ };
25
+ export declare function windowsBuildError(release?: string): string | null;
20
26
  export declare function enginePackageRoot(): string;
21
27
  /**
22
28
  * The platform package for this machine.
@@ -1 +1 @@
1
- {"version":3,"file":"resolveEngine.d.ts","sourceRoot":"","sources":["../src/resolveEngine.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;CACjD;AAKD,wBAAgB,kBAAkB,CAAC,QAAQ,kBAAmB,EAAE,IAAI,qBAA6B,GAAG,OAAO,CAE1G;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACvB,QAAQ,GAAE,MAAyB,EACnC,IAAI,GAAE,MAAqB,EAC3B,KAAK,GAAE,OAAO,GAAG,SAAsB,GACxC,MAAM,CAGR;AA8CD,wBAAgB,aAAa,CAAC,UAAU,qBAAyB,EAAE,IAAI,SAAsB,GAAG,cAAc,GAAG,IAAI,CAgBpH;AAWD;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,qBAAyB,EACnC,IAAI,SAAsB,GAC3B,MAAM,GAAG,IAAI,CA2Bf"}
1
+ {"version":3,"file":"resolveEngine.d.ts","sourceRoot":"","sources":["../src/resolveEngine.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;CACjD;AAKD,wBAAgB,kBAAkB,CAAC,QAAQ,kBAAmB,EAAE,IAAI,qBAA6B,GAAG,OAAO,CAE1G;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,kBAAmB,EAAE,IAAI,qBAA+B,GAAG,OAAO,CAE9G;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAc,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOlG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAc,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACvB,QAAQ,GAAE,MAAyB,EACnC,IAAI,GAAE,MAAqB,EAC3B,KAAK,GAAE,OAAO,GAAG,SAAsB,GACxC,MAAM,CAIR;AA+CD,wBAAgB,aAAa,CAAC,UAAU,qBAAyB,EAAE,IAAI,SAAsB,GAAG,cAAc,GAAG,IAAI,CAkBpH;AAWD;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,qBAAyB,EACnC,IAAI,SAAsB,GAC3B,MAAM,GAAG,IAAI,CAwCf"}
@@ -1,5 +1,6 @@
1
1
  import { existsSync, statSync } from 'node:fs';
2
2
  import { createRequire } from 'node:module';
3
+ import { release as osRelease } from 'node:os';
3
4
  import { dirname, join, resolve } from 'node:path';
4
5
  import { fileURLToPath } from 'node:url';
5
6
  /** Platforms with a published platform package. */
@@ -7,6 +8,23 @@ const PREBUILT_PLATFORMS = ['linux-x64-gnu', 'darwin-arm64'];
7
8
  export function macosEngineEnabled(platform = process.platform, flag = process.env.DESKLINK_MACOS) {
8
9
  return platform !== 'darwin' || flag !== '0';
9
10
  }
11
+ export function windowsEngineEnabled(platform = process.platform, flag = process.env.DESKLINK_WINDOWS) {
12
+ return platform !== 'win32' || flag === '1';
13
+ }
14
+ export function windowsBuildSupported(release = osRelease()) {
15
+ const match = /^10\.0\.(\d+)(?:\.\d+)*$/.exec(release);
16
+ if (!match)
17
+ return { supported: false, build: `unknown (${release})` };
18
+ const buildText = match[1];
19
+ if (buildText === undefined)
20
+ return { supported: false, build: `unknown (${release})` };
21
+ const build = Number(buildText);
22
+ return { supported: Number.isSafeInteger(build) && build >= 22621, build: buildText };
23
+ }
24
+ export function windowsBuildError(release = osRelease()) {
25
+ const { supported, build } = windowsBuildSupported(release);
26
+ return supported ? null : `The Windows desktop engine preview requires Windows 11 22H2+ x64; detected Windows build ${build}.`;
27
+ }
10
28
  export function enginePackageRoot() {
11
29
  return resolve(dirname(fileURLToPath(import.meta.url)), '..');
12
30
  }
@@ -18,6 +36,8 @@ export function enginePackageRoot() {
18
36
  * because npm's own `libc` selector is not honoured by every client.
19
37
  */
20
38
  export function platformTag(platform = process.platform, arch = process.arch, glibc = hasGlibc()) {
39
+ if (platform === 'win32')
40
+ return `win32-${arch}-msvc`;
21
41
  if (platform === 'linux')
22
42
  return `linux-${arch}-${glibc === false ? 'musl' : 'gnu'}`;
23
43
  return `${platform}-${arch}`;
@@ -47,10 +67,11 @@ function prebuiltBinary() {
47
67
  }
48
68
  }
49
69
  function buildCandidates(root) {
70
+ const binary = process.platform === 'win32' ? 'desklink-host.exe' : 'desklink-host';
50
71
  return [
51
- join(root, 'engine', 'target', 'release', 'desklink-host'),
52
- join(root, 'engine', 'target', 'debug', 'desklink-host'),
53
- join(root, 'bin', 'desklink-host'),
72
+ join(root, 'engine', 'target', 'release', binary),
73
+ join(root, 'engine', 'target', 'debug', binary),
74
+ join(root, 'bin', binary),
54
75
  ];
55
76
  }
56
77
  /**
@@ -67,7 +88,11 @@ function configuredEnginePath() {
67
88
  return process.env.MUXR_DESKLINK_ENGINE;
68
89
  }
69
90
  export function resolveEngine(configured = configuredEnginePath(), root = enginePackageRoot()) {
70
- if (!macosEngineEnabled())
91
+ if (!macosEngineEnabled() || !windowsEngineEnabled())
92
+ return null;
93
+ if (process.platform === 'win32' && process.arch !== 'x64')
94
+ return null;
95
+ if (process.platform === 'win32' && windowsBuildError() !== null)
71
96
  return null;
72
97
  if (configured !== undefined && configured.trim() !== '') {
73
98
  if (!isExecutable(configured))
@@ -93,13 +118,24 @@ function isExecutable(path) {
93
118
  return false;
94
119
  // A file that is not executable is an install that went wrong, and saying so
95
120
  // is more useful than an EACCES three calls later.
96
- return (stat.mode & 0o111) !== 0;
121
+ return process.platform === 'win32' || (stat.mode & 0o111) !== 0;
97
122
  }
98
123
  /**
99
124
  * Why the engine is missing, in words fit to show a user. `null` means it is
100
125
  * there.
101
126
  */
102
127
  export function explainMissingEngine(configured = configuredEnginePath(), root = enginePackageRoot()) {
128
+ if (!windowsEngineEnabled()) {
129
+ return 'The Windows desktop engine preview is disabled; set DESKLINK_WINDOWS=1 to opt in (Windows 11 22H2+ x64 only).';
130
+ }
131
+ if (process.platform === 'win32' && process.arch !== 'x64') {
132
+ return 'The Windows desktop engine preview requires Windows 11 22H2+ x64; this architecture is unsupported.';
133
+ }
134
+ if (process.platform === 'win32') {
135
+ const buildError = windowsBuildError();
136
+ if (buildError !== null)
137
+ return buildError;
138
+ }
103
139
  if (!macosEngineEnabled()) {
104
140
  return 'The macOS desktop engine is disabled by DESKLINK_MACOS=0; unset it to enable the engine.';
105
141
  }
@@ -112,6 +148,9 @@ export function explainMissingEngine(configured = configuredEnginePath(), root =
112
148
  }
113
149
  return `The desktop engine at ${configured} is not an executable file.`;
114
150
  }
151
+ if (process.platform === 'win32') {
152
+ return 'No Windows preview engine was found. Build desklink-host.exe from source and set DESKLINK_ENGINE to its path; Windows platform packages are not published yet.';
153
+ }
115
154
  if (process.platform === 'darwin') {
116
155
  const tag = platformTag();
117
156
  if (PREBUILT_PLATFORMS.includes(tag)) {
@@ -120,7 +159,7 @@ export function explainMissingEngine(configured = configuredEnginePath(), root =
120
159
  return `There is no prebuilt desktop engine for ${tag}. Build it from source (see the @desklink/host README) and point DESKLINK_ENGINE at the binary.`;
121
160
  }
122
161
  if (process.platform !== 'linux') {
123
- return `The desktop engine runs on Linux and macOS; ${process.platform} is not supported yet.`;
162
+ return `The desktop engine runs on Linux and macOS (preview); ${process.platform} is not supported yet.`;
124
163
  }
125
164
  const tag = platformTag();
126
165
  if (PREBUILT_PLATFORMS.includes(tag)) {