fv-go

module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 6, 2026 License: LGPL-2.1

README

fv-go — Free Vision for Go

ci

A Go port of Free Vision, the Turbo-Vision-derived console UI framework originally from Free Pascal. Based on the modernized Delphi version at oldwired/fv-delphi-modern, not the original Free Pascal sources.

Status: full vertical slice up to and including an embedded VT terminal emulator. macOS / Linux first-class; Windows builds clean (ConPTY-backed terminal, otherwise feature-parity).

What's in the box

  • Foundation — types, term backend (hand-rolled VT100/SGR, alt screen, bracketed paste, SGR-1006 mouse, focus events, cell-pixel probe), drivers (FV event queue), screen primitives.
  • ViewsView, Group, Window (drag/resize/zoom/close), Frame, ScrollBar, Scroller, ListViewer, Background, SplitGroup.
  • AppProgram / Application / Desktop, idle loop with dirty-tracking, anim ticker, pre-flush hook for SIXEL z-order, wake-channel so async data (PTY output) doesn't wait for the next keystroke.
  • MenusMenuBar, MenuBox (nested submenus, hotkeys, Alt+letter, Left/Right cycling between top-level menus), StatusLine.
  • DialogsDialog, Button, InputLine, Cluster (radio / check), ListBox / StringListBox, Label, StaticText, ParamText, History, CheckListBox, InputLong.
  • Standard dialogsmsgbox, classic single-pane stddlg.Show (file/save/changeDir), modern split-pane stddlg.ShowModern with lazy-loaded directory tree + file-info pane.
  • Validators — picture / range / filter / lookup, the full TV set.
  • Widget toolkit — 30+ widgets: ProgressBar, Sparkline, BarChart, VUMeter, ToggleSwitch, LEDDigits, ColorTxt, BlinkIndicator, Marquee, ToolBar, Tabs, Accordion, Notification, Tooltip, PopupMenu, TimedDlg, ComboBox, TreeView (lazy-load via OnExpand), AsciiTab, SpinnerView, TaskProgress, Breadcrumb, Calendar, ColorSel.
  • Heavy — Editor (with optional EditorGutter for line numbers / breakpoints / bookmarks; pluggable syntax highlighting via widgets/syntax), HexEdit, Grid, MarkdownView, LogViewer, FuzzyFinder.
  • System gadgets — CPUMeter, CPUCoreView, RAMView, DiskUsageView, BatteryView, NetworkView, ProcessView, UptimeView. All bring-your-own-data via a Sampler callback so the framework stays portable.
  • Graphicspkg/fv/sixel realtime (216-cube) + quality (median-cut + Floyd-Steinberg) encoders, cell-pixel-size probe via CSI 16t, ImageView (PNG/JPEG/GIF/BMP/TIFF/WebP) and SixelCanvasView (programmable pixel canvas with line/rect/fill primitives). Half-block fallback on terminals without SIXEL.
  • Terminal emulatorwidgets/terminal. PTY-backed shell via creack/pty on Unix and ConPTY on Windows. VT100 + xterm parser covering plain text + UTF-8, the C0 set, CSI cursor/erase/SGR/scroll, DEC private modes (autowrap, cursor vis, alt screen), OSC 0/1/2 titles. 2000-line scrollback with /-search; drag-to-select + clipboard copy; mouse forwarding when the inner program asks for it.

Quickstart

package main

import (
    "github.com/oldwired/fv-go/pkg/fv/app"
    "github.com/oldwired/fv-go/pkg/fv/consts"
    "github.com/oldwired/fv-go/pkg/fv/dialogs"
    "github.com/oldwired/fv-go/pkg/fv/drivers"
    "github.com/oldwired/fv-go/pkg/fv/geom"
    "github.com/oldwired/fv-go/pkg/fv/menus"
    "github.com/oldwired/fv-go/pkg/fv/views"
)

func main() {
    a, err := app.NewApplication()
    if err != nil {
        panic(err)
    }
    defer a.Done()

    cols := a.BaseView().Size.X
    a.SetMenuBar(menus.NewMenuBar(geom.NewRect(0, 0, cols, 1),
        menus.NewMenu(
            &menus.Item{Name: "~F~ile", Sub: menus.NewMenu(
                &menus.Item{Name: "~Q~uit", Command: consts.CmQuitApp},
            )},
        )))

    a.OnCommand = func(cmd uint16, ev *drivers.Event) bool {
        // Custom commands land here.
        return false
    }

    // Open a window with a button. NewWindow's third arg is the
    // number badge in the frame title — 0 means no badge.
    win := views.NewWindow(geom.NewRect(5, 3, 40, 10), "Hello", 0)
    win.Insert(dialogs.NewButton(geom.NewRect(2, 2, 16, 3), "~C~lick me",
        consts.CmOK, dialogs.BfDefault))
    a.Desktop.InsertWindow(win)

    a.Run()
}

See docs/QUICKSTART.md for a deeper tour and cmd/fvdemo/ for a fully-loaded demo exercising every widget.

Running the demo

go run ./cmd/fvdemo

The demo opens with a menu bar; explore via Test → Widgets / Test → Apps for the widget showcases. On a SIXEL-capable terminal (iTerm2, WezTerm, kitty, Windows Terminal ≥ 1.22), Apps → Image View (Open...) and Apps → Sixel Canvas render true pixel graphics.

Architecture

Application:  app.Application / app.Program / app.Desktop      (app/)
Widgets:      Dialog, Button, InputLine, ListBox, …            (dialogs/, widgets/*)
Views:        View, Group, Window, Frame, ScrollBar, Scroller  (views/)
Drivers:      Event queue, keyboard, mouse                     (drivers/)
              Console output, VT/SGR, SIXEL                    (term/, sixel/)
Foundation:   Cell types, geom, unicode width, profile         (types/, geom/, unicode/, utf8/, profile/)

The layering matches the Delphi reference: each layer only depends on the ones below it. The four cross-cutting interfaces from Pascal (IFVDrawable, IFVEventHandler, IFVDataAware, ISerializable) become Go interfaces satisfied structurally by views.View.

Pascal → Go translation notes

These are the non-obvious mappings the original PORTING.md won't give you:

  • No inheritance. Pascal's TGroup : TView, TWindow : TGroup, etc. are rewritten with embedding + interface satisfaction. Virtual dispatch goes through a self View back-pointer set by SetSelf during construction.
  • In-place initialization. InitGroup, InitWindow, InitDialog exist alongside the NewX constructors to avoid the struct-copy bug that orphans child Owner pointers — initialize via these whenever you embed a Group / Window / Dialog by value.
  • Manual ref-counting is gone. Parents own children via slices; the GC handles cleanup. No _AddRef/_Release plumbing.
  • TFVStreamio.Reader/io.Writer for streaming; persistence-with-type-tags maps cleanly to encoding/json + a type registry (pkg/fv/serial).
  • Unicode width (FVUnicodeWidth.pas) is data, not logic — ported verbatim into pkg/fv/unicode. Emoji and CJK rendering depends on the wide / zero-width / combining classification.
  • Windows-only assumptions don't transfer. FVScreen.pas (Windows Console API) and FVClipboard.pas (Win32 clipboard) are replaced by the hand-rolled VT/SGR writer in pkg/fv/term and OSC 52 clipboard in pkg/fv/clipboard. Cross-platform from day one.

License

Inherits the Free Vision / Free Pascal license:

  • LICENSE — GNU Lesser General Public License, version 2.1.
  • FPC-EXCEPTION.txt — Free Pascal library linking exception, which permits linking against modified versions without forcing the linked work to be LGPL.

SPDX-License-Identifier: LGPL-2.1-or-later WITH FPC-modified-LGPL-exception

The practical effect of the FPC exception is that you may distribute statically linked binaries without needing to make your application's source available, provided you preserve the fv-go license headers and provide notice that the library may be replaced or recompiled. See FPC-EXCEPTION.txt for the exact terms. Original-author copyright headers are preserved inside each ported unit.

Supply chain

Each tagged GitHub Release ships a CycloneDX SBOM (fv-go-vX.Y.Z.cdx.json) describing the module's declared dependency graph and the detected license of every component. Generated by cyclonedx-gomod in CI on tag push — see .github/workflows/release.yml.

gh release download vX.Y.Z -p '*.cdx.json'

Directories

Path Synopsis
cmd
emojiwidth command
emojiwidth is a one-shot diagnostic that asks your terminal how many cells it actually advances the cursor for a handful of emoji glyphs.
emojiwidth is a one-shot diagnostic that asks your terminal how many cells it actually advances the cursor for a handful of emoji glyphs.
emojiwidth/dump command
dump renders the demo's emoji line into a headless cellbuf and prints what each cell ends up holding.
dump renders the demo's emoji line into a headless cellbuf and prints what each cell ends up holding.
emojiwidth/wholewin command
wholewin renders the Unicode-demo window into a headless backend and prints every cell of the Emoji row plus a few cells of the surrounding rows.
wholewin renders the Unicode-demo window into a headless backend and prints every cell of the Emoji row plus a few cells of the surrounding rows.
fvdemo command
Command fvdemo is a Turbo-Vision-style demo program that exercises the fv-go widget set: menus, dialogs, list boxes, validators, and message boxes.
Command fvdemo is a Turbo-Vision-style demo program that exercises the fv-go widget set: menus, dialogs, list boxes, validators, and message boxes.
pkg
fv/anim
Package anim provides a tiny animation/ticker registry.
Package anim provides a tiny animation/ticker registry.
fv/app
Package app ports App.pas: Program, Application, Desktop, Background.
Package app ports App.pas: Program, Application, Desktop, Background.
fv/clipboard
Package clipboard is the cut/copy/paste backbone for fv-go widgets.
Package clipboard is the cut/copy/paste backbone for fv-go widgets.
fv/consts
Package consts defines the integer constants used throughout fv-go: type IDs, command IDs, help contexts, and history list IDs.
Package consts defines the integer constants used throughout fv-go: type IDs, command IDs, help contexts, and history list IDs.
fv/dialogs
Package dialogs ports Dialogs.pas: Dialog, Button, InputLine, Label, StaticText, ParamText, Cluster (CheckBoxes/RadioButtons), ListBox, StringListBox, History.
Package dialogs ports Dialogs.pas: Dialog, Button, InputLine, Label, StaticText, ParamText, Cluster (CheckBoxes/RadioButtons), ListBox, StringListBox, History.
fv/drivers
Package drivers provides the FV-style Event record, command set, palette types, and the event queue used by Program.GetEvent.
Package drivers provides the FV-style Event record, command set, palette types, and the event queue used by Program.GetEvent.
fv/geom
Package geom provides Point and Rect — the integer-coordinate geometry types used everywhere in fv-go.
Package geom provides Point and Rect — the integer-coordinate geometry types used everywhere in fv-go.
fv/help
Package help provides the context-sensitive help system: callers register help text against numeric "context" IDs (the same uint16 values used by views.Base.HelpCtx), and Show opens a modal window displaying the text for a given context.
Package help provides the context-sensitive help system: callers register help text against numeric "context" IDs (the same uint16 values used by views.Base.HelpCtx), and Show opens a modal window displaying the text for a given context.
fv/history
Package history maintains per-ID history lists, used by InputLine (recall past values), ComboBox, file dialogs, and any widget that wants a "previously-entered values" dropdown.
Package history maintains per-ID history lists, used by InputLine (recall past values), ComboBox, file dialogs, and any widget that wants a "previously-entered values" dropdown.
fv/menus
Package menus ports Menus.pas: MenuBar, MenuBox (popup), StatusLine.
Package menus ports Menus.pas: MenuBar, MenuBox (popup), StatusLine.
fv/msgbox
Package msgbox ports MsgBox.pas: simple modal information / question / confirmation popups that block until the user clicks a button.
Package msgbox ports MsgBox.pas: simple modal information / question / confirmation popups that block until the user clicks a button.
fv/profile
Package profile detects the host terminal's capabilities once at startup and exposes a singleton Profile that the rest of fv-go consults.
Package profile detects the host terminal's capabilities once at startup and exposes a singleton Profile that the rest of fv-go consults.
fv/screen
Package screen wraps term.Backend with the FV-style draw helpers every view uses (DrawChar, DrawStr, DrawCStr, DrawBuf).
Package screen wraps term.Backend with the FV-style draw helpers every view uses (DrawChar, DrawStr, DrawCStr, DrawBuf).
fv/serial
Package serial provides a JSON-serialization registry for fv-go views and the small set of helpers FV uses to round-trip Point/Rect/StringList.
Package serial provides a JSON-serialization registry for fv-go views and the small set of helpers FV uses to round-trip Point/Rect/StringList.
fv/sixel
Package sixel emits DEC SIXEL DCS strings for terminals that support the protocol (iTerm2, Windows Terminal recently, mlterm, xterm with --enable-sixel-graphics, kitty in xterm-compat mode, …).
Package sixel emits DEC SIXEL DCS strings for terminals that support the protocol (iTerm2, Windows Terminal recently, mlterm, xterm with --enable-sixel-graphics, kitty in xterm-compat mode, …).
fv/streams
Package streams provides FV-style stream wrappers around Go's standard io interfaces.
Package streams provides FV-style stream wrappers around Go's standard io interfaces.
fv/term
Package term is the hand-rolled cross-platform terminal backend for fv-go.
Package term is the hand-rolled cross-platform terminal backend for fv-go.
fv/theme
Package theme is the framework-wide color palette.
Package theme is the framework-wide color palette.
fv/types
Package types provides the core value types used throughout fv-go: draw cells, screen cells, palette colors, and text attributes.
Package types provides the core value types used throughout fv-go: draw cells, screen cells, palette colors, and text attributes.
fv/utf8
Package utf8 mirrors FVUTF8.pas: encoding sniffing, conversion to UTF-8, and grapheme-cluster-aware display-width / slicing helpers.
Package utf8 mirrors FVUTF8.pas: encoding sniffing, conversion to UTF-8, and grapheme-cluster-aware display-width / slicing helpers.
fv/validators
Package validators ports Validate.pas: input validators that InputLine consults before accepting user-typed text.
Package validators ports Validate.pas: input validators that InputLine consults before accepting user-typed text.
fv/views
Package views ports Views.pas: View, Group, Frame, Window, ScrollBar, Scroller, ListViewer, Background.
Package views ports Views.pas: View, Group, Frame, Window, ScrollBar, Scroller, ListViewer, Background.
fv/widgets/accordion
Package accordion provides Accordion — a vertical stack of expandable / collapsible sections.
Package accordion provides Accordion — a vertical stack of expandable / collapsible sections.
fv/widgets/asciitab
Package asciitab provides ASCIIChart — a 16×16 grid of the first 256 codepoints, useful for picking a glyph or just for reference.
Package asciitab provides ASCIIChart — a 16×16 grid of the first 256 codepoints, useful for picking a glyph or just for reference.
fv/widgets/barchart
Package barchart provides BarChart — a simple labeled bar chart (horizontal bars only, with auto-scaling and value annotations).
Package barchart provides BarChart — a simple labeled bar chart (horizontal bars only, with auto-scaling and value annotations).
fv/widgets/battery
Package battery provides BatteryView — a small "battery icon" rendering with charge percentage and AC/discharging status.
Package battery provides BatteryView — a small "battery icon" rendering with charge percentage and AC/discharging status.
fv/widgets/blink
Package blink provides BlinkIndicator — a small "activity" dot with off / steady / blinking states.
Package blink provides BlinkIndicator — a small "activity" dot with off / steady / blinking states.
fv/widgets/breadcrumb
Package breadcrumb provides Breadcrumb — a clickable path-style navigation element ("Home › Apps › Settings ›").
Package breadcrumb provides Breadcrumb — a clickable path-style navigation element ("Home › Apps › Settings ›").
fv/widgets/calendar
Package calendar provides Calendar — a text-mode month grid with keyboard / mouse date selection, and CalendarDialog — a modal "pick a date" wrapper.
Package calendar provides Calendar — a text-mode month grid with keyboard / mouse date selection, and CalendarDialog — a modal "pick a date" wrapper.
fv/widgets/clock
Package clock provides a digital + analog clock widget.
Package clock provides a digital + analog clock widget.
fv/widgets/colorsel
Package colorsel provides ColorSelector — a 16-color palette picker laid out as a 4×4 grid — and ShowDialog, a "pick a color" wrapper.
Package colorsel provides ColorSelector — a 16-color palette picker laid out as a 4×4 grid — and ShowDialog, a "pick a color" wrapper.
fv/widgets/colortxt
Package colortxt provides ColoredText, a StaticText variant that paints with a caller-supplied attribute byte instead of the default dialog body color.
Package colortxt provides ColoredText, a StaticText variant that paints with a caller-supplied attribute byte instead of the default dialog body color.
fv/widgets/combobox
Package combobox provides ComboBox — an InputLine with a dropdown arrow that opens a PopupMenu of preset choices.
Package combobox provides ComboBox — an InputLine with a dropdown arrow that opens a PopupMenu of preset choices.
fv/widgets/cpucore
Package cpucore provides CPUCoreView — a multi-bar gauge showing per-core CPU utilization.
Package cpucore provides CPUCoreView — a multi-bar gauge showing per-core CPU utilization.
fv/widgets/cpumeter
Package cpumeter provides CPUMeter — a single-bar CPU-utilization gauge.
Package cpumeter provides CPUMeter — a single-bar CPU-utilization gauge.
fv/widgets/diskusage
Package diskusage provides DiskUsageView — one row per mounted volume showing used/total and a fill bar.
Package diskusage provides DiskUsageView — one row per mounted volume showing used/total and a fill bar.
fv/widgets/editor
Package editor provides Editor — a multi-line UTF-8 text editor view with insert/delete, cursor navigation, selection, clipboard integration, and encoding-aware load/save.
Package editor provides Editor — a multi-line UTF-8 text editor view with insert/delete, cursor navigation, selection, clipboard integration, and encoding-aware load/save.
fv/widgets/editorgutter
Package editorgutter provides EditorGutter — a vertical column that sits to the left (or right) of an Editor and renders per-line metadata: line numbers, bookmarks, breakpoints, diff markers, etc.
Package editorgutter provides EditorGutter — a vertical column that sits to the left (or right) of an Editor and renders per-line metadata: line numbers, bookmarks, breakpoints, diff markers, etc.
fv/widgets/fuzzyfinder
Package fuzzyfinder provides FuzzyFinder — an interactive "type to filter" picker that scores items by character-subsequence match.
Package fuzzyfinder provides FuzzyFinder — an interactive "type to filter" picker that scores items by character-subsequence match.
fv/widgets/grid
Package grid provides StringGrid — a terminal-mode data grid with rows, named columns, in-place cell editing, mouse navigation, per- column alignment and validation, multi-cell selection, click-to-sort headers, an optional filter row, copy-to-clipboard, column resize and reorder via mouse drag, frozen leading columns, CSV import / export, and a virtual-data-source mode for huge datasets.
Package grid provides StringGrid — a terminal-mode data grid with rows, named columns, in-place cell editing, mouse navigation, per- column alignment and validation, multi-cell selection, click-to-sort headers, an optional filter row, copy-to-clipboard, column resize and reorder via mouse drag, frozen leading columns, CSV import / export, and a virtual-data-source mode for huge datasets.
fv/widgets/heapview
Package heapview displays current Go heap memory usage as a tiny status-line gadget.
Package heapview displays current Go heap memory usage as a tiny status-line gadget.
fv/widgets/hexedit
Package hexedit provides HexEditor — a 16-bytes-per-row hex+ASCII viewer/editor with two edit modes (hex nibble / ASCII char), a caret, modified-byte tracking, and pluggable data sources.
Package hexedit provides HexEditor — a 16-bytes-per-row hex+ASCII viewer/editor with two edit modes (hex nibble / ASCII char), a caret, modified-byte tracking, and pluggable data sources.
fv/widgets/hoverpopup
Package hoverpopup provides HoverPopup — a non-modal, multi-line tooltip/popup positioned at an arbitrary cell of a host group.
Package hoverpopup provides HoverPopup — a non-modal, multi-line tooltip/popup positioned at an arbitrary cell of a host group.
fv/widgets/hyperlink
Package hyperlink provides Hyperlink — a clickable text view that renders as a standard underlined "link" and additionally wraps its cells in the OSC 8 hyperlink escape so terminals that support the protocol (iTerm2, WezTerm, recent gnome-terminal, mintty, Windows Terminal …) make the text actually clickable.
Package hyperlink provides Hyperlink — a clickable text view that renders as a standard underlined "link" and additionally wraps its cells in the OSC 8 hyperlink escape so terminals that support the protocol (iTerm2, WezTerm, recent gnome-terminal, mintty, Windows Terminal …) make the text actually clickable.
fv/widgets/imageview
Package imageview provides ImageView — a view that renders a stdlib image.Image either as Unicode half-blocks (works on every terminal) or as SIXEL graphics (when the host supports it).
Package imageview provides ImageView — a view that renders a stdlib image.Image either as Unicode half-blocks (works on every terminal) or as SIXEL graphics (when the host supports it).
fv/widgets/leddigits
Package leddigits provides LEDDigits — a 7-segment numeric display rendered with ASCII '_' and '|'.
Package leddigits provides LEDDigits — a 7-segment numeric display rendered with ASCII '_' and '|'.
fv/widgets/logviewer
Package logviewer provides LogViewer — an append-only display of timestamped log entries with severity coloring, level filtering, and auto-scroll-to-bottom behavior.
Package logviewer provides LogViewer — an append-only display of timestamped log entries with severity coloring, level filtering, and auto-scroll-to-bottom behavior.
fv/widgets/markdown
Package markdown provides MarkdownView — a read-only widget that renders a useful subset of CommonMark / GFM:
Package markdown provides MarkdownView — a read-only widget that renders a useful subset of CommonMark / GFM:
fv/widgets/marquee
Package marquee provides Marquee — a horizontally scrolling text ticker.
Package marquee provides Marquee — a horizontally scrolling text ticker.
fv/widgets/network
Package network provides NetworkView — interface-by-interface throughput display with sparklines.
Package network provides NetworkView — interface-by-interface throughput display with sparklines.
fv/widgets/notification
Package notification provides Notification — a small non-modal "toast" window that auto-dismisses after a timeout.
Package notification provides Notification — a small non-modal "toast" window that auto-dismisses after a timeout.
fv/widgets/popupmenu
Package popupmenu provides PopupMenu — a reusable filtered list dropdown, used by ComboBox, History, the menu bar, and ad-hoc "right-click context menu" patterns.
Package popupmenu provides PopupMenu — a reusable filtered list dropdown, used by ComboBox, History, the menu bar, and ad-hoc "right-click context menu" patterns.
fv/widgets/process
Package process provides ProcessView — a simple process-list table: PID, CPU%, MEM%, command.
Package process provides ProcessView — a simple process-list table: PID, CPU%, MEM%, command.
fv/widgets/progressbar
Package progressbar provides ProgressBar, a single-line visual progress indicator with optional percentage label.
Package progressbar provides ProgressBar, a single-line visual progress indicator with optional percentage label.
fv/widgets/ramview
Package ramview provides RAMView — a memory-utilization bar with used / free / total annotations.
Package ramview provides RAMView — a memory-utilization bar with used / free / total annotations.
fv/widgets/sixelcanvas
Package sixelcanvas provides SixelCanvasView — a fixed-size pixel buffer the application can draw into and have rendered as SIXEL graphics (or half-block fallback).
Package sixelcanvas provides SixelCanvasView — a fixed-size pixel buffer the application can draw into and have rendered as SIXEL graphics (or half-block fallback).
fv/widgets/sparkline
Package sparkline provides Sparkline — an inline mini-chart that renders a series of values as 8-level Unicode block characters.
Package sparkline provides Sparkline — an inline mini-chart that renders a series of values as 8-level Unicode block characters.
fv/widgets/spinner
Package spinner provides Spinner — a small animated busy indicator with selectable frame sets.
Package spinner provides Spinner — a small animated busy indicator with selectable frame sets.
fv/widgets/stddlg
Package stddlg provides standard file / directory selection dialogs: FileOpen, FileSave, ChangeDir.
Package stddlg provides standard file / directory selection dialogs: FileOpen, FileSave, ChangeDir.
fv/widgets/syntax
Package syntax is a small token-coloring engine.
Package syntax is a small token-coloring engine.
fv/widgets/tabs
Package tabs provides Tabs — a tabbed container.
Package tabs provides Tabs — a tabbed container.
fv/widgets/taskprogress
Package taskprogress provides TaskProgress — a multi-row progress view: caption · spinner · bar · percent · ETA per task.
Package taskprogress provides TaskProgress — a multi-row progress view: caption · spinner · bar · percent · ETA per task.
fv/widgets/terminal
Package terminal provides Terminal — an embedded VT100/xterm-compatible terminal emulator view.
Package terminal provides Terminal — an embedded VT100/xterm-compatible terminal emulator view.
fv/widgets/terminal/internal/conpty
Package conpty isolates one Win32 attribute call that needs a uintptr → unsafe.Pointer conversion (PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE per Microsoft's official ConPTY sample).
Package conpty isolates one Win32 attribute call that needs a uintptr → unsafe.Pointer conversion (PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE per Microsoft's official ConPTY sample).
fv/widgets/timeddlg
Package timeddlg provides TimedDialog — a Dialog that closes itself after a configurable timeout, and TimedDialogText for displaying the remaining seconds inside.
Package timeddlg provides TimedDialog — a Dialog that closes itself after a configurable timeout, and TimedDialogText for displaying the remaining seconds inside.
fv/widgets/toggle
Package toggle provides ToggleSwitch — an interactive on/off control with three visual styles (slider, checkbox, brackets) and an optional label whose ~hotkey~ gets highlighted.
Package toggle provides ToggleSwitch — an interactive on/off control with three visual styles (slider, checkbox, brackets) and an optional label whose ~hotkey~ gets highlighted.
fv/widgets/toolbar
Package toolbar provides ToolBar — a horizontal button bar similar in spirit to the Pascal TToolBar (which mirrors the StatusLine linked-list-of-items pattern).
Package toolbar provides ToolBar — a horizontal button bar similar in spirit to the Pascal TToolBar (which mirrors the StatusLine linked-list-of-items pattern).
fv/widgets/tooltip
Package tooltip provides Tooltip — a small focus-driven hint that appears after a delay over the focused view, reading its TipText if it implements the Tipper interface.
Package tooltip provides Tooltip — a small focus-driven hint that appears after a delay over the focused view, reading its TipText if it implements the Tipper interface.
fv/widgets/treeview
Package treeview provides TreeView — a hierarchical list widget with expandable / collapsible nodes.
Package treeview provides TreeView — a hierarchical list widget with expandable / collapsible nodes.
fv/widgets/uptime
Package uptime provides UptimeView — a simple "up since" display showing days/hours/minutes/seconds elapsed from a fixed start time.
Package uptime provides UptimeView — a simple "up since" display showing days/hours/minutes/seconds elapsed from a fixed start time.
fv/widgets/vumeter
Package vumeter provides VUMeter — an audio-style level meter with peak hold and a yellow / red threshold zone.
Package vumeter provides VUMeter — an audio-style level meter with peak hold and a yellow / red threshold zone.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL