elias8/libghostty

Dart bindings to libghostty-vt, the virtual terminal emulator from Ghostty.

27

stars

446

commits

Dart

primary language

Sep 10, 2026

updated

README

Ghostty's full VT engine, as a Flutter widget

libghostty flterm ci license sponsor

Ghostty's libghostty-vt engine for Dart, with a Flutter widget on top.

libghostty

Dart 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);

flterm

Flutter 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);

License

MIT. See LICENSE.

Contributors

elias8

432 commits

dependabot[bot]

10 commits

jacobaraujo7

3 commits

deftdawg

1 commits

elias8/libghostty

Dart bindings to libghostty-vt, the virtual terminal emulator from Ghostty.

27

stars

446

commits

Dart

primary language

Sep 10, 2026

updated

README

Ghostty's full VT engine, as a Flutter widget

libghostty flterm ci license sponsor

Ghostty's libghostty-vt engine for Dart, with a Flutter widget on top.

libghostty

Dart 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);

flterm

Flutter 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);

License

MIT. See LICENSE.

Contributors

elias8

432 commits

dependabot[bot]

10 commits

jacobaraujo7

3 commits

deftdawg

1 commits

Languages

Dart

95.1%

Rust

4.2%