Files
mesh-catalog/modules/powerlevel10k/README.md
T
mesh-tools 652b00b25b
mesh/merge-gate checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/repo-check checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/delivery-group group feat/owned-paths checking: 0 of 2 member(s) ready
mesh/delivery superseded: a newer head of the same pull request
Say on every directory how it treats files it does not know, and check it (issue 1024, ADR 0422)
Every directory and archive resource carries `unknown`: move-out for a home folder whose program writes nothing there (the node-engine, delivered in mesh-host #117, moves the rest to ~/.local/state/mesh-moved/<module>/ with a list), module for ~/.ssh and ~/.claude, program elsewhere; `knows` keeps what a program or the operator relies on (powerlevel10k's compiled files, i3's scripts and the asus/g14 drop-ins, dunst's slack rule, betterbird's records, node-env's forge credential, issue 1033). Two shared folders are no longer declared. Each module's README says it. checks/owned holds every manifest to it; checks/sshdir stays while main's merge check runs it (issue 1035). Tests that pin a manifest follow the new key only. Reviewed in three rounds.
2026-10-17 16:23:03 +00:00

3.7 KiB

powerlevel10k

The zsh prompt as a module (novox/hq ADR 0204, ADR 0205, to-be 41).

  • Upstream: https://github.com/romkatv/powerlevel10k
  • Version: v1.20.0, vendored verbatim from the release archive (archive/refs/tags/v1.20.0.tar.gz, sha256 d8187d44b697b3a37a8c4896678b4380e717cbf2850179529358348780a2d3d7) into theme/. It is 86 files and 1,427,736 bytes.
  • Licence: MIT, in theme/LICENSE, which travels in the archive. gitstatus's own licence is theme/gitstatus/LICENSE.

The distribution does not package the theme, so the module carries a pinned release (ADR 0205). An upgrade is a change to this directory, reviewed like any other: replace theme/ with the new release's contents, and update the version here and in the shell code's comment.

What it places

path under the account's home what class (ADR 0182)
~/.local/share/powerlevel10k/ the theme, unpacked from the theme archive owned, whole
~/.config/powerlevel10k/p10k.zsh the prompt's configuration, unpacked from the configuration archive owned, whole

Both directories are unknown: move-out (ADR 0422): they hold only what the archives declare, and anything else found in them is moved out by the node-engine, never deleted.

The configuration is today's ~/.p10k.zsh, byte for byte. It is the predecessor's file, and was identical on every machine. It ships as an archive of one file rather than as an inline file. At 86 KB, inline content would ride in every declaration the node receives, and would be unreadable JSON in review. As its own file it is reviewed as a diff, and pinned by digest like the theme. The directory is the module's, so p10k configure writing ~/.p10k.zsh does not touch it: to change the prompt, change config/p10k.zsh here.

The module contributes zsh code to the normal slot of the login shell's block. That code sources the theme, then the configuration, each only if present. Instant prompt is not turned on: the operator's .zshrc has its cache line commented out today, and the configuration's own POWERLEVEL9K_INSTANT_PROMPT setting does nothing without that line.

What it does not do

  • gitstatus downloads its binary on first use. The theme's git status helper fetches gitstatusd from upstream's releases into ~/.cache/gitstatus the first time a prompt runs in a git repository. ADR 0205 pins what the mesh ships, not what the software fetches for itself. A machine without a route to upstream shows the prompt without git status.
  • Fonts are not this module's. The configuration uses Nerd Font icons. The terminal's font is the desktop's concern.
  • Moving from the predecessor: once this module is assigned, ~/.zsh/themes/powerlevel10k and ~/.p10k.zsh are no longer read, and the operator removes them, once (ADR 0182; the zsh module's README lists the lines to delete from .zshrc).

Files it does not know

Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).

  • ~/.local/share/powerlevel10k: holds only what this module declares and the nine .zwc files the theme compiles into its own folder at every zsh start (powerlevel9k.zsh-theme.zwc, powerlevel10k.zsh-theme.zwc, internal/{p10k,icons,configure,worker,parser}.zsh.zwc, gitstatus/gitstatus.plugin.zsh.zwc, gitstatus/install.zwc; powerlevel10k.zsh-theme lines 62-70); anything else is moved out by the node-engine to ~/.local/state/mesh-moved/powerlevel10k/ with a list, never deleted (ADR 0422 §4).
  • ~/.config/powerlevel10k: holds only what this module declares; anything else is moved out by the node-engine to ~/.local/state/mesh-moved/powerlevel10k/ with a list, never deleted (ADR 0422 §4).