Interactive terminal apps and a composable TUI framework for PowerShell, built with XenoAtom.Terminal.UI. Monitor system activity, browse files and objects, follow logs, manage development work, or build custom apps with reusable controls and a visual designer.
Requires PowerShell 7.6 or later. Install the module from PowerShell Gallery, then open the system monitor:
Install-Module fullscreen
Import-Module fullscreen
ftop| Cmdlet | Alias | Description |
|---|---|---|
| Show-SystemMonitor | ftop |
Processes, services, network, GPU and graphs; local or remote. |
| Show-FileManager | ffile |
Browse files with previews and return selected paths. |
| Show-Commander | fmc |
Dual-pane file manager with copy, move and recoverable trash. |
| Show-ObjectTable | fobject |
Explore pipeline objects, inspect properties and return selections. |
| Out-Chart | Chart whole pipeline objects; change axes, values and graph type in the TUI. | |
| Show-LogViewer | flog |
Follow and filter text or JSON logs. |
| Show-GitManager | fgit |
Manage Git changes, history, branches and worktrees; requires git on PATH. |
| Show-GitHubManager | fgh |
Review issues, pull requests and workflows; requires an authenticated gh CLI. |
| Show-AzureDevOpsManager | fado |
Plan backlogs, review sprints, and browse work items, pull requests and pipelines; requires Azure CLI. |
| Show-TuiDesigner | fdesign |
Design layouts visually and export PowerShell scaffolding. |
| Invoke-Tui | ftui |
Run a custom TUI with state and PowerShell callbacks. |
| Get-TuiControl | — | Discover reusable controls, properties, bindings and events. |
| New-TuiControl | — | Create a control definition for a custom layout. |
| New-TuiDefinition | — | Create or validate a layout from native PowerShell objects. |
| Import-TuiDefinition | — | Load a PSD1 or JSON layout. |
| Export-TuiDefinition | — | Export runnable PowerShell scaffolding, inline or linked to PSD1/JSON. |
| Get-FullscreenTheme | — | Discover palettes and customize theme colors. |
Press F12 in any interactive cmdlet, including while a dialog is open, to toggle the diagnostic overlay with frame timings and keyboard focus.
Every app works with the mouse as well as the keyboard:
- Click to select rows, tabs, buttons and column headers (to sort); double-click to open an item, and use the wheel to scroll or zoom charts.
- Right-click a row, file, process, work item or canvas control for a context menu with its actions. Most apps also open it with A; the designer uses F7.
- Drag to rearrange controls in the designer, resize list and detail panes, or select a range in a chart with Shift-drag.
- Click × in the top-right corner to close the app at any time, even while a dialog is open. Apps with unsaved changes ask for confirmation first.
Object exploration, user sessions and themes
| Expanded objects | Nested array with sortable columns |
|---|---|
![]() |
![]() |
| Property inspector | JSON highlighting |
|---|---|
![]() |
![]() |
| Dark Modern | Light Modern | Monokai |
|---|---|---|
![]() |
![]() |
![]() |
Object action menu · All theme color swatches · Grouped control catalog
Build your own apps from reusable controls. Design a layout visually with
Show-TuiDesigner, then save or export with
Export-TuiDefinition. A .ps1 export embeds
the layout; PSD1/JSON exports also create a companion .ps1 that loads the layout.
Edit that script's event and update stubs to add your application's behavior.
Use Get-TuiControl to discover the available
controls and their properties.
- Use
-LinkedLayoutwith a.ps1export to keep its layout in a sibling.tui.psd1. Existing scripts are preserved; updating layout data with the cmdlet requires-Force. Designer saves ask before replacing layouts. - Generated scripts accept
-Theme,-Minimal,-State,-TickIntervaland-DefinitionOnly, for example./MyTui.ps1 -Minimal -State @{ name = 'Ada' }. - Pass jobs, credentials and live objects through
Invoke-Tui -State; saved layouts contain only serializable defaults. - Handlers run on the UI thread. Run sustained work in a background job and
dispose it in
finally; see BackgroundJob.ps1. - Charts use Sixel graphics when the terminal supports them and terminal cells otherwise.
The examples folder contains runnable scripts. Custom layout scripts
accept -DefinitionOnly to return the layout without opening a terminal:
./examples/ContactForm.ps1 -Theme 'Dark Modern'
$layout = ./examples/SettingsTabs.ps1 -DefinitionOnly
$layout | Show-TuiDesigner
$layout | Export-TuiDefinition -Path ./settings.tui.psd1| Example | Demonstrates |
|---|---|
| ControlGallery.ps1 | Every fullscreen control, handler maps, shared state and selected objects |
| NativeControls.ps1 | Native widgets with populated data; filter by name |
| UserSessions.ps1 | Login sessions with expandable account processes |
| ContactForm.ps1 | Bound inputs, validation and object results |
| ReusableControls.ps1 | Deployment workbench with tables, code, charts and multiline input |
| Workspace.ps1 | Files, telemetry and logs in tabs |
| HandlerMap.ps1 | Direct event handlers and shared state |
| DesignerStarter.ps1 | A styled form and chart for the designer |
| GraphGallery.ps1 | The original twelve graph styles in tabs |
| ChartShowcase.ps1 | All 26 chart kinds, cycling in one window every three seconds for recording |
| ChartCombinations.ps1 | Named multi-line/area series, grouped bars, column/line roles and clickable legends |
| StackedAreas.ps1 | Additive and 100-percent request-outcome areas, missing-component gaps and portable definitions |
| RadialCharts.ps1 | Pie slices, semicircular load gauges, radial lanes and radar comparisons |
| WaterfallHeatmap.ps1 | Signed cumulative changes and matrix cells with a shared color scale |
| MarketCharts.ps1 | Variable-width Marimekko composition and fixed-price Kagi reversals |
| Flamegraph.ps1 | Hierarchical frames with exclusive self samples and inclusive widths |
| Gantt.ps1 | Absolute task intervals, progress and milestones |
| RelationshipCharts.ps1 | Flow/network layouts with separate node and edge collections |
| LiveChart.ps1 | Numeric collections and scale options |
| ProcessDashboard.ps1 | Live process data and tick callbacks |
| BackgroundJob.ps1 | Thread jobs, polling and cleanup |
| LogTail.ps1 | Bounded file reads and error display |
| EventViewer.ps1 | Windows event logs, background queries, filters, resizable panes and event details; optional Windows PSSession |
| SettingsTabs.ps1 | Settings controls and validated results |
| CommandHelp.ps1 | Local help display |
| SpectreContent.ps1 | Spectre renderables supplied by TextMate or another module |
| ToolModule.psm1 | A pipeline picker that returns original objects |
| NativeLayout.psd1 | A portable data-only layout |
| ISpyBrowser.ps1 | Assembly browsing with optional TextMate previews |
The eight chart examples from ChartCombinations.ps1 through
RelationshipCharts.ps1 accept -Theme, -Minimal and -DefinitionOnly,
plus their chart-specific options.
-DefinitionOnly returns a complete portable layout for Show-TuiDesigner,
Export-TuiDefinition or Invoke-Tui; -DataOnly still returns original sample
records (separate Nodes/Edges for relationship charts). DataOnly takes precedence
when both output switches are present. Presentation parameters do not change
portable data; pass them to Invoke-Tui when running a returned definition.
Run ./examples/ChartShowcase.ps1 -Theme Monokai -Minimal for an automatic
showcase. -SecondsPerChart 5 changes the dwell time; -Once closes after one
complete cycle. Previous, Pause / Resume and Next control playback without
opening another window. -DefinitionOnly returns the static layout; timed
callbacks remain in the script, as with generated scaffolds.
Building from a source checkout requires PowerShell 7.6 or later and the .NET 10
SDK. The build creates the module in output/, generates help and runs the checks:
./build.ps1
Import-Module ./output/fullscreen.psd1The built-in apps need no other PowerShell modules. These are used when present;
executables must be on PATH.
| Dependency | Used by | Setup | Without it |
|---|---|---|---|
| TextMate module | Code control; source and Markdown previews |
Install-Module TextMate -Scope CurrentUser |
Source shows as plain text; the Code control shows an install notice. |
| Sixel module | Image previews in the file browser | Install-Module Sixel -Scope CurrentUser, plus a Sixel-capable terminal |
A notice explains what is missing. Charts are unaffected. |
git |
Show-GitManager | Install Git. | Git views are unavailable. |
GitHub CLI (gh) |
Show-GitHubManager | Install gh, then gh auth login. |
GitHub views are unavailable. |
Azure CLI (az) |
Show-AzureDevOpsManager | az extension add --name azure-devops, then az login. |
Azure DevOps views are unavailable. |
Spectre controls display renderables created by the caller; load the module that produces them, such as TextMate, first.









