@smoose/pi-themes

Theme pack for pi with file-based theme switching.

Packages

Package details

extensiontheme

Install @smoose/pi-themes from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@smoose/pi-themes
Package
@smoose/pi-themes
Version
0.1.0
Published
May 29, 2026
Downloads
not available
Author
smoose
License
MIT
Types
extension, theme
Size
31 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./extensions"
  ],
  "themes": [
    "./themes"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-themes

A theme pack for pi, with file-based switching for paired light/dark theme families.

Installation

pi install npm:@smoose/pi-themes

This package currently includes Everforest, Tundra, Rosé Pine, OneDark, Gruvbox, and Bearded Arc. Paired theme families can follow the <family>-light / <family>-dark naming convention; standalone themes can be selected by concrete theme name in the control file.

Included themes

Everforest

  • everforest-dark
  • everforest-light

Tundra

Extracted from sam4llis/nvim-tundra's arctic palette and stylesheet:

  • tundra-dark

Rosé Pine

Extracted from the official Rosé Pine palette:

  • rosepine-dark
  • rosepine-light

OneDark

Extracted from navarasu/onedark.nvim's palette styles:

  • onedark-dark
  • onedark-light

Gruvbox

Extracted from morhetz/gruvbox's medium-contrast palette:

  • gruvbox-dark
  • gruvbox-light

Bearded Arc

Extracted from BeardedBear/bearded-theme's Arc variation:

  • bearded-arc-dark

How switching works

The running pi extension watches a small control file. When the file changes, the extension reads it and calls ctx.ui.setTheme(...) inside pi.

The extension also sets a footer/status key named pi-themes, which can be consumed or styled together with other footer plugins.

Default control file:

~/.pi/agent/pi-theme.json

Override it with:

PI_THEME_CONTROL_FILE=/path/to/pi-theme.json

Control file format

Select a paired theme family and appearance:

{
  "family": "everforest",
  "appearance": "dark"
}

This switches to:

everforest-dark

Set a concrete theme directly:

{
  "theme": "tundra-dark"
}

External tools can write this file however they like, for example:

mkdir -p ~/.pi/agent
printf '{"family":"everforest","appearance":"dark"}\n' > ~/.pi/agent/pi-theme.json
printf '{"theme":"tundra-dark"}\n' > ~/.pi/agent/pi-theme.json

Pi command

Inside pi, theme-family control is also available through:

/theme everforest        # defaults to everforest-dark
/theme everforest light
/theme rosepine light
/theme tundra            # defaults to tundra-dark

The command format is:

/theme <family> [dark|light]

If dark or light is omitted, dark is used. The command only requires the target concrete theme to exist, so dark-only families like tundra-dark are supported.

Environment

PI_THEME=everforest
PI_THEME_CONTROL_FILE=~/.pi/agent/pi-theme.json

PI_THEME sets the default family used when the /theme command omits a family-specific context. File-based switching itself is driven by the control file.