Skip to content
| Marketplace
Sign in
Visual Studio Code>Themes>Khonsu MoonlightNew to Visual Studio Code? Get it now.
Khonsu Moonlight

Khonsu Moonlight

khonsu

|
16 installs
| (0) | Free
A midnight-navy theme with optional setup, Vim and Neovim presets, interactive animated pets and a focus timer.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Khonsu Moonlight crescent and star

Khonsu Moonlight

Midnight-navy colors for VS Code, Vim, Neovim and your terminal.

Visual Studio Marketplace · Install · Features · Setup and extras · Vim and Neovim · Palette

A dark Visual Studio Code color theme built around a midnight-navy editor, pale text, and a small set of cool accents. Ice blue marks focus and links, muted lavender carries language structure, mint distinguishes strings and additions, and muted rose marks removals and errors. Warm sand highlights literals and types so common syntax remains easy to scan. The theme opts into semantic highlighting and refines the Python fallback colors, Explorer text and status bar.

The color theme works on its own. Optional setup commands, a curated extension installer, Vim and Neovim presets, custom companions and a focus timer are available when you want them. Nothing installs or changes settings on activation. Workbench surfaces stay close to the editor background, with restrained borders and clear selection states.

Features

  • Distinct syntax colors, including Python calls and arguments with or without a language server.
  • Softer Explorer labels and a darker status bar with a visible boundary.
  • Seven local companions you can stroke, carry and play with directly in the scene. Their sidebar stays hidden until you choose Show Pets.
  • An optional picker for 22 extensions, plus formatting, editor and terminal presets with backup and restore.
  • A focus timer, separate VSCodeVim and VS Code Neovim profiles, and native Vim and Neovim colorschemes.

Python syntax colors with semantic highlighting and TextMate fallback

Release showcase · 0.8.0

Seven redesigned companions in a small moonlit landscape. Softer faces, head tilts and nuzzles, a shaded moon ball, layered hills and a sky that dims for naps. In the editor, inlay hints, ghost text, sticky scroll and focus outlines now share the same quiet palette.

Khonsu Moonlight 0.8.0 companion showcase

Watch the 64-second showcase · Download captions · Animated excerpt · Download the MP4

The video shows the shipped webview in a local preview, with motion enabled only for recording. It covers all seven companions, petting, carrying, cushion naps, waking, ball play and keyboard access. The footer labels the preview throughout. VS Code respects your system reduced-motion setting.

All seven 0.8.0 companions in the rendered webview

A fresh screenshot of 0.8.0 in VS Code 1.140.0 on macOS, with system reduced motion respected:

Khonsu Moonlight 0.8.0 in VS Code

Full workspace walkthrough · 0.7.0 archive

Khonsu Moonlight: code, focus and pets in 0.7.0

Watch the 3:00 walkthrough · Download captions · Shorter 0.7.1 release edit

This earlier recording shows actual VS Code interactions in a dedicated demo profile: TypeScript editing, formatting, Python, optional setup, reversible settings, focus and pet customization. It contains the previous pet artwork. Typing passages are edited to about 130 WPM. Other scene timings are retained. The extension installer and Vim/Neovim choices are previewed, and the terminal setup command is prepared but not run. The separate motion-enabled webview preview is labeled.

Details

Real screenshots from VS Code on macOS. Click an image to inspect it at full size.

The two-line Starship prompt shows the current Git branch and detected Node version. sleep 2.1 demonstrates timing. The harmless false command demonstrates exit code 1 and the rose error prompt.

Git, runtime, timing and exit status

The included TypeScript sample shows the syntax colours and bracket guides. The sample text is illustrative, not a test report.

TypeScript syntax colours up close

The shipped public profile uses JetBrains Mono Nerd Font at 14 px in the terminal, a line cursor and Prettier on save.

Public font and formatter settings

Install

Install Khonsu Moonlight from the Visual Studio Marketplace, or search for Khonsu Moonlight in VS Code's Extensions view.

code --install-extension khons-hu.khonsu-moonlight

Select Khonsu Moonlight from Preferences: Color Theme.

For manual installation, download the 0.8.0 VSIX, then run Extensions: Install from VSIX... and choose the file. GitHub Releases include the source and release notes.

To build the current version yourself, use the VS Code Extension Manager (vsce) from this directory:

npx @vscode/vsce package

Setup and extras

Run Moonlight: Setup and Extras from the Command Palette. Every part is optional:

  • Install Recommended Extensions opens a multi-select picker with 22 tools. Choose individual tools or select all. If both modal editors are selected, a second picker asks you to choose one. An enabled conflicting backend must be disabled before installing the other. It skips tools available in the current window, installs sequentially through VS Code's Marketplace command and reports failures. Cancel to stop before the next install.
  • Apply Optional Settings lets you choose appearance, formatting and integrated terminal groups. It backs up changed user values and merges language-specific settings. Restore Previous Settings keeps settings you have edited afterward. Workspace settings take precedence.
  • Show Pets enables and opens the Moonlight sidebar, which is hidden by default. Choose a moon cat, fox, little robot, penguin, Labrador, Sam Altman or Tibo Sottiaux (@thsottiaux), then give it a name and preset or custom hex color. Sam and Tibo are original cartoon fan characters. Click or gently stroke your companion for an immediate reaction. Drag it upward or across the scene to carry it, then let go for a soft landing. Flick the ball to set its direction and speed, and your companion follows the bounce. Tap the cushion or drop the companion onto it for a nap, then touch it to wake. There is no Pet/Play/Rest button row. Tab to the companion, ball or cushion and press Enter or Space for keyboard access. Hide Pets closes the sidebar; your chosen companion, name and color stay saved when you show it again. The motion toggle remembers your choice, OS reduced motion takes priority, and animations stop while the view is hidden. All artwork and interactions stay local, with no network requests or access to your code.
  • Start or Manage Focus Session starts a 15, 25, 45 or 60-minute status-bar timer. Click to pause, resume or stop. It only runs after you start it and ends when the window reloads or closes.
  • Open Setup Guide covers fonts, shell configs, a separate VS Code profile, the native Terminal preset, Codex colors and the matching desktop wallpaper.

The catalog includes the existing formatters and language tools, plus Material Icon Theme, Error Lens, markdownlint, REST Client, GitHub PR and Actions tools, Tailwind, Vitest, Jupyter and GitLens. Optional Codex and Claude Code integrations need their own account access. GitLens has some paid features. Upstream VS Code Pets is an optional extra, separate from Moonlight's own companions. Browse the full catalog.

Direct-interaction Moonlight companion in 0.8.0

Moonlight setup and extras

Moonlight has no mandatory extension dependencies, telemetry, account credentials or background model calls. VS Code handles extension downloads and its normal publisher/account prompts.

Vim and Neovim

Both modal backends are optional. Use VSCodeVim or VSCode Neovim in a profile, not both together. The generic Moonlight profile does not enable either.

  • VSCodeVim provides Vim editing without a separate executable. The Moonlight preset adds relative line numbers, mode-specific cursors, lavender search highlights and an ice-blue current match. Common Ctrl shortcuts for select, copy, find, save and undo stay with VS Code. Existing unrelated key delegations are retained.
  • VSCode Neovim uses a real local Neovim 0.10+ installation. Its preset uses relative line numbers and keeps Ctrl-C with VS Code in insert mode. On macOS, install Neovim with brew install neovim. Set the user-level executable path if VS Code cannot find it, for example /opt/homebrew/bin/nvim on an Apple silicon Homebrew installation.

Run Moonlight: Configure Vim or Neovim after enabling the chosen backend. Changed user settings are backed up for Restore Previous Settings. The Neovim version check runs only on this explicit command in a trusted workspace, with the user-level or default executable path. Workspace executable overrides are not executed by Moonlight. Restart VSCode Neovim after changing its executable path if needed.

For separate setups, import config/khonsu-moonlight-vim.code-profile or config/khonsu-moonlight-neovim.code-profile. Each contains the theme, its settings and only one modal backend. Use VS Code's native profile switcher to choose between them. No user Vim mappings or dotfiles are replaced by the extension. The status bar color-control feature of VSCodeVim is deliberately left off, because it writes changing colors to workspace settings.

Real VS Code profiles with the included TypeScript sample, relative line numbers and a search for checks:

Moonlight VSCodeVim profile Moonlight VSCode Neovim profile

Native Vim and Neovim colors

The original Moonlight colorschemes also work outside VS Code, without a plugin manager or downloaded theme dependencies:

  • Copy config/vim/colors/khonsu-moonlight.vim into your Vim user runtime's colors directory, usually ~/.vim/colors/. Merge the optional example-vimrc snippet into your existing vimrc, then run :colorscheme khonsu-moonlight.
  • Copy config/nvim/colors/khonsu-moonlight.lua into colors/ under :lua print(vim.fn.stdpath("config")). Merge the optional example-init.lua snippet into your existing config, then run :colorscheme khonsu-moonlight. Its native UI settings are guarded by if not vim.g.vscode for embedded sessions.

Back up any existing file before copying. The theme includes truecolor and terminal-color fallbacks, syntax, search, selection, diff and diagnostics. Neovim also includes Tree-sitter and LSP highlight groups. It does not install parsers, servers or plugins. VS Code uses the Moonlight VS Code theme for its surfaces.

Optional editor setup

After installing the theme, run Profiles: Import Profile and select config/khonsu-moonlight.code-profile to create a separate profile with the optional settings and language extensions. Install Khonsu Moonlight in that profile too. The profile contains only editor settings and a list of public extensions. It does not include account data, workspace history, MCP servers or credentials.

Alternatively, merge the preferences in config/settings.json into your user settings. Review the values first, rather than replacing your existing file. config/extensions.json lists the suggested extensions. The theme works without any of them. The same optional setup files are now bundled in the extension and accessible with Moonlight: Open Setup Assets.

The editor uses Menlo with monospace fallbacks. The appearance preset can select Material Icon Theme when it is available. The terminal uses JetBrains Mono Nerd Font Mono (JetBrainsMono NFM) at 14px, with extra line spacing and a steady line cursor. The editor has no minimap, bracket guides and format on explicit save. Prettier covers web files and Markdown, Ruff formats Python and organizes imports on explicit save. ESLint, EditorConfig, YAML and Vue support are recommended. Project-specific .prettierrc, .editorconfig, Ruff and workspace settings take precedence over the personal formatting defaults. VS Code does not run format-on-save for Auto Save after a short delay, so use a normal save when you want formatting.

A matching Codex theme import string is included. Import it under Settings > Appearance > Dark theme > Import. That preset was checked against the installed Codex theme format, but has not been applied or visually tested in Codex. Claude Desktop currently exposes dark mode and chat-font controls, without a custom background or palette import in the version inspected.

Optional terminal setup

The terminal adds a lunar two-line Starship prompt, shortened paths, Git branch and working-tree indicators, detected project runtimes, command duration after two seconds and the last command's failure code. Completions, muted autosuggestions and syntax highlighting come from the separate zsh setup. These shell files are optional and are not executed by the VS Code extension.

On macOS with Homebrew, Moonlight: Prepare macOS Terminal Setup prepares the bundled setup command in a terminal. Review it and press Enter to run it. The script installs the dependencies below, copies configs with timestamped backups and appends the source block to .zshrc once. It does not install Homebrew, use sudo or change your PATH. Alternatively, install the public dependencies manually:

brew install starship zsh-autosuggestions zsh-syntax-highlighting
brew install --cask font-jetbrains-mono-nerd-font

Review config/starship.toml and config/moonlight.zsh, then copy them to ~/.config/starship.toml and ~/.config/moonlight/moonlight.zsh. Back up any existing files first. Add this to your existing ~/.zshrc:

if [[ -r "$HOME/.config/moonlight/moonlight.zsh" ]]; then
  source "$HOME/.config/moonlight/moonlight.zsh"
fi

Open a new terminal session. The setup keeps your PATH, history file, history sizes and history sharing settings. It ignores duplicate history entries and commands starting with a space. Homebrew plugins load only from their conventional Apple silicon or Intel locations, and missing dependencies are skipped. Starship is skipped for TERM=dumb. Other platforms can use the prompt config with their own Starship installation, but the optional plugin paths are macOS-specific.

examples/terminal-demo.sh prints a one-shot colour preview. It does not fabricate build output, change files or make network calls.

For native macOS Terminal, import config/Khonsu Moonlight.terminal through Terminal > Settings > Profiles > Action menu > Import. It includes matching ANSI colours and the installed font. The preset passed plist validation but has not been imported or visually tested. The screenshots show VS Code's integrated terminal.

Moonlight shell in VS Code

Palette

