GitHub - jcraigk/nerdflair: NerdFlair adds an attractive statusline and UI sounds to Claude Code

4 min read Original article ↗

NerdFlair logo

MIT License macOS | Linux Bash jq

A configurable bash statusline and audio/spinner pack for Claude Code

nerdflair preview

Layout and color variations

nerdflair variations

Quick Start

/plugin marketplace add jcraigk/nerdflair
/plugin install nerdflair@jcraigk/nerdflair
/nerdflair install

Restart Claude Code after install for the changes to take effect.

Features

  • 3 layout modes: full (3 rows), compact (2 rows), minimal (1 row)
  • Context bar: color shifts from green to red as context fills, with a compaction threshold marker
  • 3 color palettes: vibrant (full color), muted (desaturated), mono (grayscale)
  • Custom spinner verbs: 150 themed thinking/working phrases
  • Terminal bell: (tab indicator) on Notification, PermissionRequest, and Stop events
  • Audio chimes (macOS, Linux): 20 styles, configurable per-event, adjustable volume
  • Project folder display: always shows the launch directory, not the current subdirectory Claude may have navigated to
  • Git branch, files edited, and lines added/removed
  • Model name with output style indicator
  • Active MCP servers
  • Session cost, API duration, and token throughput

Prerequisites

A Nerd Font is required. The statusline uses Nerd Font glyphs for icons and Powerline caps. Without one installed, characters render as boxes.

Install via Homebrew or download from nerdfonts.com:

brew install --cask font-jetbrains-mono-nerd-font
Terminal font configuration

Installing only puts the font files on disk; your terminal won't use it until you select it:

Terminal Where to set the font
iTerm2 Settings -> Profiles -> Text -> Font -> select "JetBrainsMono Nerd Font"
Terminal.app Settings -> Profiles -> (your profile) -> Font -> Change -> select "JetBrainsMono Nerd Font"
Warp Settings -> Appearance -> Terminal font -> select "JetBrainsMono Nerd Font"
Ghostty Add font-family = JetBrainsMono Nerd Font to ~/.config/ghostty/config
VS Code terminal Settings -> search "terminal font" -> set Terminal > Integrated: Font Family to JetBrainsMono Nerd Font

Usage

Use the /nerdflair command to configure the statusline:

Command reference
Command Effect
/nerdflair Show current settings and command reference
/nerdflair install Install or upgrade (font check, settings.json config; preserves existing settings)
/nerdflair uninstall Remove nerdflair from settings and clean up data
/nerdflair info Show current settings without changing anything
/nerdflair chime-events Show/toggle which events play chimes
/nerdflair chime-session [style] Set chime style for this session only (plays preview)
/nerdflair chime-style [style] Set or cycle global chime style (random, BalladPiano, ...)
/nerdflair chime-volume [0-100] Set chime volume (0 = muted)
/nerdflair color-palette [mode] Set or cycle palette (vibrant, muted, mono)
/nerdflair layout [mode] Set or cycle layout (full, compact, minimal)
/nerdflair spinner-verbs Toggle custom spinner verbs on/off
/nerdflair terminal-bell Toggle terminal bell on/off (tab indicator)
/nerdflair width [auto|50-150] Set layout width

Cursor / VS Code Extension

A lightweight extension brings NerdFlair's audio chimes to Cursor (or VS Code). It reuses the same 20 chime styles from the Claude Code plugin.

What's included

  • Random style per session — one of 20 chime styles is chosen at random each time the editor opens
  • Audio chimes via Cursor hooks — SessionStart, Stop, and SessionEnd sounds
  • Status bar — shows the current style; click to cycle through all 20

Install

Clone the repo and symlink the extension into your editor's extensions directory:

git clone https://github.com/jcraigk/nerdflair.git ~/nerdflair

# Cursor
ln -s ~/nerdflair/cursor-extension ~/.cursor/extensions/nerdflair-chimes

# VS Code (if using VS Code instead)
ln -s ~/nerdflair/cursor-extension ~/.vscode/extensions/nerdflair-chimes

Then add the hooks config at ~/.cursor/hooks.json (adjust the path if you cloned elsewhere):

{
  "version": 1,
  "hooks": {
    "sessionStart": [
      {
        "command": "bash ~/nerdflair/cursor-extension/play-chime.sh SessionStart"
      }
    ],
    "stop": [
      {
        "command": "bash ~/nerdflair/cursor-extension/play-chime.sh Stop"
      }
    ],
    "sessionEnd": [
      {
        "command": "bash ~/nerdflair/cursor-extension/play-chime.sh SessionEnd"
      }
    ]
  }
}

Restart the editor. You should hear a startup chime and see the style name in the status bar.

Settings

Search "nerdflair" in Settings to configure:

Setting Default Description
nerdflair-chimes.volume 1.0 Playback volume (0–1)
nerdflair-chimes.audioDirectory auto-detect Override path to assets/audio

Note: The extension requires jq and afplay (macOS) or paplay (Linux) for audio playback.

How It Works (Claude Code)

Three bash scripts and one JSON state file.

NerdFlair architecture

  • Renderer (scripts/statusline.sh) — Claude Code pipes session JSON on every refresh. Reads state, outputs ANSI-colored statusline.
  • Configurator (scripts/nerdflair.sh) — Handles /nerdflair commands. Reads and writes the state file.
  • Hook Handler (hooks/bell.sh) — Fired on Claude Code events. Sends terminal bell and plays audio chimes (macOS, Linux) based on user-defined config.

All settings persist in ~/.claude/nerdflair/state.json. Per-session data (chime style) is stored as JSON in ~/.claude/nerdflair/sessions/ and cleaned up automatically.

Update

/plugin update nerdflair
/nerdflair install

/plugin update pulls the latest version. /nerdflair install refreshes the statusline config while preserving your existing settings. Restart Claude Code after updating.

Uninstall

/nerdflair uninstall
/plugin uninstall nerdflair

/nerdflair uninstall removes nerdflair's statusline, spinner verbs, and data from ~/.claude/. /plugin uninstall removes the plugin itself. Restart Claude Code after uninstalling.