Dashboard

March 22, 2026 ยท View on GitHub

The dashboard is shown when no other view is active. It displays a customizable set of sections including commands, recent sessions, git status, and commit history.

Overview

The dashboard layout consists of sections arranged in a two-column grid (or single column on narrow screens). Each section has a header and displays content based on its type.

Default Sections

SectionColumnDescription
LogoFull widthASCII art logo with random ANSI color
CommandsLeftShows commands and their keybindings
SessionsLeftLists recent sessions with quick-open keys
Git StatusRightShows uncommitted file changes
Commit HistoryRightShows recent git commits

Configuration

Customize settings in ~/.nev/settings.json. See settings.md for how settings work.

Layout Settings

SettingTypeDefaultDescription
dashboard.min-two-col-charsint160Minimum width in characters for two-column layout
dashboard.pad-xfloat0.02Horizontal padding as fraction of width (0-1)
dashboard.pad-yfloat0.02Vertical padding as fraction of height (0-1)
dashboard.section-gapfloat0.01Gap between sections as fraction of height (0-1)
dashboard.col-gapfloat0.02Gap between columns as fraction of width (0-1)

Section Configuration

Sections are configured via the dashboard.sections setting. Each key in the object defines a section, with the value being the section properties:

FieldTypeDefaultDescription
namestring(required)Section type (see below)
titlestringsame as nameSection header title
sideint0Column: -1 = full width, 0 = left, 1 = right
borderbooltrueWhether to draw a border around the section
maxItemsintvariesMaximum number of items to display

Section Types

  • logo - ASCII art logo. Supports a custom logos property (array of array of strings) to define custom ASCII art. Falls back to built-in logos.
  • commands - Command list with keybindings
  • sessions - Recent sessions list
  • gitStatus - Git file status
  • commitHistory - Git commit log

The logo type displays ASCII art with a random ANSI color. Custom logos can be defined using the logos property:

{
  "name": "logo",
  "border": false,
  "logos": [
    [
      " _   _  _____  _____ ",
      "| \\ | ||  ___||  ___|",
      "|  \\| || |__  | |__  ",
      "|     ||  __| |  __| ",
      "| |\\  || |___ | |___ ",
      "\\_| \\_/\\____/ \\____/ "
    ]
  ]
}

Each entry in the logos array is an array of strings representing the lines of one logo. One logo is randomly selected on each load.

Commands

The commands type reads its command list from the commands field:

{
  "name": "commands",
  "title": "Commands",
  "side": 0,
  "commands": ["command-line", "explore-help", "choose-file", "choose-open"]
}

Each command name is looked up in the active keybinding contexts (determined by editor.base-modes). All matching keys are displayed, sorted by length, with shortest first.

Sessions

The sessions type shows recent sessions. Keybindings for dashboard.session.open <index> are displayed next to each session.

Git Sections

gitStatus and commitHistory fetch data asynchronously. Use maxItems to limit the number of entries displayed (defaults: gitStatus=25, commitHistory=50).

Example Configuration

{
  "dashboard.pad-x": 0.03,
  "dashboard.pad-y": 0.02,
  "dashboard.col-gap": 0.01,
  "dashboard.sections": {
    "logo": { "name": "logo", "title": "", "border": false },
    "commands": {
      "name": "commands",
      "title": "Commands",
      "side": 0,
      "commands": ["command-line", "choose-file", "explore-files", "quit"]
    },
    "sessions": {
      "name": "sessions",
      "title": "Recent Sessions",
      "side": 0,
      "maxItems": 5
    },
    "gitStatus": {
      "name": "gitStatus",
      "title": "Git Status",
      "side": 1,
      "maxItems": 20
    },
    "commitHistory": {
      "name": "commitHistory",
      "title": "Commits",
      "side": 1,
      "maxItems": 30
    }
  }
}

Commands

CommandsArgumentsDescription
dashboard.session.openindex (int)Open recent session at index
dashboard.logo.randomizenoneRandomize logo style and color

Example keybindings (in the dashboard context):

{
  "dashboard": {
    "1": ["dashboard.session.open 0"],
    "2": ["dashboard.session.open 1"],
    "3": ["dashboard.session.open 2"],
    "r": ["dashboard.logo.randomize"]
  }
}