ui

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2026 License: MIT Imports: 32 Imported by: 0

Documentation

Overview

Package ui assembles the terminal interface.

The rule this package follows is that widgets never hold application state. Anything a decision depends on — the current statement, the guard verdict, the result buffer — lives outside tview, so it can be tested without a terminal. Widgets only render what they are handed.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App struct {
	// contains filtered or unexported fields
}

App is the running interface for one datasource.

func New

func New(sess *session.Session, cfg *config.Config, deps Deps) *App

New builds the interface for an open session.

The session rather than the connection, because switching datasource has to close what it left — and a tunnel closed by nobody outlives the thing it was carrying.

func (*App) Run

func (a *App) Run() error

Run starts the event loop and blocks until the user quits.

func (*App) SetScreen

func (a *App) SetScreen(screen tcell.Screen)

SetScreen replaces the terminal the interface draws on. Tests pass a tcell simulation screen so the real interface — layout, key handling, guard dialogs — can be exercised without a terminal.

func (*App) Stop

func (a *App) Stop()

Stop ends the event loop.

type Deps

type Deps struct {
	Keys    *keymap.Map
	Cache   *catalog.Cache
	History *history.Store
	// Worktree is the directory named by --dir, if any. Nil means the session
	// starts unattached, which is the ordinary case.
	Worktree *worktree.Worktree
	// Recent is the list of directories attached before. Nil costs the
	// shortcut and nothing else.
	Recent *recent.List
	// Connect opens another datasource, for switching mid-session. Nil leaves
	// the session on the datasource it started with, and the switch says so
	// rather than failing silently.
	Connect func(context.Context, *config.DataSource) (*session.Session, error)
}

Deps are the optional collaborators an interface can be given.

They are optional so that the interface still opens when the cache cannot be created — a read-only home directory should cost the user completion, not the whole application.

Jump to

Keyboard shortcuts

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