make prompt colors configurable via GOSH_COLORS
- GOSH_COLORS='user=..:root=..:path=..' with ANSI SGR codes, empty value disables the color for that part - only digits and ';' are accepted, invalid entries are ignored - read before every prompt, so 'set GOSH_COLORS=...' takes effect immediately - document in help and README, including example color schemes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7afcecd053
commit
2b8f06ea6d
3 files changed
+155
-20
No files matched your search
@@ -23,12 +23,67 @@ Features:
|
||||
- Tab completion for commands and file paths
|
||||
- Tilde expansion (~, ~/path) at the start of unquoted words
|
||||
- Colored prompt (user@host green, red for root; directory blue),
|
||||
configurable with $GOSH_COLORS, e.g. GOSH_COLORS='user=1;33:path=36'
|
||||
(keys user, root, path; values are ANSI SGR codes, empty = no color);
|
||||
disabled with $NO_COLOR, TERM=dumb or when output is not a terminal
|
||||
- Environment variable expansion ($VAR, ${VAR}, ${VAR:-default});
|
||||
using an unset variable is an error, use ${VAR:-} for an empty default
|
||||
|
||||
```
|
||||
|
||||
### Farben
|
||||
|
||||
Der Prompt wird über die Umgebungsvariable `GOSH_COLORS` eingefärbt. Sie besteht aus durch `:` getrennten Einträgen `schlüssel=code`:
|
||||
|
||||
| Schlüssel | Teil des Prompts | Standard |
|
||||
|-----------|--------------------------------|---------------------|
|
||||
| `user` | `user@host` | `1;32` (fett grün) |
|
||||
| `root` | `user@host`, wenn man root ist | `1;31` (fett rot) |
|
||||
| `path` | aktuelles Verzeichnis | `1;34` (fett blau) |
|
||||
|
||||
Die Werte sind [ANSI-SGR-Codes](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters), mehrere werden mit `;` kombiniert:
|
||||
|
||||
- `1` fett, `2` blass, `3` kursiv, `4` unterstrichen
|
||||
- `30`–`37` Vordergrund, `90`–`97` helle Vordergrundfarben, `40`–`47` Hintergrund
|
||||
- `38;5;N` eine der 256 Farben, `38;2;R;G;B` Truecolor (sofern das Terminal es kann)
|
||||
|
||||
Nicht angegebene Schlüssel behalten ihre Standardfarbe, ein leerer Wert (`path=`) schaltet die Farbe für diesen Teil ab. Ungültige Werte werden ignoriert. Da nur Ziffern und `;` erlaubt sind, lassen sich über die Variable keine beliebigen Escape-Sequenzen ins Terminal schreiben. `NO_COLOR` schaltet alle Farben ab.
|
||||
|
||||
Gesetzt wird die Variable z. B. in `~/.profile` oder direkt in gosh (wirkt ab dem nächsten Prompt):
|
||||
|
||||
```bash
|
||||
export GOSH_COLORS='user=1;33:path=1;36' # in ~/.profile
|
||||
set 'GOSH_COLORS=user=1;33:path=1;36' # in gosh
|
||||
```
|
||||
|
||||
Ein paar Kombinationen zum Ausprobieren:
|
||||
|
||||
```bash
|
||||
# Solarized: gelb und cyan
|
||||
GOSH_COLORS='user=33:path=36'
|
||||
|
||||
# Sonnenuntergang: orange und pink (256 Farben)
|
||||
GOSH_COLORS='user=1;38;5;208:path=38;5;205'
|
||||
|
||||
# Matrix: hellgrün und blassgrün
|
||||
GOSH_COLORS='user=1;92:path=2;32'
|
||||
|
||||
# Dracula: lila und pink (Truecolor)
|
||||
GOSH_COLORS='user=1;38;2;189;147;249:path=38;2;255;121;198'
|
||||
|
||||
# Nord: frostblau und hellgrau (Truecolor)
|
||||
GOSH_COLORS='user=1;38;2;136;192;208:path=38;2;216;222;233'
|
||||
|
||||
# Ozean: türkis und kursiv blau
|
||||
GOSH_COLORS='user=1;96:path=3;94'
|
||||
|
||||
# Root-Warnung: weiß auf rotem Hintergrund
|
||||
GOSH_COLORS='root=1;97;41'
|
||||
|
||||
# Dezent: nur das Verzeichnis unterstrichen
|
||||
GOSH_COLORS='user=:path=4'
|
||||
```
|
||||
|
||||
### Sicherheitshinweise
|
||||
|
||||
- Die History liegt in `$XDG_STATE_HOME/gosh/history` (Standard: `~/.local/state/gosh/history`) und ist nur für den eigenen Benutzer lesbar (Verzeichnis `0700`, Datei `0600`). Mit `GOSH_HISTFILE` lässt sich ein anderer Pfad setzen, mit `GOSH_HISTFILE=` wird die History abgeschaltet.
|
||||
|
||||
Reference in new issue
Block a user