Skip to content

The TUI

Run bare ttd and the full-screen interface opens — six screens covering everything the CLI does, plus always-on timer and quick-log keys.

TUI tour

Global keys

These work on every screen:

Key Action
1 – 6 switch screens (the nav rail shows the numbers)
s start a timer / stop the running one
l quick log — choose time or expense
r refresh
q quit

The footer always shows every available key for the current screen — on narrow terminals it wraps onto extra rows rather than hiding shortcuts.

Dashboard

Screen 1. The big timer (idle or running), today's entries, the week's hours and unbilled value, and a 12-week activity heatmap:

The footer summary matches ttd status on the CLI (week hours and unbilled value).

Dashboard

Log

Screen 2. A month-scoped view of time entries and expenses in two stacked tables — browse, edit, and delete either kind. Keys: [ ] change month, g jump to this month, tab switch between sections, e edit, x delete the focused row.

Log

Time rows show date, project, duration, note, and flags (nb, inv). Expense rows show date, project, description, amount (inv when invoiced). An empty month still shows both section headers.

Add new records with global l (time or expense). See Expenses for expense workflows.

Clients

Screen 3. The portfolio as a tree — clients, their projects, rates, and unbilled hours. Keys: a add client, p add project, e edit, x archive, D delete.

Clients

Reports

Screen 4. Weekly or monthly rollups with per-day bar chart and activity heat strips. Keys: w/m mode, [ ] paging, Enter expand entries.

Reports

Invoices

Screen 5. Every invoice with its status pill; create, inspect, render, and advance them without leaving the screen. When tax.set_aside_rate is set, the list adds est. tax and take-home columns (dim until the invoice is paid), and the detail modal shows the same figures. Keys: n new, o detail, u refresh, m markdown preview, e render (format modal), t sent, p paid, v void.

Invoices

Taxes

Screen 6. The quarterly set-aside dashboard. Keys: p record payment, [ ] change year.

Taxes

Quick log and modals

l opens a chooser: time (natural-language entry with live preview) or expense (project, description, amount, date). Time logging uses the same time expressions as the CLI:

Quick log chooser

Forms submit with Enter and cancel with Esc; confirmation dialogs accept y; pickers are arrow-key lists.

Themes

Press Ctrl+T anywhere in the TUI, or open the command palette (ctrl+p) → Theme, to browse Textual's full theme catalog in a two-column picker: searchable list on the left, a miniature TUI preview on the right. Arrow keys update the preview live; press Enter to apply or Esc to cancel and restore your previous theme. You'll be asked whether to save the choice as your default.

Saved themes go to your global config file. You can also set the theme via config (takes effect on next launch):

$ ttd config set display.theme ttd-light    # or ttd-dark (default)

Dashboard, light theme

Full key reference

Every key on every screen, in one table: Keyboard shortcuts.