Ghostty's libghostty-vt engine for Dart, with a Flutter widget on top.
libghosttyDart bindings to libghostty-vt for VT parsing, key/mouse encoding, OSC/SGR parsing, and screen formatting. FFI on native, WASM on web.
import 'package:libghostty/libghostty.dart';
final terminal = Terminal(cols: 80, rows: 24)
..onWritePty = (data) => pty.write(data)
..onTitleChanged = () => print('title: ${terminal.title}');
terminal.write(ptyOutput);
fltermFlutter widget that renders a libghostty Terminal with adaptive
input, themes, selection, and scrollback.
import 'package:flterm/flterm.dart';
final controller = TerminalController()
..onOutput = (bytes) => pty.write(bytes)
..onResize = (size) => pty.resize(size.cols, size.rows);
ptyOutputStream.listen(controller.write);
TerminalView(controller: controller);
MIT. See LICENSE.
Dart
95.1%
Rust
4.2%
Ghostty's libghostty-vt engine for Dart, with a Flutter widget on top.
libghosttyDart bindings to libghostty-vt for VT parsing, key/mouse encoding, OSC/SGR parsing, and screen formatting. FFI on native, WASM on web.
import 'package:libghostty/libghostty.dart';
final terminal = Terminal(cols: 80, rows: 24)
..onWritePty = (data) => pty.write(data)
..onTitleChanged = () => print('title: ${terminal.title}');
terminal.write(ptyOutput);
fltermFlutter widget that renders a libghostty Terminal with adaptive
input, themes, selection, and scrollback.
import 'package:flterm/flterm.dart';
final controller = TerminalController()
..onOutput = (bytes) => pty.write(bytes)
..onResize = (size) => pty.resize(size.cols, size.rows);
ptyOutputStream.listen(controller.write);
TerminalView(controller: controller);
MIT. See LICENSE.
Dart
95.1%
Rust
4.2%