feat: auto-install a Nerd Font per-user when none is present

Making the installer a turnkey package means a fresh PC should end up
render-ready without manual font setup or an elevated prompt. The font is
placed in the per-user store and registered under HKCU so no admin rights
are required, and a failed download stays non-fatal because the statusline
already renders through the OS emoji fallback. Detection matches both the
spaced and unspaced registry naming so a second run correctly skips the
download instead of re-copying a font file that is locked while in use.
This commit is contained in:
Andre
2026-07-18 15:58:41 +02:00
parent cbb5f00b65
commit c239e19145
2 changed files with 124 additions and 5 deletions
+33 -2
View File
@@ -25,7 +25,9 @@ with a single command.
- An **emoji-capable terminal font** so `🤖 ⚡ 🧠 █░` render. **No Nerd Font
required** — the statusline deliberately uses only standard Unicode (emoji +
block-drawing chars), never Nerd-Font private-use glyphs. Windows Terminal
renders them via `Segoe UI Emoji` out of the box.
renders them via `Segoe UI Emoji` out of the box. As a safety net the
installer nevertheless installs a Nerd Font (Hack, ~17 MB) **per-user, no
admin rights** if none is present — see below.
### Install on a new PC
@@ -42,10 +44,23 @@ The installer is **idempotent** — run it again anytime. It auto-detects the
existing `settings.json` **without** overwriting your other settings (a
`.bak` backup is written first).
### Nerd Font (automatic, no admin)
If no Nerd Font is detected, the installer downloads one from
[ryanoasis/nerd-fonts](https://github.com/ryanoasis/nerd-fonts) and installs it
into the **per-user** font store (`%LOCALAPPDATA%\Microsoft\Windows\Fonts` +
`HKCU`), so **no administrator rights** are needed. If a download fails (e.g. no
internet), the step is skipped and the statusline still works via the emoji
fallback. To actually *use* the font, set it as your terminal font and restart
the terminal — the statusline renders correctly either way.
### Options
- `.\install.ps1 -Force` — also overwrite an existing `~/.config/cship.toml`
(by default an existing config is kept, so local tweaks survive).
- `.\install.ps1 -SkipFont` — skip the Nerd-Font check/install entirely.
- `.\install.ps1 -FontName FiraCode` — install a different Nerd Font
(default `Hack`; e.g. `FiraCode`, `CascadiaCode`, `JetBrainsMono`).
### Updating the kit
@@ -81,7 +96,9 @@ einem einzigen Befehl auf jeden Windows-PC installiert.
- Ein **emoji-fähiger Terminal-Font**, damit `🤖 ⚡ 🧠 █░` dargestellt werden.
**Kein Nerd-Font nötig** — die Statusline nutzt bewusst nur Standard-Unicode
(Emoji + Block-Zeichen), keine Nerd-Font-Privatzeichen. Windows Terminal
rendert sie standardmäßig über `Segoe UI Emoji`.
rendert sie standardmäßig über `Segoe UI Emoji`. Als Sicherheitsnetz
installiert der Installer dennoch einen Nerd-Font (Hack, ~17 MB) **per-user,
ohne Admin-Rechte**, falls keiner vorhanden ist — siehe unten.
### Installation auf einem neuen PC
@@ -98,11 +115,25 @@ Der Installer ist **idempotent** — jederzeit erneut ausführbar. Er erkennt de
eine vorhandene `settings.json` ein, **ohne** deine anderen Einstellungen zu
überschreiben (vorher wird ein `.bak`-Backup geschrieben).
### Nerd-Font (automatisch, ohne Admin)
Wird kein Nerd-Font erkannt, lädt der Installer einen von
[ryanoasis/nerd-fonts](https://github.com/ryanoasis/nerd-fonts) und installiert
ihn in den **benutzereigenen** Font-Speicher (`%LOCALAPPDATA%\Microsoft\Windows\Fonts`
+ `HKCU`) — **ohne Administrator-Rechte**. Schlägt der Download fehl (z. B. kein
Internet), wird der Schritt übersprungen und die Statusline funktioniert dank
Emoji-Fallback trotzdem. Um den Font tatsächlich zu *nutzen*, ihn als
Terminal-Font einstellen und das Terminal neu starten — die Statusline wird so
oder so korrekt dargestellt.
### Optionen
- `.\install.ps1 -Force` — überschreibt zusätzlich eine vorhandene
`~/.config/cship.toml` (standardmäßig wird eine bestehende Config behalten,
damit lokale Anpassungen erhalten bleiben).
- `.\install.ps1 -SkipFont` — überspringt die Nerd-Font-Prüfung/-Installation.
- `.\install.ps1 -FontName FiraCode` — installiert einen anderen Nerd-Font
(Standard `Hack`; z. B. `FiraCode`, `CascadiaCode`, `JetBrainsMono`).
### Kit aktualisieren