artisanal_pty 0.1.1 copy "artisanal_pty: ^0.1.1" to clipboard
artisanal_pty: ^0.1.1 copied to clipboard

An embeddable ANSI terminal emulator and pty2 widget for Artisanal.

artisanal_pty #

Embeddable terminal emulation for Artisanal applications, backed by pty2 for local processes.

Widget applications #

import 'dart:io';

import 'package:artisanal/runtime.dart' as runtime;
import 'package:artisanal_pty/widgets.dart';
import 'package:artisanal_widgets/app.dart';
import 'package:pty2/pty2.dart';

final pty = PseudoTerminal.start(
  Platform.isWindows ? 'pwsh.exe' : 'bash',
  [],
  environment: {'TERM': 'xterm-256color'},
  ackProcessed: true,
  raw: false,
);

try {
  await runWidgetApp(
    ArtisanalApp(
      title: 'Artisanal PTY',
      home: PseudoTerminalView(pty: pty),
    ),
    options: runtime.ProgramOptions().withoutInterruptMsg(),
  );
} finally {
  pty.kill();
}

For SSH and other transports, feed output to VirtualTerminal and use TerminalView(onInput: transport.write).

Plain Artisanal applications #

Plain TEA applications can import the terminal model without importing the widget API:

import 'package:artisanal_pty/artisanal_pty.dart';

final terminal = VirtualTerminal(width: 80, height: 24);
terminal.write(serverOutput);

// Return this from a Model's view method.
final view = terminal.render();

The caller always owns the process or remote transport. Terminate a local PTY after the application exits.

PseudoTerminalView quits the widget application when the child process exits by default. Set quitOnExit: false when the surrounding application should remain open after the terminal session ends.

Use cooked PTY mode for interactive shells so control characters generate signals for foreground processes. PseudoTerminalView supports alternate screens, DEC and Kitty keyboard modes, cursor-position reports, and negotiated SGR/urxvt mouse tracking. Primary-screen output has bounded scrollback with wheel navigation and an overlay scrollbar; when a child enables mouse tracking, wheel and pointer events are forwarded to it instead. When ackProcessed: true is enabled, the view acknowledges each rendered output chunk to keep streaming bounded and responsive.

When embedding the view in a nested split whose inherited constraints are not the final visible pane, pass explicit width and height values to PseudoTerminalView. These values control both the emulated screen and the child PTY's reported geometry.

0
likes
150
points
98
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

An embeddable ANSI terminal emulator and pty2 widget for Artisanal.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

artisanal, artisanal_widgets, characters, pty2

More

Packages that depend on artisanal_pty