WinptyShellSession class

A ShellSession backed by a real Windows pseudo-console allocated through libwinpty (winpty.dll) via dart:ffi.

winpty exposes the child's console as two named pipes. Because a Win32 HANDLE cannot be awaited on Dart's event loop and ReadFile blocks, the console output is pumped on a dedicated reader isolate and the child is reaped on a tiny waiter isolate; raw handle integers are process-global, so passing them between isolates is safe. Writes (writeStdin) are small and done synchronously on this isolate.

Unlike the pipe fallback this is a true PTY: cooked-mode readers echo input (fixing interactive prompts on Windows), full-screen apps render, and resize actually propagates via winpty_set_size.

Implemented types

Constructors

WinptyShellSession({required WinptyLib winpty, required Pointer<Void> winptyPtr, required Pointer<Void> childHandle, required String coninName, required String conoutName})

Properties

exitCode Future<int>
Completes with the process exit code once it terminates.
no setteroverride
hashCode int
The hash code for this object.
no setterinherited
pid int?
The backend process id, if known.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
shellFamily ShellFamily
The command-language family of the launched shell, so the client can speak the matching marker/command dialect over an interactive session.
no setteroverride
stderr Stream<Uint8List>
Bytes written by the process to standard error.
no setteroverride
stdout Stream<Uint8List>
Bytes written by the process to standard output.
no setteroverride

Methods

closeStdin() Future<void>
Signals end-of-input on standard input (half-close).
override
kill() Future<void>
Forcibly terminates the process and releases resources.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
resize({required int cols, required int rows}) → void
Resizes the terminal, where the backend supports it (no-op otherwise).
override
sendSignal(String signal) → void
Sends a POSIX signal name (e.g. SIGINT, SIGTERM) to the process.
override
toString() String
A string representation of this object.
inherited
writeStdin(List<int> data) → void
Writes data to the process's standard input.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited