flterm 0.0.2
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:TerminalThemeno longer takesbackground,foreground, andansiColorsdirectly. Build aColorPaletteonce and pass it in, so palettes are something you can share, swap, orcopyWithon their own. - Cursor and selection colors can adapt to the cell under them: the
color fields take
DynamicColor?now. UseDynamicColor.cellForeground()/.cellBackground()to follow the cell, orDynamicColor.fixed(c)for the old static behavior. selectedTextis a method: callcontroller.selectedText()for plain text, or pass aFormatterFormatto 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: trueto 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.backgroundOpacitymakes the default background translucent so the terminal can compose over a translucent window or other widgets.backgroundOpacityCellsextends it to cells with their own bg color. - More theme knobs:
CursorTheme.text(glyph color under a block cursor),TerminalTheme.boldColor(forced bold color), andSelectionTheme.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) viaonOutput,onResize,onBell, andonTitleChanged. 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.