start method

  1. @override
Future<void> start(
  1. StartupProbeContext ctx
)
override

Starts the probe.

Implementations can write escape sequences here, then complete later via handleMsg events (UV events, etc).

Implementation

@override
Future<void> start(StartupProbeContext ctx) async {
  if (_active) return;
  if (!ctx.terminal.supportsAnsi || !ctx.terminal.isTerminal) return;
  _active = true;
  _done = Completer<void>();
  _sawSecondaryAttributes = false;
  _sawKeyboardEnhancements = false;

  final term = ctx.terminal;
  term.write(Ansi.requestSecondaryDeviceAttributes);
  term.write(Ansi.requestKittyKeyboard);
  await term.flush();

  try {
    await _done.future.timeout(timeout);
  } on TimeoutException {
    // Best-effort only: keep startup moving when the terminal does not
    // answer some or all capability queries.
  } finally {
    _active = false;
  }
}