flterm 0.0.2 copy "flterm: ^0.0.2" to clipboard
flterm: ^0.0.2 copied to clipboard

Flutter terminal widget on top of Ghostty's libghostty-vt engine.

Changelog #

0.0.2 #

Breaking #

  • Theme colors move into ColorPalette: TerminalTheme no longer takes background, foreground, and ansiColors directly. Build a ColorPalette once and pass it in, so palettes are something you can share, swap, or copyWith on their own.
  • Cursor and selection colors can adapt to the cell under them: the color fields take DynamicColor? now. Use DynamicColor.cellForeground() / .cellBackground() to follow the cell, or DynamicColor.fixed(c) for the old static behavior.
  • selectedText is a method: call controller.selectedText() for plain text, or pass a FormatterFormat to get VT or HTML for rich-clipboard copy.
  • Bold no longer switches to the bright palette by default: expect slightly different bold colors; set boldIsBright: true to restore the old behavior.

Added #

  • Kitty graphics: programs that emit images (previewers, image viewers, some editors) render inside the widget. Cap the cache via TerminalConfig.kittyImageStorageLimit; zero disables.
  • Transparent background: TerminalTheme.backgroundOpacity makes the default background translucent so the terminal can compose over a translucent window or other widgets. backgroundOpacityCells extends it to cells with their own bg color.
  • More theme knobs: CursorTheme.text (glyph color under a block cursor), TerminalTheme.boldColor (forced bold color), and SelectionTheme.foreground (selected-glyph tint).
  • ColorPalette.generated(): derives indices 16–255 from your base 16 plus background and foreground so the extended palette blends instead of clashing with the fixed xterm cube.

Changed #

  • Dirty-row rendering: frames rebuild only rows that changed, so idle terminals cost much less CPU.

0.0.1 #

Initial release.

Added #

  • TerminalView: a Flutter widget that renders a terminal and adapts its input to the host. Mouse and keyboard on desktop, touch and soft keyboard on mobile, both on web.
  • TerminalController: owns the terminal and bridges it with the view. Connects to a backend (PTY, SSH, socket) via onOutput, onResize, onBell, and onTitleChanged. Exposes I/O (write, sendText, sendKey), selection (selectAll, selectWord, selectLine), focus, scrolling, paste, clear, and mode toggling.
  • Themes: ANSI 16, 256-color, and truecolor palettes; cursor shape, color, and blink; hyperlink style; font family, size, and fallback; minimum contrast. Immutable and lerp-able.
  • Wide characters: CJK, color emoji, VS16, and combining marks render correctly; selection snaps to whole cells.
  • Mouse selection: drag, double-click word, triple-click line, and Alt+drag block. Configurable via TerminalGestureSettings.
  • Shortcuts: built-in copy, paste, select all, and clear with platform-aware defaults (Cmd on macOS/iOS, Ctrl+Shift on Linux/Windows). Extend or replace with any Flutter Intent.
  • OSC 8 hyperlinks: idle and highlighted styles with click hit-testing.
  • Cross-platform: Android, iOS, Linux, macOS, Web (WASM), Windows.
0
likes
160
points
196
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter terminal widget on top of Ghostty's libghostty-vt engine.

Homepage
Repository (GitHub)
View/report issues

Topics

#terminal #terminal-emulator #ghostty #libghostty #vt100

License

MIT (license)

Dependencies

flutter, image, libghostty, meta

More

Packages that depend on flterm