pi-main-menu
A configurable Pi startup welcome screen with greetings, ASCII art, and project context.
Package details
Install pi-main-menu from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-main-menu- Package
pi-main-menu- Version
0.2.5- Published
- Aug 15, 2026
- Downloads
- 335/mo · 7/wk
- Author
- dioxus
- License
- MIT
- Types
- extension
- Size
- 35.6 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-main-menu
A small Pi package that replaces the startup header with a configurable welcome screen. It gives Pi a personal front door: greetings, a block-art logo, project/model context, and a lightweight customization menu.
Install
pi install npm:pi-main-menu
Pi discovers the package through its pi manifest and loads the extension automatically.
The package is also tagged with pi-package so it can appear in the Pi package gallery.
Commands
/welcomeor/main-menu— open the customization menuCtrl+Shift+M— open the same menu/welcome reload— reload the configuration/welcome rotate— pick a new random greeting immediately/welcome preview— show the header as a floating overlay (any key dismisses)/welcome artcolor [color]— style the art in real time: opens a color picker, or set a color directly (e.g./welcome artcolor accent); tab-completes colors/welcome builtin— restore Pi's built-in header for the current session/welcome reset— remove a selected config file
Configuration
The extension reads these files, with project values taking precedence:
~/.pi/agent/main-menu.json.pi/main-menu.json
Example:
{
"greetings": [
"Welcome back.",
"What are we making today?"
],
"art": [
"█████████████████████ ",
"█████████████████████ ",
"█████████████████████ ",
"█████████████████████ ",
"████████ ███████ ",
"████████ ███████ ",
"████████ ███████ ",
"██████████████ ███████",
"██████████████ ███████",
"██████████████ ███████",
"██████████████ ███████",
"████████ ███████",
"████████ ███████",
"████████ ███████"
],
"showArt": true,
"artColor": "accent",
"subtitle": "a small coding cockpit",
"prompt": "Type a prompt or /welcome to customize",
"hints": [
"/welcome customize · Ctrl+Shift+M menu"
],
"showHints": true,
"showContext": true,
"showModel": true,
"showClock": false
}
art may also be a single multiline string or an artFile path relative to the config file.
Set showArt to false to hide the art block. Clearing art in the interactive editor sets it
to false automatically.
artColor tints the art block with a theme color: accent, text, muted, dim, success,
error, warning, border, borderMuted, borderAccent, toolTitle, or mdHeading.
Unknown values are ignored with a warning.
Greeting, subtitle, prompt, and hint strings support these placeholders:
| Placeholder | Value |
|---|---|
{project} |
Project directory name |
{cwd} |
Full working directory path |
{model} |
provider/model-id of the active model |
{modelName} |
Friendly display name of the model |
{session} |
Current session name (or untitled) |
{pi} |
Pi version |
{time} |
Current time (locale format, e.g. 14:41 or 04:41 PM) |
{date} |
Current date (e.g. Fri, Aug 15) |
Live header
The header is not a static snapshot — it updates while pi runs:
{time}(and the context-line clock, whenshowClockis on) ticks once per minute- the model line follows
/modelswitches {session}updates when you rename the session with/name- theme changes re-render immediately
Hide Pi's loaded resource list
Pi's native quietStartup setting hides the [Context], [Skills], and [Extensions]
sections while keeping this custom header visible:
{
"quietStartup": true
}
Put that in .pi/settings.json for one project or ~/.pi/agent/settings.json globally.
The /welcome menu can toggle this setting.
The menu also toggles the project name, model, and clock lines independently
(showContext, showModel, showClock).
License
MIT