Role Color
Midnight navy #0B111A
Pale text #E8EDF2
Ice blue #A9C7E8
Muted lavender #B6A4DE
Mint #7FC9AC
Muted rose #F0959C

The theme targets VS Code ^1.100.0 and opts into semantic highlighting. Its TextMate fallback rules cover JavaScript, TypeScript, Python, JSON, HTML, CSS, and Markdown. Python fallback colors distinguish calls, attributes, decorators and arguments. Exact coloring can vary by language extension and grammar. Explorer text is softer against the dark background, while the darker status bar has a clear border.

Verification

Version 0.1.0 was packaged and installed in VS Code 1.140.0 on macOS Apple silicon. The theme was visually checked on the included synthetic TypeScript sample. Prettier format-on-save was checked in VS Code, and the installed Ruff formatter normalized a synthetic Python sample from its CLI. The profile format was checked against VS Code's profile resource schema.

Version 0.2.0 adds the terminal setup. The shell files passed syntax checks, the TOML parsed successfully, and the native Terminal preset passed plist validation. Starship 1.26.0, zsh-autosuggestions 0.7.1, zsh-syntax-highlighting 0.8.0 and Nerd Fonts 3.5.1 were installed on macOS. The live integrated terminal was checked in VS Code. The Codex and native macOS Terminal presets remain manual imports, without live appearance checks.

Version 0.3.0 passed 22 runtime checks and a real VS Code 1.140.0 extension-host smoke test. Live macOS checks covered installing a selected Marketplace extension, applying backed-up appearance settings, pet customization and play, and focus start, pause, resume and stop. The screenshots above come from that installed build.

Version 0.4.0 passed 30 runtime checks, a real VS Code 1.140.0 extension-host smoke test and 35 native-editor assertions in Vim 9.1 and Neovim 0.12.5. Separate VSCodeVim and VSCode Neovim profiles were configured and checked for navigation and search in the macOS UI. The checks cover exclusive backend selection, cancellation, retained key settings, the trusted-workspace guard, supported Neovim versions, color values and terminal fallbacks.

Version 0.5.0 passed 38 runtime checks and the VS Code 1.140.0 extension-host smoke test. Rendered checks covered direct click-and-stroke petting, keyboard wake, ball play, saved motion choice, OS reduced motion and a 180-pixel sidebar without horizontal overflow. Animated states were checked in a local test fixture because the test Mac had Reduce motion enabled.

Version 0.6.0 passed 42 runtime checks and the VS Code 1.140.0 extension-host smoke test. All seven companions were checked in the rendered webview fixture. The four new companions fit a 180-pixel sidebar without horizontal overflow and respect OS reduced motion. The 48-second video is recorded from that fixture, with motion enabled only for the recording.

Version 0.6.1 passed 43 runtime checks and a real VS Code 1.140.0 extension-host test, including enabling and hiding companions. The Python regression test uses VS Code's bundled TextMate grammar and passes without a language server. It reproduces the plain-text call color in 0.6.0 and verifies distinct calls, attributes, arguments, strings, numbers and decorators in 0.6.1.

For development, run npm ci, npm test and npm run test:theme. The Python check locates the bundled grammar in common VS Code install locations. Set VSCODE_PYTHON_GRAMMAR to your MagicPython.tmLanguage.json when installed elsewhere. The tokenizer packages are development dependencies and are excluded from the VSIX.

Version 0.7.0 passed 57 automated tests and a real VS Code 1.140.0 extension-host check. The seven companions, direct petting and carrying, ball chase, cushion naps, keyboard interaction, and removed action row were checked in the rendered scene. Reduced-motion behavior was checked with the system setting respected; full animation was viewed in an isolated motion-on preview. No FPS measurement was established.

Version 0.7.1 updates the packaged documentation and release media. It keeps the 0.7.0 theme, commands, settings and pet behavior unchanged. The shorter showcase preserves the established typing pace, labels the separate webview preview and retains the full three-minute walkthrough.

Version 0.8.0 is a visual release. It passed 59 automated tests, the Python grammar check and a real VS Code 1.140.0 extension-host check for activation, command registration, settings apply/restore and showing/hiding pets. All seven companions, petting, play, cushion naps, reduced motion and sidebar widths from 180 to 360 pixels were checked in a local preview built from the shipped webview files. The scene, art and theme refinements add no settings, network access or tracking.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft