Compare commits
78 Commits
2696f4aa01
...
demo
| Author | SHA1 | Date | |
|---|---|---|---|
| 5babaa626b | |||
| b9e4a97fea | |||
| 12fc686de1 | |||
| 3f9bc8f9fa | |||
| ae66cbc70e | |||
| 16a7d8dad9 | |||
| 8079b90e0c | |||
| d944ed83e6 | |||
| 4347690b4a | |||
| af0df324da | |||
| a7c88d772e | |||
| dbe1843415 | |||
| 3a970dde82 | |||
| ecf0ec07bd | |||
| ee8e3dcafb | |||
| 55909294b1 | |||
| bbc4281d50 | |||
| 8c68ce28f7 | |||
| 761a1ae38a | |||
| 98ae44cc3b | |||
| 9774c15d34 | |||
| a6b588ad8a | |||
| 77cbefe2a2 | |||
| aa862e7854 | |||
| 9cb60c2b03 | |||
| f66a45d438 | |||
| 865e351171 | |||
| f22f319af4 | |||
| a57c5d355d | |||
| e4c41a8fb1 | |||
| 27fe9ee246 | |||
| 7c4e99667c | |||
| d7c08d5a4c | |||
| c039075927 | |||
| 84336c0a7b | |||
| 5ed49cc54c | |||
| 4bd8307bf0 | |||
| 27ff3de89d | |||
| 1c67eb6f05 | |||
| d0cb724706 | |||
| e56aecd1c0 | |||
| 73f23bcd61 | |||
| fa33ab13f0 | |||
| 8b5c833a1e | |||
| 3dcec1b51b | |||
| d3f586afbf | |||
| 80add3e09b | |||
| 85e9959fb0 | |||
| 19f3d58a42 | |||
| 4b9c29f895 | |||
| 24374eb9fa | |||
| cb36ca7cb9 | |||
| 5f0c3fa06e | |||
| 6922271334 | |||
| 5c336e77a4 | |||
| cbace1a1c7 | |||
| 87c49dab23 | |||
| cc61e6281d | |||
| db558c76aa | |||
| 21233b9083 | |||
| 059a642ff5 | |||
| 808fcc774f | |||
| a462aa81f9 | |||
| 42124810b7 | |||
| 1b15831ec2 | |||
| 388413e696 | |||
| 4b5f886b79 | |||
| 299e7fe4cb | |||
| 9666d1f4cf | |||
| 91e0725b23 | |||
| ade4a74f18 | |||
| b411dd706a | |||
| 95103f80cc | |||
| 78346175a9 | |||
| d48fee89aa | |||
| fbd5fc40e2 | |||
| 633704b777 | |||
| 820d2c5991 |
316
.context.json
@@ -3,28 +3,16 @@
|
||||
"name": "Bashrc Dotfiles",
|
||||
"purpose": "Global and per-user bash prompt + banner with seasonal palettes and time/season emoji accents.",
|
||||
"repo_root": "/home/steffen/Bashrc",
|
||||
"default_branch": "main"
|
||||
"default_branch": "main",
|
||||
"release_state": "main is production-ready"
|
||||
},
|
||||
"branches": {
|
||||
"main": {
|
||||
"notes": [
|
||||
"Shared PS1 module in dotfiles/ps1/ps1.sh is source of truth for both Linux and macOS installers.",
|
||||
"README documents 4seasons branch, seasonal ranges, static/dynamic choice.",
|
||||
"README documents seasonal ranges and style packs.",
|
||||
"README example image uses images/bash-pallete.png."
|
||||
]
|
||||
},
|
||||
"dev": {
|
||||
"notes": [
|
||||
"Active development branch for seasonal palettes and emoji updates.",
|
||||
"Seasonal palettes and installer prompts implemented.",
|
||||
"Seasonal emoji accents with fixed lunch/dinner are enabled."
|
||||
]
|
||||
},
|
||||
"4seasons": {
|
||||
"notes": [
|
||||
"Branch with seasonal palettes feature set and README updates.",
|
||||
"Includes seasonal palette image and seasonal selection documentation."
|
||||
]
|
||||
}
|
||||
},
|
||||
"files": {
|
||||
@@ -33,7 +21,36 @@
|
||||
"macos_installer": "dotfiles/install/install-macos-user.sh",
|
||||
"global_installer_wrapper": "dotfiles/install/install-global-ps1.sh",
|
||||
"readme": "README.md",
|
||||
"palette_image": "images/bash-pallete.png"
|
||||
"library": "libary.md",
|
||||
"palette_image": "images/bash-pallete.png",
|
||||
"theme_images_dir": "images/themes",
|
||||
"theme_images": {
|
||||
"season_winter": "images/themes/season-winter.png",
|
||||
"season_spring": "images/themes/season-spring.png",
|
||||
"season_summer": "images/themes/season-summer.png",
|
||||
"season_autumn": "images/themes/season-autumn.png",
|
||||
"aurora": "images/themes/aurora.png",
|
||||
"neon": "images/themes/neon.png",
|
||||
"forge": "images/themes/forge.png",
|
||||
"circuit": "images/themes/circuit.png",
|
||||
"mono": "images/themes/mono.png",
|
||||
"git": "images/themes/git.png",
|
||||
"hawolex": "images/themes/hawolex.png",
|
||||
"hawolexv2": "images/themes/hawolexv2.png",
|
||||
"christmas": "images/themes/christmas.png",
|
||||
"easter": "images/themes/easter.png",
|
||||
"halloween": "images/themes/halloween.png",
|
||||
"valentine": "images/themes/valentine.png",
|
||||
"thanksgiving": "images/themes/thanksgiving.png",
|
||||
"newyear": "images/themes/newyear.png",
|
||||
"radar": "images/themes/radar.png",
|
||||
"synthwave": "images/themes/synthwave.png",
|
||||
"noir": "images/themes/noir.png",
|
||||
"topo": "images/themes/topo.png",
|
||||
"glitch": "images/themes/glitch.png",
|
||||
"arcticfire": "images/themes/arcticfire.png",
|
||||
"acidlime": "images/themes/acidlime.png"
|
||||
}
|
||||
},
|
||||
"install_behavior": {
|
||||
"linux": {
|
||||
@@ -46,10 +63,13 @@
|
||||
"sources_from": "/etc/bash.bashrc",
|
||||
"prompts": [
|
||||
"PS1 only / Banner only / Both",
|
||||
"PS1 mode: Single season / Dynamic / Contest (if PS1 selected)",
|
||||
"PS1 mode: Single season / Dynamic / Contest / Holidays / Custom (if PS1 selected)",
|
||||
"Season pick (if single season)",
|
||||
"Contest layout selection (if contest)",
|
||||
"Style preset selection (if contest)"
|
||||
"Layout order selection (seasonal/contest/holidays)",
|
||||
"Style preset selection (if contest)",
|
||||
"Holiday selection (if holidays)",
|
||||
"Custom style selection (if custom)",
|
||||
"Enable git capsule for all themes (if PS1 selected)"
|
||||
],
|
||||
"season_config_file": "/etc/ps1-season",
|
||||
"style_config_file": "/etc/ps1-style",
|
||||
@@ -66,10 +86,13 @@
|
||||
"~/.bash_profile"
|
||||
],
|
||||
"prompts": [
|
||||
"PS1 mode: Single season / Dynamic / Contest",
|
||||
"PS1 mode: Single season / Dynamic / Contest / Holidays / Custom",
|
||||
"Season pick (if single season)",
|
||||
"Contest layout selection (if contest)",
|
||||
"Style preset selection (if contest)"
|
||||
"Layout order selection (seasonal/contest/holidays)",
|
||||
"Style preset selection (if contest)",
|
||||
"Holiday selection (if holidays)",
|
||||
"Custom style selection (if custom)",
|
||||
"Enable git capsule for all themes"
|
||||
],
|
||||
"season_config_file": "~/.config/ps1/season",
|
||||
"style_config_file": "~/.config/ps1/style"
|
||||
@@ -98,33 +121,45 @@
|
||||
},
|
||||
"palettes": {
|
||||
"winter": {
|
||||
"Z1_BG": 61,
|
||||
"Z1_BG": 59,
|
||||
"Z2_BG": 61,
|
||||
"Z3_BG": 63,
|
||||
"Z4_BG": 38,
|
||||
"Z5_BG": 37,
|
||||
"Z1_FG": 255,
|
||||
"Z2_BG": 37,
|
||||
"Z2_FG": 255,
|
||||
"PATH_FG": 194,
|
||||
"PATH_FG": 152,
|
||||
"FRAME": 60
|
||||
},
|
||||
"spring": {
|
||||
"Z1_BG": 71,
|
||||
"Z1_BG": 68,
|
||||
"Z2_BG": 70,
|
||||
"Z3_BG": 72,
|
||||
"Z4_BG": 121,
|
||||
"Z5_BG": 120,
|
||||
"Z1_FG": 255,
|
||||
"Z2_BG": 120,
|
||||
"Z2_FG": 22,
|
||||
"PATH_FG": 22,
|
||||
"PATH_FG": 28,
|
||||
"FRAME": 65
|
||||
},
|
||||
"summer": {
|
||||
"Z1_BG": 142,
|
||||
"Z1_BG": 141,
|
||||
"Z2_BG": 142,
|
||||
"Z3_BG": 143,
|
||||
"Z4_BG": 214,
|
||||
"Z5_BG": 208,
|
||||
"Z1_FG": 255,
|
||||
"Z2_BG": 214,
|
||||
"Z2_FG": 0,
|
||||
"PATH_FG": 232,
|
||||
"PATH_FG": 0,
|
||||
"FRAME": 130
|
||||
},
|
||||
"autumn": {
|
||||
"Z1_BG": 95,
|
||||
"Z1_BG": 93,
|
||||
"Z2_BG": 95,
|
||||
"Z3_BG": 97,
|
||||
"Z4_BG": 166,
|
||||
"Z5_BG": 136,
|
||||
"Z1_FG": 255,
|
||||
"Z2_BG": 173,
|
||||
"Z2_FG": 255,
|
||||
"PATH_FG": 223,
|
||||
"FRAME": 95
|
||||
@@ -167,14 +202,93 @@
|
||||
"description": "Clean monochrome, fast read, low noise.",
|
||||
"layout": "two-line, minimal",
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "git",
|
||||
"name": "Git",
|
||||
"description": "Minimal blocks with git capsule when in repo.",
|
||||
"layout": "two-line, git capsule on line 2",
|
||||
"preview": "[date time user] @host - /path (git)"
|
||||
},
|
||||
{
|
||||
"id": "hawolex",
|
||||
"name": "Hawolex",
|
||||
"description": "Winter neon with tech icons, contest layout.",
|
||||
"layout": "two-line, contest layout",
|
||||
"preview": "[date time user] @host - /path"
|
||||
},
|
||||
{
|
||||
"id": "hawolexv2",
|
||||
"name": "HawolexV2",
|
||||
"description": "Winter neon with multi-segment gradient.",
|
||||
"layout": "two-line, segmented gradient",
|
||||
"preview": "[date time user] @host - /path"
|
||||
},
|
||||
{
|
||||
"id": "demo",
|
||||
"name": "Demo",
|
||||
"description": "Cycles through all styles each prompt.",
|
||||
"layout": "two-line, auto-rotate",
|
||||
"preview": "(auto-rotate)"
|
||||
},
|
||||
{
|
||||
"id": "radar",
|
||||
"name": "Radar",
|
||||
"description": "Green scanline HUD with a clean, low-noise read.",
|
||||
"layout": "two-line, minimal HUD",
|
||||
"preview": "[user time] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "synthwave",
|
||||
"name": "Synthwave",
|
||||
"description": "Pink/cyan/orange glow blocks, aggressive contrast.",
|
||||
"layout": "two-line, three blocks",
|
||||
"preview": "[date time user] | @host | /path"
|
||||
},
|
||||
{
|
||||
"id": "noir",
|
||||
"name": "Noir",
|
||||
"description": "Near-black minimal with a sharp path accent.",
|
||||
"layout": "two-line, minimal",
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "topo",
|
||||
"name": "Topo",
|
||||
"description": "Elevation-style path with multi-tone segments.",
|
||||
"layout": "two-line, path emphasis",
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "glitch",
|
||||
"name": "Glitch",
|
||||
"description": "Jitter separators and neon contrast.",
|
||||
"layout": "two-line, glitch separators",
|
||||
"preview": "[date time user] ~ @host /path"
|
||||
},
|
||||
{
|
||||
"id": "arcticfire",
|
||||
"name": "ArcticFire",
|
||||
"description": "Icy blues on the left, ember orange on the right.",
|
||||
"layout": "two-line, three blocks",
|
||||
"preview": "[date time user] | @host | /path"
|
||||
},
|
||||
{
|
||||
"id": "acidlime",
|
||||
"name": "AcidLime",
|
||||
"description": "Black background with electric green signal.",
|
||||
"layout": "two-line, minimal",
|
||||
"preview": "[date time user] @host /path"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"env": "PS1_STYLE=aurora|neon|forge|circuit|mono; PS1_STYLE_PACK=standard|contest; PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time",
|
||||
"env": "PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime|demo; PS1_STYLE_PACK=standard|contest|holiday|custom; PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time; PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear; PS1_GIT=0|1",
|
||||
"config_file_keys": [
|
||||
"PS1_STYLE",
|
||||
"PS1_STYLE_PACK",
|
||||
"PS1_CONTEST_LAYOUT"
|
||||
"PS1_CONTEST_LAYOUT",
|
||||
"PS1_HOLIDAY",
|
||||
"PS1_GIT"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -271,6 +385,129 @@
|
||||
"evening": "🎛️",
|
||||
"night": "🕶️"
|
||||
},
|
||||
"holiday_accents": {
|
||||
"christmas": {
|
||||
"sunrise": [
|
||||
"🎄",
|
||||
"🎅",
|
||||
"❄️",
|
||||
"⛄"
|
||||
],
|
||||
"work": [
|
||||
"🎁",
|
||||
"🧤",
|
||||
"🧣",
|
||||
"🦌"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌟",
|
||||
"night": "🕯️"
|
||||
},
|
||||
"easter": {
|
||||
"sunrise": [
|
||||
"🐣",
|
||||
"🥚",
|
||||
"🌷",
|
||||
"🌤"
|
||||
],
|
||||
"work": [
|
||||
"🐰",
|
||||
"🌼",
|
||||
"🧺",
|
||||
"🍫"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌅",
|
||||
"night": "🌙"
|
||||
},
|
||||
"halloween": {
|
||||
"sunrise": [
|
||||
"🎃",
|
||||
"🦇",
|
||||
"🌕",
|
||||
"🕸️"
|
||||
],
|
||||
"work": [
|
||||
"👻",
|
||||
"💀",
|
||||
"🕯️",
|
||||
"🧪"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🕷️"
|
||||
},
|
||||
"valentine": {
|
||||
"sunrise": [
|
||||
"💖",
|
||||
"🌹",
|
||||
"💘",
|
||||
"💕"
|
||||
],
|
||||
"work": [
|
||||
"💌",
|
||||
"🍫",
|
||||
"🕊️",
|
||||
"💗"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
},
|
||||
"thanksgiving": {
|
||||
"sunrise": [
|
||||
"🦃",
|
||||
"🍁",
|
||||
"🥧",
|
||||
"🍂"
|
||||
],
|
||||
"work": [
|
||||
"🍽️",
|
||||
"🌾",
|
||||
"🧺",
|
||||
"🥖"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
},
|
||||
"newyear": {
|
||||
"sunrise": [
|
||||
"🎆",
|
||||
"🥂",
|
||||
"🎇",
|
||||
"✨"
|
||||
],
|
||||
"work": [
|
||||
"🗓️",
|
||||
"⏳",
|
||||
"🚀",
|
||||
"✨"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
}
|
||||
},
|
||||
"style_accents": {
|
||||
"hawolex": {
|
||||
"sunrise": [
|
||||
"💻",
|
||||
"🚗",
|
||||
"🔊",
|
||||
"🎮"
|
||||
],
|
||||
"work": [
|
||||
"🎧",
|
||||
"🕹️",
|
||||
"📟",
|
||||
"🧩"
|
||||
],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
}
|
||||
},
|
||||
"time_slots": {
|
||||
"sunrise": "05:00-08:59",
|
||||
"coffee": "09:00-10:59",
|
||||
@@ -282,7 +519,9 @@
|
||||
"prompt_structure": {
|
||||
"zone1": "date time user",
|
||||
"zone2": "host path",
|
||||
"seasonal_segments": "date | time | user | host+path (subtle seasonal gradient)",
|
||||
"line2": "status arrow + emoji",
|
||||
"emoji_padding": "Two spaces after the emoji before the cursor",
|
||||
"path_shortening": "Keeps /home/user or /Users/user visible and shortens middle if deep.",
|
||||
"nerd_font_caps": "Always enabled unless PS1_FORCE_ASCII=1"
|
||||
},
|
||||
@@ -295,6 +534,11 @@
|
||||
"notes": [
|
||||
"On Linux, installer affects all users by writing to /etc/profile.d and sourcing from /etc/bash.bashrc.",
|
||||
"On macOS, installer is per-user and sources from .bashrc/.bash_profile.",
|
||||
"README on main references 4seasons branch for seasonal palettes and uses images/bash-pallete.png."
|
||||
"Seasonal palettes and contest pack are now documented directly in main.",
|
||||
"README uses images/bash-pallete.png.",
|
||||
"Git capsule prefers __git_ps1 and falls back to git symbolic-ref/short hash when git-prompt is unavailable or returns empty.",
|
||||
"Hawolex git capsule enables when PS1_GIT resolves to a truthy value (1/yes/true/on).",
|
||||
"Custom pack adds bold styles (radar, synthwave, noir, topo, glitch, arcticfire, acidlime).",
|
||||
"Library includes emoji usage blocks per theme (sets, fixed times, time slots, rotation)."
|
||||
]
|
||||
}
|
||||
|
||||
331
README.md
@@ -1,17 +1,34 @@
|
||||
# Bashrc Dotfiles — Global & Portable Bash Prompt
|
||||
|
||||
Elegant, portable, and easy-to-install Bash prompt with:
|
||||
|
||||
- ✨ Two color zones
|
||||
- 🌅 Time-based emoji accents
|
||||
- 🖥️ Fallback when Nerd Fonts aren’t available
|
||||
- 📍 Shortened but informative path
|
||||
- 🔘 Status-colored prompt arrow
|
||||
- 🧠 Works on Linux, WSL, and macOS
|
||||
Elegant, portable, and easy-to-install Bash prompt with seasonal palettes, time-aware emoji, and clean powerline structure.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Install (step by step)
|
||||
## ⚡ Quick Look
|
||||
|
||||
- Theme gallery + full specs: [Theme Library](libary.md)
|
||||
- Packs: Seasonal (auto), Contest, Holidays, Custom, Git
|
||||
- Layout order option: day-time-user, user-time, time-user, day-time
|
||||
- Optional git capsule across themes
|
||||
|
||||
## ✅ Requirements (Nerd Fonts)
|
||||
|
||||
This prompt relies on Nerd Font glyphs for the rounded separators.
|
||||
|
||||
```bash
|
||||
bash dotfiles/install/install-nerdfont.sh
|
||||
```
|
||||
|
||||
After install:
|
||||
|
||||
- Set your terminal font to JetBrainsMono Nerd Font (or any Nerd Font)
|
||||
- Manual download: https://www.nerdfonts.com/font-downloads
|
||||
|
||||
If you use a non‑Nerd font, the prompt falls back to ASCII/Unicode.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Install
|
||||
|
||||
### 🐧 Linux / WSL (global, all users)
|
||||
|
||||
@@ -33,13 +50,6 @@ cd Bashrc
|
||||
sudo bash dotfiles/install/install-linux-global.sh
|
||||
```
|
||||
|
||||
You get 3 choices in the install script:
|
||||
1) PS1 only
|
||||
2) Banner only
|
||||
3) Both (PS1 + banner)
|
||||
|
||||
To "uninstall" one part, run the script again and choose only the other.
|
||||
|
||||
4) Open a new shell to see the prompt and banner.
|
||||
|
||||
### 🍏 macOS (per-user)
|
||||
@@ -68,21 +78,66 @@ bash dotfiles/install/install-macos-user.sh
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
### 🖼️ Nerd Fonts (optional but recommended)
|
||||
<details>
|
||||
<summary><strong>Installer menu (structure)</strong></summary>
|
||||
|
||||
```bash
|
||||
bash dotfiles/install/install-nerdfont.sh
|
||||
```text
|
||||
Install options
|
||||
├─ 1) PS1 only
|
||||
├─ 2) Banner only
|
||||
└─ 3) Both (PS1 + banner)
|
||||
└─ PS1 mode
|
||||
├─ 1) Single season (static)
|
||||
│ ├─ Pick season (Winter/Spring/Summer/Autumn)
|
||||
│ └─ Layout order (day-time-user / user-time / time-user / day-time)
|
||||
├─ 2) Dynamic season (auto)
|
||||
│ └─ Layout order (day-time-user / user-time / time-user / day-time)
|
||||
├─ 3) Contest pack (static)
|
||||
│ ├─ Layout order
|
||||
│ └─ Style preset (Aurora/Neon/Forge/Circuit/Mono/Git/Hawolex/HawolexV2)
|
||||
├─ 4) Holidays pack (static)
|
||||
│ ├─ Pick holiday (Christmas/Easter/Halloween/Valentine/Thanksgiving/NewYear)
|
||||
│ └─ Layout order
|
||||
└─ 5) Custom pack (static)
|
||||
└─ Style (Radar/Synthwave/Noir/Topo/Glitch/ArcticFire/AcidLime)
|
||||
|
||||
Final prompt:
|
||||
└─ Enable git capsule for all themes? [y/N]
|
||||
```
|
||||
</details>
|
||||
|
||||
After install:
|
||||
<details>
|
||||
<summary><strong>Installer choices</strong></summary>
|
||||
|
||||
- Open your terminal settings
|
||||
- Set font to JetBrainsMono Nerd Font (or any Nerd Font)
|
||||
- Terminal must use a Nerd Font for glyphs like ``, ``, `` to render correctly
|
||||
Linux/WSL:
|
||||
|
||||
- PS1 only / Banner only / Both
|
||||
- PS1 modes: Single season, Dynamic season, Contest pack, Holidays pack, Custom pack
|
||||
- Dynamic season auto-switches by time of year (Spring: Mar–May, Summer: Jun–Aug, Autumn: Sep–Nov 14, Winter: Nov 15–Feb)
|
||||
- Layout order (day-time-user, user-time, time-user, day-time) for seasonal and contest modes
|
||||
|
||||
macOS:
|
||||
|
||||
- PS1 modes: Single season, Dynamic season, Contest pack, Holidays pack, Custom pack
|
||||
- Dynamic season auto-switches by time of year (same ranges as Linux)
|
||||
- Layout order (day-time-user, user-time, time-user, day-time) for seasonal and contest modes
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## ✅ What gets installed (PS1 + banner)
|
||||
## ✨ Features
|
||||
|
||||
- Two-line, powerline-style prompt
|
||||
- Seasonal palettes + time-based emoji accents
|
||||
- Smart path shortening (keeps home visible)
|
||||
- Status-colored prompt arrow
|
||||
- Works on Linux, WSL, and macOS
|
||||
- Per-user disable switch
|
||||
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary><strong>What gets installed</strong></summary>
|
||||
|
||||
### Linux / WSL
|
||||
|
||||
@@ -98,20 +153,23 @@ After install:
|
||||
- Copies `ps1/ps1.sh` to `~/.config/ps1/ps1.sh`
|
||||
- Adds a source block in `~/.bashrc` and `~/.bash_profile`
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## PS1 module (when it runs)
|
||||
|
||||
The prompt is loaded automatically by the installer:
|
||||
<details>
|
||||
<summary><strong>PS1 module (when it runs)</strong></summary>
|
||||
|
||||
- Linux/WSL: sourced from `/etc/bash.bashrc` (global)
|
||||
- macOS: sourced from `~/.bashrc` and `~/.bash_profile` (per-user)
|
||||
|
||||
You normally do not need to run `ps1.sh` manually.
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## Banner (hostname + punchline + sysinfo)
|
||||
<details>
|
||||
<summary><strong>Banner (hostname + punchline + sysinfo)</strong></summary>
|
||||
|
||||
On Linux/WSL, a banner is also shown on login:
|
||||
|
||||
@@ -130,49 +188,82 @@ The install script prompts for a punchline and stores it in the file. You can al
|
||||
```bash
|
||||
echo "Your punchline" | sudo tee /etc/ps1-punchline >/dev/null
|
||||
```
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## PS1 install
|
||||
## 🎛️ Themes & Style Packs
|
||||
|
||||
Use the installer for your OS:
|
||||
|
||||
### Linux / WSL (global)
|
||||
|
||||
```bash
|
||||
sudo bash dotfiles/install/install-linux-global.sh
|
||||
```
|
||||
|
||||
### macOS (per-user)
|
||||
|
||||
```bash
|
||||
bash dotfiles/install/install-macos-user.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧠 Features
|
||||
|
||||
- **Clean, modern powerline-style prompt**
|
||||
- Zone 1: date/time/user (cool gray-blue)
|
||||
- Zone 2: host/path (turquoise / cool green)
|
||||
- Automatically switches emoji during the day
|
||||
- Smart path shortening (keeps your home dir visible)
|
||||
- Fallback to ASCII/Unicode if Nerd Fonts are not installed
|
||||
- Per-user disable support
|
||||
- Simple per-user or global install
|
||||
|
||||
---
|
||||
|
||||
## 🏁 Contest Pack
|
||||
### 🏁 Contest Pack
|
||||
|
||||
The contest pack is a bold, DEFCON-ready set of five styles (Aurora, Neon, Forge, Circuit, Mono) with optional layout order. It always starts on a new line and ends with `@host - /path`.
|
||||
|
||||
Note: This repo was built with AI assistance, but the contest pack itself is authored fully by Steffen.
|
||||
Note: This repo was built with AI assistance, and the contest pack itself is fully AI-authored.
|
||||
|
||||
---
|
||||
|
||||
## 😀 Emoji palette (compressed)
|
||||
<details>
|
||||
<summary><strong>Custom Pack (bold styles)</strong></summary>
|
||||
|
||||
Seven extra styles, built to be loud and expressive:
|
||||
|
||||
- Radar: green scanline HUD
|
||||
- Synthwave: pink/cyan/orange glow blocks
|
||||
- Noir: near-black minimal + red path
|
||||
- Topo: elevation-style path segments
|
||||
- Glitch: jitter separators + neon
|
||||
- ArcticFire: icy blues into ember orange
|
||||
- AcidLime: black + electric green
|
||||
|
||||
Custom styles add a small context badge when relevant (`ssh`, `ctr`, `git`).
|
||||
|
||||
Demo mode (screenshots): choose "Demo" to auto-cycle through all themes on each prompt.
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary><strong>Git Theme (details)</strong></summary>
|
||||
|
||||
The Git theme adds a repo-aware capsule on line 2 that only appears inside a Git repo. The branch name is wrapped as `⟦branch⟧`, and status emojis reflect state:
|
||||
|
||||
- Clean: ✨
|
||||
- Dirty: 🔨
|
||||
- Staged: 📌
|
||||
- Untracked: 🧷
|
||||
- Stashed: 📦
|
||||
|
||||
It uses the same two-block layout as Aurora, but focuses on signal and minimal noise for fast scanning. Use it when you want repo status on every command without a full VCS prompt.
|
||||
|
||||
Git capsule switch:
|
||||
|
||||
- `PS1_GIT=1` enables the git capsule on all themes
|
||||
- Git theme always shows it, regardless of `PS1_GIT`
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary><strong>Holidays Pack (themes)</strong></summary>
|
||||
|
||||
Holidays pack uses themed palettes + emojis and the contest layout order:
|
||||
|
||||
- Christmas, Easter, Halloween, Valentine, Thanksgiving, New Year
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 🧭 Theme Design Notes
|
||||
|
||||
- **Aurora (seasonal):** calm hierarchy, subtle gradients, long-term readability
|
||||
- **Contest styles:** bold contrast and distinct silhouettes for instant recognition
|
||||
- **Custom pack:** experimental, high-signal variants for strong personal style
|
||||
- **Holidays:** themed colors + emojis without compromising legibility
|
||||
|
||||
---
|
||||
|
||||
<details>
|
||||
<summary><strong>Emoji palette</strong></summary>
|
||||
|
||||
Fixed times (all seasons):
|
||||
|
||||
@@ -186,22 +277,46 @@ Seasonal sets (sunrise / work):
|
||||
- Autumn: 🍁 🍂 🌫️ 🌦️ / 🍂 🍄 🎃 🪵
|
||||
- Winter: 🏔️ 🌨️ ❄️ 🌌 / 🎿 ⛷️ 🏂 🧊
|
||||
|
||||
Time slots:
|
||||
|
||||
- Sunrise: 05:00–08:59
|
||||
- Coffee: 09:00–10:59
|
||||
- Work: 11:30–15:59 (unless lunch overrides)
|
||||
- Evening: 17:00–22:59
|
||||
- Night: 23:00–04:59
|
||||
|
||||
Meaning:
|
||||
|
||||
- Emoji is a light accent for time/season; it never replaces core info
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ Repo Structure
|
||||
|
||||
```text
|
||||
dotfiles/
|
||||
├── ps1/
|
||||
│ └── ps1.sh
|
||||
├── install/
|
||||
│ ├── install-linux-global.sh
|
||||
│ ├── install-macos-user.sh
|
||||
│ └── install-nerdfont.sh
|
||||
.
|
||||
├── .context.json
|
||||
├── contest-styles.json
|
||||
├── images/
|
||||
│ ├── bash-pallete.png
|
||||
│ └── contest.png
|
||||
│ └── themes/
|
||||
├── dotfiles/
|
||||
│ ├── banner/
|
||||
│ │ └── banner.sh
|
||||
│ ├── ps1/
|
||||
│ │ └── ps1.sh
|
||||
│ └── install/
|
||||
│ ├── install-global-ps1.sh
|
||||
│ ├── install-linux-global.sh
|
||||
│ ├── install-macos-user.sh
|
||||
│ └── install-nerdfont.sh
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## ⚙️ Overrides (Optional)
|
||||
<details>
|
||||
<summary><strong>Overrides (Optional)</strong></summary>
|
||||
|
||||
Sometimes autodetection doesn’t work (e.g., on macOS without fontconfig):
|
||||
|
||||
@@ -218,10 +333,12 @@ export PS1_FORCE_ASCII=1
|
||||
```
|
||||
|
||||
Add these to your `~/.bashrc` or `~/.bash_profile`.
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 🙅 Disable Prompt (per user)
|
||||
<details>
|
||||
<summary><strong>Disable prompt (per user)</strong></summary>
|
||||
|
||||
If you want to disable the global prompt for your account:
|
||||
|
||||
@@ -243,10 +360,12 @@ To re-enable:
|
||||
```bash
|
||||
rm -f ~/.config/ps1/disable
|
||||
```
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing
|
||||
<details>
|
||||
<summary><strong>Testing</strong></summary>
|
||||
|
||||
After install, open a new shell and run:
|
||||
|
||||
@@ -255,10 +374,12 @@ bash -i -c 'echo OK'
|
||||
```
|
||||
|
||||
If you see a prompt with colors and emoji, things are working.
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 💡 Usage Notes
|
||||
<details>
|
||||
<summary><strong>Usage notes</strong></summary>
|
||||
|
||||
Font matters: even with Nerd Fonts installed, you must select them in your terminal settings.
|
||||
|
||||
@@ -271,39 +392,55 @@ Works on terminals like:
|
||||
- Windows Terminal (WSL)
|
||||
|
||||
If you see squares or missing glyphs, your terminal is likely using a non-Nerd font.
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 📸 Example Prompt
|
||||
## 📸 Theme Gallery
|
||||
|
||||
This prompt shows:
|
||||
Seasonal (Aurora):
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Contest pack:
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Holidays pack:
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Custom pack:
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Palette reference:
|
||||
|
||||
<p align="center">
|
||||
<img src="images/image.png" width="900">
|
||||
<img src="images/bash-pallete.png" width="900">
|
||||
</p>
|
||||
|
||||
With exit-status colored arrow and emoji reflecting time of day.
|
||||
|
||||
---
|
||||
|
||||
## 🔥 Why this is real high-end PS1 design
|
||||
|
||||
- Semantic color use (identity vs location)
|
||||
- Few colors, but with meaning
|
||||
- Path is visible, but never dominant
|
||||
- Emoji is an accent, not a gimmick
|
||||
- Prompt line is calm → the command gets focus
|
||||
|
||||
### 🎨 Color palette (notes)
|
||||
|
||||
| Role | BG | Description |
|
||||
| --- | --- | --- |
|
||||
| Zone 1 BG | 61 | gray-blue pastel |
|
||||
| Zone 1 FG | 255 | pure white |
|
||||
| Zone 2 BG | 37 | turquoise / cool green |
|
||||
| Path FG | 194 (FG) | light green, muted |
|
||||
| Frame | 60 | darker blue |
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Contribution
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"project": "Bashrc Dotfiles",
|
||||
"branch": "dev",
|
||||
"purpose": "DEFCON contest render pack for PS1 styles",
|
||||
"branch": "main",
|
||||
"purpose": "DEFCON contest + custom render pack for PS1 styles",
|
||||
"contest_pack": {
|
||||
"layout_options": [
|
||||
"day-time-user",
|
||||
@@ -29,6 +29,135 @@
|
||||
"night": "🕶️"
|
||||
}
|
||||
},
|
||||
"prompt_spacing": {
|
||||
"emoji_padding": 2,
|
||||
"note": "Two spaces after the emoji before the cursor"
|
||||
},
|
||||
"emoji_rules": {
|
||||
"fixed_times": [
|
||||
"11:00-11:29 => 🥪",
|
||||
"16:00-16:59 => 🍲"
|
||||
],
|
||||
"time_slots": {
|
||||
"sunrise": "05:00-08:59",
|
||||
"coffee": "09:00-10:59",
|
||||
"work": "11:30-15:59",
|
||||
"evening": "17:00-22:59",
|
||||
"night": "23:00-04:59"
|
||||
},
|
||||
"rotation": "Daily rotation by day-of-year with season offsets."
|
||||
},
|
||||
"holiday_pack": {
|
||||
"layout_options": [
|
||||
"day-time-user",
|
||||
"user-time",
|
||||
"time-user",
|
||||
"day-time"
|
||||
],
|
||||
"host_path_format": "@host - /path",
|
||||
"prefix_newline": true,
|
||||
"themes": {
|
||||
"christmas": {
|
||||
"palette": { "Z1_BG": 52, "Z1_FG": 255, "Z2_BG": 28, "Z2_FG": 255, "PATH_FG": 194, "FRAME": 88 },
|
||||
"emoji_set": {
|
||||
"sunrise": [ "🎄", "🎅", "❄️", "⛄" ],
|
||||
"work": [ "🎁", "🧤", "🧣", "🦌" ],
|
||||
"coffee": "☕",
|
||||
"evening": "🌟",
|
||||
"night": "🕯️"
|
||||
}
|
||||
},
|
||||
"easter": {
|
||||
"palette": { "Z1_BG": 186, "Z1_FG": 16, "Z2_BG": 150, "Z2_FG": 16, "PATH_FG": 94, "FRAME": 143 },
|
||||
"emoji_set": {
|
||||
"sunrise": [ "🐣", "🥚", "🌷", "🌤" ],
|
||||
"work": [ "🐰", "🌼", "🧺", "🍫" ],
|
||||
"coffee": "☕",
|
||||
"evening": "🌅",
|
||||
"night": "🌙"
|
||||
}
|
||||
},
|
||||
"halloween": {
|
||||
"palette": { "Z1_BG": 53, "Z1_FG": 255, "Z2_BG": 166, "Z2_FG": 16, "PATH_FG": 16, "FRAME": 89 },
|
||||
"emoji_set": {
|
||||
"sunrise": [ "🎃", "🦇", "🌕", "🕸️" ],
|
||||
"work": [ "👻", "💀", "🕯️", "🧪" ],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🕷️"
|
||||
}
|
||||
},
|
||||
"valentine": {
|
||||
"palette": { "Z1_BG": 198, "Z1_FG": 255, "Z2_BG": 205, "Z2_FG": 255, "PATH_FG": 224, "FRAME": 162 },
|
||||
"emoji_set": {
|
||||
"sunrise": [ "💖", "🌹", "💘", "💕" ],
|
||||
"work": [ "💌", "🍫", "🕊️", "💗" ],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
}
|
||||
},
|
||||
"thanksgiving": {
|
||||
"palette": { "Z1_BG": 94, "Z1_FG": 230, "Z2_BG": 136, "Z2_FG": 231, "PATH_FG": 223, "FRAME": 130 },
|
||||
"emoji_set": {
|
||||
"sunrise": [ "🦃", "🍁", "🥧", "🍂" ],
|
||||
"work": [ "🍽️", "🌾", "🧺", "🥖" ],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
}
|
||||
},
|
||||
"newyear": {
|
||||
"palette": { "Z1_BG": 17, "Z1_FG": 255, "Z2_BG": 20, "Z2_FG": 255, "PATH_FG": 229, "FRAME": 19 },
|
||||
"emoji_set": {
|
||||
"sunrise": [ "🎆", "🥂", "🎇", "✨" ],
|
||||
"work": [ "🗓️", "⏳", "🚀", "✨" ],
|
||||
"coffee": "☕",
|
||||
"evening": "🌆",
|
||||
"night": "🌙"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"custom_pack": {
|
||||
"styles": [
|
||||
{
|
||||
"id": "radar",
|
||||
"tagline": "Green scanline HUD",
|
||||
"preview": "[user time] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "synthwave",
|
||||
"tagline": "Pink/cyan/orange glow blocks",
|
||||
"preview": "[date time user] | @host | /path"
|
||||
},
|
||||
{
|
||||
"id": "noir",
|
||||
"tagline": "Near-black minimal + red path",
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "topo",
|
||||
"tagline": "Elevation path (multi-tone)",
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "glitch",
|
||||
"tagline": "Jitter separators",
|
||||
"preview": "[date time user] ~ @host /path"
|
||||
},
|
||||
{
|
||||
"id": "arcticfire",
|
||||
"tagline": "Ice blue to ember orange",
|
||||
"preview": "[date time user] | @host | /path"
|
||||
},
|
||||
{
|
||||
"id": "acidlime",
|
||||
"tagline": "Black + electric green",
|
||||
"preview": "[date time user] @host /path"
|
||||
}
|
||||
]
|
||||
},
|
||||
"styles": [
|
||||
{
|
||||
"id": "aurora",
|
||||
@@ -113,13 +242,208 @@
|
||||
"fg_dim": 240
|
||||
},
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "git",
|
||||
"name": "Git",
|
||||
"tagline": "Repo-aware minimalism",
|
||||
"description": "Minimal blocks with git capsule on line 2.",
|
||||
"layout": {
|
||||
"line1": "date time user | @host - /path",
|
||||
"line2": "status arrow + emoji + git"
|
||||
},
|
||||
"colors": {
|
||||
"zone1_bg": 61,
|
||||
"zone1_fg": 255,
|
||||
"zone2_bg": 37,
|
||||
"zone2_fg": 255,
|
||||
"path_fg": 194,
|
||||
"frame": 60
|
||||
},
|
||||
"preview": "[date time user] @host - /path (git)"
|
||||
},
|
||||
{
|
||||
"id": "hawolex",
|
||||
"name": "Hawolex",
|
||||
"tagline": "Winter neon, tech icons",
|
||||
"description": "Contest layout with winter-strong palette and tech emojis.",
|
||||
"layout": {
|
||||
"line1": "date time user | @host - /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"zone1_bg": 54,
|
||||
"zone1_fg": 255,
|
||||
"zone2_bg": 31,
|
||||
"zone2_fg": 255,
|
||||
"path_fg": 230,
|
||||
"frame": 24
|
||||
},
|
||||
"preview": "[date time user] @host - /path"
|
||||
},
|
||||
{
|
||||
"id": "hawolexv2",
|
||||
"name": "HawolexV2",
|
||||
"tagline": "Winter neon gradient",
|
||||
"description": "Multi-segment winter neon gradient with stronger separation.",
|
||||
"layout": {
|
||||
"line1": "date time user | @host | /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"zone1_bg": 54,
|
||||
"zone2_bg": 55,
|
||||
"zone3_bg": 56,
|
||||
"zone4_bg": 31,
|
||||
"zone5_bg": 30,
|
||||
"zone_fg": 255,
|
||||
"path_fg": 230,
|
||||
"frame": 24
|
||||
},
|
||||
"preview": "[date time user] @host - /path"
|
||||
},
|
||||
{
|
||||
"id": "demo",
|
||||
"name": "Demo",
|
||||
"tagline": "Auto-rotate all themes",
|
||||
"description": "Cycles through all themes each prompt for rapid screenshots.",
|
||||
"layout": {
|
||||
"line1": "auto",
|
||||
"line2": "auto"
|
||||
},
|
||||
"colors": {
|
||||
"note": "Uses each theme's native palette"
|
||||
},
|
||||
"preview": "(auto-rotate)"
|
||||
},
|
||||
{
|
||||
"id": "radar",
|
||||
"name": "Radar",
|
||||
"tagline": "Green scanline HUD",
|
||||
"description": "Minimal HUD lines with green signal accents.",
|
||||
"layout": {
|
||||
"line1": "user time @host /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"frame": 22,
|
||||
"fg_main": 46,
|
||||
"fg_dim": 28,
|
||||
"path_fg": 120
|
||||
},
|
||||
"preview": "[user time] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "synthwave",
|
||||
"name": "Synthwave",
|
||||
"tagline": "Pink/cyan/orange glow",
|
||||
"description": "Three-block powerline glow in neon tones.",
|
||||
"layout": {
|
||||
"line1": "date time user | @host | /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"zone1_bg": 198,
|
||||
"zone1_fg": 255,
|
||||
"zone2_bg": 45,
|
||||
"zone2_fg": 16,
|
||||
"zone3_bg": 208,
|
||||
"zone3_fg": 16,
|
||||
"frame": 201
|
||||
},
|
||||
"preview": "[date time user] | @host | /path"
|
||||
},
|
||||
{
|
||||
"id": "noir",
|
||||
"name": "Noir",
|
||||
"tagline": "Near-black minimal",
|
||||
"description": "Low-light mono with a red path accent.",
|
||||
"layout": {
|
||||
"line1": "date time user @host /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"fg_main": 250,
|
||||
"fg_dim": 242,
|
||||
"path_fg": 160,
|
||||
"frame": 236
|
||||
},
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "topo",
|
||||
"name": "Topo",
|
||||
"tagline": "Elevation path",
|
||||
"description": "Multi-tone path segments for depth.",
|
||||
"layout": {
|
||||
"line1": "date time user @host /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"path_fg": [109, 110, 111, 110],
|
||||
"frame": 24
|
||||
},
|
||||
"preview": "[date time user] @host /path"
|
||||
},
|
||||
{
|
||||
"id": "glitch",
|
||||
"name": "Glitch",
|
||||
"tagline": "Jitter separators",
|
||||
"description": "Shifting glyph separators in neon tones.",
|
||||
"layout": {
|
||||
"line1": "date time user ~ @host /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"fg_main": 118,
|
||||
"fg_dim": 60,
|
||||
"frame": 129
|
||||
},
|
||||
"preview": "[date time user] ~ @host /path"
|
||||
},
|
||||
{
|
||||
"id": "arcticfire",
|
||||
"name": "ArcticFire",
|
||||
"tagline": "Ice to ember",
|
||||
"description": "Cold blues into hot orange, three blocks.",
|
||||
"layout": {
|
||||
"line1": "date time user | @host | /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"zone1_bg": 24,
|
||||
"zone1_fg": 255,
|
||||
"zone2_bg": 31,
|
||||
"zone2_fg": 255,
|
||||
"zone3_bg": 208,
|
||||
"zone3_fg": 16,
|
||||
"frame": 25
|
||||
},
|
||||
"preview": "[date time user] | @host | /path"
|
||||
},
|
||||
{
|
||||
"id": "acidlime",
|
||||
"name": "AcidLime",
|
||||
"tagline": "Electric green",
|
||||
"description": "Black background with green signal.",
|
||||
"layout": {
|
||||
"line1": "date time user @host /path",
|
||||
"line2": "status arrow + emoji"
|
||||
},
|
||||
"colors": {
|
||||
"fg_main": 46,
|
||||
"fg_dim": 40,
|
||||
"path_fg": 118,
|
||||
"frame": 46
|
||||
},
|
||||
"preview": "[date time user] @host /path"
|
||||
}
|
||||
],
|
||||
"seasonal_palettes": {
|
||||
"winter": { "Z1_BG": 61, "Z1_FG": 255, "Z2_BG": 37, "Z2_FG": 255, "PATH_FG": 194, "FRAME": 60 },
|
||||
"spring": { "Z1_BG": 71, "Z1_FG": 255, "Z2_BG": 120, "Z2_FG": 22, "PATH_FG": 22, "FRAME": 65 },
|
||||
"summer": { "Z1_BG": 142, "Z1_FG": 255, "Z2_BG": 214, "Z2_FG": 0, "PATH_FG": 232, "FRAME": 130 },
|
||||
"autumn": { "Z1_BG": 95, "Z1_FG": 255, "Z2_BG": 173, "Z2_FG": 255, "PATH_FG": 223, "FRAME": 95 }
|
||||
"winter": { "Z1_BG": 59, "Z2_BG": 61, "Z3_BG": 63, "Z4_BG": 38, "Z5_BG": 37, "Z1_FG": 255, "Z2_FG": 255, "PATH_FG": 152, "FRAME": 60 },
|
||||
"spring": { "Z1_BG": 68, "Z2_BG": 70, "Z3_BG": 72, "Z4_BG": 121, "Z5_BG": 120, "Z1_FG": 255, "Z2_FG": 22, "PATH_FG": 28, "FRAME": 65 },
|
||||
"summer": { "Z1_BG": 141, "Z2_BG": 142, "Z3_BG": 143, "Z4_BG": 214, "Z5_BG": 208, "Z1_FG": 255, "Z2_FG": 0, "PATH_FG": 0, "FRAME": 130 },
|
||||
"autumn": { "Z1_BG": 93, "Z2_BG": 95, "Z3_BG": 97, "Z4_BG": 166, "Z5_BG": 136, "Z1_FG": 255, "Z2_FG": 255, "PATH_FG": 223, "FRAME": 95 }
|
||||
},
|
||||
"notes": [
|
||||
"Palette values are 256-color codes.",
|
||||
|
||||
@@ -28,6 +28,8 @@ season_choice=""
|
||||
style_choice="aurora"
|
||||
style_pack="standard"
|
||||
contest_layout="day-time-user"
|
||||
holiday_choice="christmas"
|
||||
git_choice="0"
|
||||
if [[ -t 0 ]]; then
|
||||
echo "Install options:"
|
||||
echo " 1) PS1 only"
|
||||
@@ -43,13 +45,15 @@ if [[ -t 0 ]]; then
|
||||
|
||||
if [[ "$install_ps1" -eq 1 ]]; then
|
||||
echo
|
||||
echo "PS1 mode:"
|
||||
echo " 1) Single season (static)"
|
||||
echo " 2) Dynamic season (changing)"
|
||||
echo " 3) Contest pack (static)"
|
||||
read -r -p "Choose [3]: " season_mode_choice
|
||||
case "${season_mode_choice}" in
|
||||
1)
|
||||
echo "PS1 mode:"
|
||||
echo " 1) Single season (static)"
|
||||
echo " 2) Dynamic season (auto, shifts with the year)"
|
||||
echo " 3) Contest pack (static)"
|
||||
echo " 4) Holidays pack (static)"
|
||||
echo " 5) Custom pack (static)"
|
||||
read -r -p "Choose [3]: " season_mode_choice
|
||||
case "${season_mode_choice}" in
|
||||
1)
|
||||
season_mode="static"
|
||||
echo "Pick a season:"
|
||||
echo " 1) Winter"
|
||||
@@ -66,16 +70,8 @@ if [[ -t 0 ]]; then
|
||||
esac
|
||||
|
||||
style_pack="standard"
|
||||
;;
|
||||
2)
|
||||
season_mode="dynamic"
|
||||
style_pack="standard"
|
||||
;;
|
||||
""|3)
|
||||
season_mode="static"
|
||||
style_pack="contest"
|
||||
contest_layout="day-time-user"
|
||||
echo "Contest layout order:"
|
||||
echo "Layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
@@ -89,38 +85,164 @@ if [[ -t 0 ]]; then
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice, using dynamic."
|
||||
season_mode="dynamic"
|
||||
style_pack="standard"
|
||||
2)
|
||||
season_mode="dynamic"
|
||||
style_pack="standard"
|
||||
contest_layout="day-time-user"
|
||||
echo "Layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
echo " 4) day-time"
|
||||
read -r -p "Choose [1]: " layout_pick
|
||||
case "${layout_pick}" in
|
||||
2) contest_layout="user-time" ;;
|
||||
3) contest_layout="time-user" ;;
|
||||
4) contest_layout="day-time" ;;
|
||||
""|1) contest_layout="day-time-user" ;;
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
""|3)
|
||||
season_mode="static"
|
||||
style_pack="contest"
|
||||
contest_layout="day-time-user"
|
||||
echo "Contest layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
echo " 4) day-time"
|
||||
read -r -p "Choose [1]: " layout_pick
|
||||
case "${layout_pick}" in
|
||||
2) contest_layout="user-time" ;;
|
||||
3) contest_layout="time-user" ;;
|
||||
4) contest_layout="day-time" ;;
|
||||
""|1) contest_layout="day-time-user" ;;
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
4)
|
||||
season_mode="dynamic"
|
||||
style_pack="holiday"
|
||||
echo "Holiday theme:"
|
||||
echo " 1) Christmas"
|
||||
echo " 2) Easter"
|
||||
echo " 3) Halloween"
|
||||
echo " 4) Valentine"
|
||||
echo " 5) Thanksgiving"
|
||||
echo " 6) New Year"
|
||||
read -r -p "Choose [1]: " holiday_pick
|
||||
case "${holiday_pick}" in
|
||||
2) holiday_choice="easter" ;;
|
||||
3) holiday_choice="halloween" ;;
|
||||
4) holiday_choice="valentine" ;;
|
||||
5) holiday_choice="thanksgiving" ;;
|
||||
6) holiday_choice="newyear" ;;
|
||||
""|1) holiday_choice="christmas" ;;
|
||||
*) echo "Invalid choice, using christmas."; holiday_choice="christmas" ;;
|
||||
esac
|
||||
|
||||
contest_layout="day-time-user"
|
||||
echo "Layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
echo " 4) day-time"
|
||||
read -r -p "Choose [1]: " layout_pick
|
||||
case "${layout_pick}" in
|
||||
2) contest_layout="user-time" ;;
|
||||
3) contest_layout="time-user" ;;
|
||||
4) contest_layout="day-time" ;;
|
||||
""|1) contest_layout="day-time-user" ;;
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
5)
|
||||
season_mode="static"
|
||||
style_pack="custom"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice, using dynamic."
|
||||
season_mode="dynamic"
|
||||
style_pack="standard"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$style_pack" == "contest" ]]; then
|
||||
echo
|
||||
echo "Style presets:"
|
||||
echo " 1) Aurora - Powerline blocks, seasonal palette, two-line"
|
||||
echo " 1) Demo - Cycles all themes every prompt"
|
||||
echo " Preview: (auto-rotate)"
|
||||
echo " 2) Aurora - Powerline blocks, seasonal palette, two-line"
|
||||
echo " Preview: [date time user] > [@host /path]"
|
||||
echo " 2) Neon - Magenta/cyan cyber blocks, high contrast"
|
||||
echo " 3) Neon - Magenta/cyan cyber blocks, high contrast"
|
||||
echo " Preview: [user time] > [@host /path]"
|
||||
echo " 3) Forge - Warm copper blocks, heavy frame"
|
||||
echo " 4) Forge - Warm copper blocks, heavy frame"
|
||||
echo " Preview: [date time user] > [@host /path]"
|
||||
echo " 4) Circuit - Green scanline, minimal rails"
|
||||
echo " 5) Circuit - Green scanline, minimal rails"
|
||||
echo " Preview: [user time] - @host /path"
|
||||
echo " 5) Mono - Clean monochrome, fast read"
|
||||
echo " 6) Mono - Clean monochrome, fast read"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
echo " 7) Git - Minimal with git capsule"
|
||||
echo " Preview: [date time user] @host - /path (git)"
|
||||
echo " 8) Hawolex - Winter neon, tech icons"
|
||||
echo " Preview: [date time user] @host - /path"
|
||||
echo " 9) HawolexV2 - Winter neon gradient"
|
||||
echo " Preview: [date time user] @host - /path"
|
||||
read -r -p "Choose style [1]: " style_pick
|
||||
case "${style_pick}" in
|
||||
2) style_choice="aurora" ;;
|
||||
3) style_choice="neon" ;;
|
||||
4) style_choice="forge" ;;
|
||||
5) style_choice="circuit" ;;
|
||||
6) style_choice="mono" ;;
|
||||
7) style_choice="git" ;;
|
||||
8) style_choice="hawolex" ;;
|
||||
9) style_choice="hawolexv2" ;;
|
||||
""|1) style_choice="demo" ;;
|
||||
*) echo "Invalid choice, using demo."; style_choice="demo" ;;
|
||||
esac
|
||||
|
||||
elif [[ "$style_pack" == "custom" ]]; then
|
||||
echo
|
||||
echo "Custom styles:"
|
||||
echo " 1) Radar - Green scanline HUD, ultra clean"
|
||||
echo " Preview: [user time] @host /path"
|
||||
echo " 2) Synthwave - Pink/cyan/orange glow blocks"
|
||||
echo " Preview: [date time user] | @host | /path"
|
||||
echo " 3) Noir - Near-black minimal + red path"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
echo " 4) Topo - Elevation path (multi-tone)"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
echo " 5) Glitch - Jitter glyph separators"
|
||||
echo " Preview: [date time user] ~ @host /path"
|
||||
echo " 6) ArcticFire - Ice blue to ember orange"
|
||||
echo " Preview: [date time user] | @host | /path"
|
||||
echo " 7) AcidLime - Black + electric green"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
read -r -p "Choose style [1]: " style_pick
|
||||
case "${style_pick}" in
|
||||
2) style_choice="neon" ;;
|
||||
3) style_choice="forge" ;;
|
||||
4) style_choice="circuit" ;;
|
||||
5) style_choice="mono" ;;
|
||||
""|1) style_choice="aurora" ;;
|
||||
*) echo "Invalid choice, using aurora."; style_choice="aurora" ;;
|
||||
2) style_choice="synthwave" ;;
|
||||
3) style_choice="noir" ;;
|
||||
4) style_choice="topo" ;;
|
||||
5) style_choice="glitch" ;;
|
||||
6) style_choice="arcticfire" ;;
|
||||
7) style_choice="acidlime" ;;
|
||||
""|1) style_choice="radar" ;;
|
||||
*) echo "Invalid choice, using radar."; style_choice="radar" ;;
|
||||
esac
|
||||
else
|
||||
style_choice="aurora"
|
||||
fi
|
||||
|
||||
read -r -p "Enable git capsule for all themes? [y/N]: " git_pick
|
||||
case "${git_pick}" in
|
||||
y|Y) git_choice="1" ;;
|
||||
*) git_choice="0" ;;
|
||||
esac
|
||||
if [[ "$style_choice" == "git" ]]; then
|
||||
git_choice="1"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -193,9 +315,13 @@ if [[ "$install_ps1" -eq 1 ]]; then
|
||||
{
|
||||
printf 'PS1_STYLE=%s\n' "$style_choice"
|
||||
printf 'PS1_STYLE_PACK=%s\n' "$style_pack"
|
||||
if [[ "$style_pack" == "contest" ]]; then
|
||||
if [[ "$style_pack" == "contest" || "$style_pack" == "holiday" || "$style_pack" == "standard" ]]; then
|
||||
printf 'PS1_CONTEST_LAYOUT=%s\n' "$contest_layout"
|
||||
fi
|
||||
if [[ "$style_pack" == "holiday" ]]; then
|
||||
printf 'PS1_HOLIDAY=%s\n' "${holiday_choice:-christmas}"
|
||||
fi
|
||||
printf 'PS1_GIT=%s\n' "$git_choice"
|
||||
} > /etc/ps1-style
|
||||
chmod 0644 /etc/ps1-style
|
||||
else
|
||||
|
||||
@@ -17,12 +17,16 @@ season_mode="dynamic"
|
||||
season_choice=""
|
||||
style_choice="aurora"
|
||||
contest_layout="day-time-user"
|
||||
holiday_choice="christmas"
|
||||
git_choice="0"
|
||||
if [[ -t 0 ]]; then
|
||||
style_pack="standard"
|
||||
echo "PS1 mode:"
|
||||
echo " 1) Single season (static)"
|
||||
echo " 2) Dynamic season (changing)"
|
||||
echo " 2) Dynamic season (auto, shifts with the year)"
|
||||
echo " 3) Contest pack (static)"
|
||||
echo " 4) Holidays pack (static)"
|
||||
echo " 5) Custom pack (static)"
|
||||
read -r -p "Choose [3]: " season_mode_choice
|
||||
case "${season_mode_choice}" in
|
||||
1)
|
||||
@@ -41,11 +45,39 @@ if [[ -t 0 ]]; then
|
||||
*) echo "Invalid choice, using winter."; season_choice="winter" ;;
|
||||
esac
|
||||
|
||||
style_pack="standard"
|
||||
;;
|
||||
style_pack="standard"
|
||||
contest_layout="day-time-user"
|
||||
echo "Layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
echo " 4) day-time"
|
||||
read -r -p "Choose [1]: " layout_pick
|
||||
case "${layout_pick}" in
|
||||
2) contest_layout="user-time" ;;
|
||||
3) contest_layout="time-user" ;;
|
||||
4) contest_layout="day-time" ;;
|
||||
""|1) contest_layout="day-time-user" ;;
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
2)
|
||||
season_mode="dynamic"
|
||||
style_pack="standard"
|
||||
contest_layout="day-time-user"
|
||||
echo "Layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
echo " 4) day-time"
|
||||
read -r -p "Choose [1]: " layout_pick
|
||||
case "${layout_pick}" in
|
||||
2) contest_layout="user-time" ;;
|
||||
3) contest_layout="time-user" ;;
|
||||
4) contest_layout="day-time" ;;
|
||||
""|1) contest_layout="day-time-user" ;;
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
""|3)
|
||||
season_mode="static"
|
||||
@@ -65,6 +97,46 @@ if [[ -t 0 ]]; then
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
4)
|
||||
season_mode="dynamic"
|
||||
style_pack="holiday"
|
||||
echo "Holiday theme:"
|
||||
echo " 1) Christmas"
|
||||
echo " 2) Easter"
|
||||
echo " 3) Halloween"
|
||||
echo " 4) Valentine"
|
||||
echo " 5) Thanksgiving"
|
||||
echo " 6) New Year"
|
||||
read -r -p "Choose [1]: " holiday_pick
|
||||
case "${holiday_pick}" in
|
||||
2) holiday_choice="easter" ;;
|
||||
3) holiday_choice="halloween" ;;
|
||||
4) holiday_choice="valentine" ;;
|
||||
5) holiday_choice="thanksgiving" ;;
|
||||
6) holiday_choice="newyear" ;;
|
||||
""|1) holiday_choice="christmas" ;;
|
||||
*) echo "Invalid choice, using christmas."; holiday_choice="christmas" ;;
|
||||
esac
|
||||
|
||||
contest_layout="day-time-user"
|
||||
echo "Layout order:"
|
||||
echo " 1) day-time-user"
|
||||
echo " 2) user-time"
|
||||
echo " 3) time-user"
|
||||
echo " 4) day-time"
|
||||
read -r -p "Choose [1]: " layout_pick
|
||||
case "${layout_pick}" in
|
||||
2) contest_layout="user-time" ;;
|
||||
3) contest_layout="time-user" ;;
|
||||
4) contest_layout="day-time" ;;
|
||||
""|1) contest_layout="day-time-user" ;;
|
||||
*) echo "Invalid choice, using day-time-user."; contest_layout="day-time-user" ;;
|
||||
esac
|
||||
;;
|
||||
5)
|
||||
season_mode="static"
|
||||
style_pack="custom"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid choice, using dynamic."
|
||||
season_mode="dynamic"
|
||||
@@ -75,28 +147,78 @@ if [[ -t 0 ]]; then
|
||||
if [[ "$style_pack" == "contest" ]]; then
|
||||
echo
|
||||
echo "Style presets:"
|
||||
echo " 1) Aurora - Powerline blocks, seasonal palette, two-line"
|
||||
echo " 1) Demo - Cycles all themes every prompt"
|
||||
echo " Preview: (auto-rotate)"
|
||||
echo " 2) Aurora - Powerline blocks, seasonal palette, two-line"
|
||||
echo " Preview: [date time user] > [@host /path]"
|
||||
echo " 2) Neon - Magenta/cyan cyber blocks, high contrast"
|
||||
echo " 3) Neon - Magenta/cyan cyber blocks, high contrast"
|
||||
echo " Preview: [user time] > [@host /path]"
|
||||
echo " 3) Forge - Warm copper blocks, heavy frame"
|
||||
echo " 4) Forge - Warm copper blocks, heavy frame"
|
||||
echo " Preview: [date time user] > [@host /path]"
|
||||
echo " 4) Circuit - Green scanline, minimal rails"
|
||||
echo " 5) Circuit - Green scanline, minimal rails"
|
||||
echo " Preview: [user time] - @host /path"
|
||||
echo " 5) Mono - Clean monochrome, fast read"
|
||||
echo " 6) Mono - Clean monochrome, fast read"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
echo " 7) Git - Minimal with git capsule"
|
||||
echo " Preview: [date time user] @host - /path (git)"
|
||||
echo " 8) Hawolex - Winter neon, tech icons"
|
||||
echo " Preview: [date time user] @host - /path"
|
||||
echo " 9) HawolexV2 - Winter neon gradient"
|
||||
echo " Preview: [date time user] @host - /path"
|
||||
read -r -p "Choose style [1]: " style_pick
|
||||
case "${style_pick}" in
|
||||
2) style_choice="aurora" ;;
|
||||
3) style_choice="neon" ;;
|
||||
4) style_choice="forge" ;;
|
||||
5) style_choice="circuit" ;;
|
||||
6) style_choice="mono" ;;
|
||||
7) style_choice="git" ;;
|
||||
8) style_choice="hawolex" ;;
|
||||
9) style_choice="hawolexv2" ;;
|
||||
""|1) style_choice="demo" ;;
|
||||
*) echo "Invalid choice, using demo."; style_choice="demo" ;;
|
||||
esac
|
||||
|
||||
elif [[ "$style_pack" == "custom" ]]; then
|
||||
echo
|
||||
echo "Custom styles:"
|
||||
echo " 1) Radar - Green scanline HUD, ultra clean"
|
||||
echo " Preview: [user time] @host /path"
|
||||
echo " 2) Synthwave - Pink/cyan/orange glow blocks"
|
||||
echo " Preview: [date time user] | @host | /path"
|
||||
echo " 3) Noir - Near-black minimal + red path"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
echo " 4) Topo - Elevation path (multi-tone)"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
echo " 5) Glitch - Jitter glyph separators"
|
||||
echo " Preview: [date time user] ~ @host /path"
|
||||
echo " 6) ArcticFire - Ice blue to ember orange"
|
||||
echo " Preview: [date time user] | @host | /path"
|
||||
echo " 7) AcidLime - Black + electric green"
|
||||
echo " Preview: [date time user] @host /path"
|
||||
read -r -p "Choose style [1]: " style_pick
|
||||
case "${style_pick}" in
|
||||
2) style_choice="neon" ;;
|
||||
3) style_choice="forge" ;;
|
||||
4) style_choice="circuit" ;;
|
||||
5) style_choice="mono" ;;
|
||||
""|1) style_choice="aurora" ;;
|
||||
*) echo "Invalid choice, using aurora."; style_choice="aurora" ;;
|
||||
2) style_choice="synthwave" ;;
|
||||
3) style_choice="noir" ;;
|
||||
4) style_choice="topo" ;;
|
||||
5) style_choice="glitch" ;;
|
||||
6) style_choice="arcticfire" ;;
|
||||
7) style_choice="acidlime" ;;
|
||||
""|1) style_choice="radar" ;;
|
||||
*) echo "Invalid choice, using radar."; style_choice="radar" ;;
|
||||
esac
|
||||
else
|
||||
style_choice="aurora"
|
||||
fi
|
||||
|
||||
read -r -p "Enable git capsule for all themes? [y/N]: " git_pick
|
||||
case "${git_pick}" in
|
||||
y|Y) git_choice="1" ;;
|
||||
*) git_choice="0" ;;
|
||||
esac
|
||||
if [[ "$style_choice" == "git" ]]; then
|
||||
git_choice="1"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$DST_DIR"
|
||||
@@ -114,9 +236,13 @@ chmod 0644 "$SEASON_FILE"
|
||||
{
|
||||
printf 'PS1_STYLE=%s\n' "$style_choice"
|
||||
printf 'PS1_STYLE_PACK=%s\n' "$style_pack"
|
||||
if [[ "$style_pack" == "contest" ]]; then
|
||||
if [[ "$style_pack" == "contest" || "$style_pack" == "holiday" || "$style_pack" == "standard" ]]; then
|
||||
printf 'PS1_CONTEST_LAYOUT=%s\n' "$contest_layout"
|
||||
fi
|
||||
if [[ "$style_pack" == "holiday" ]]; then
|
||||
printf 'PS1_HOLIDAY=%s\n' "${holiday_choice:-christmas}"
|
||||
fi
|
||||
printf 'PS1_GIT=%s\n' "$git_choice"
|
||||
} > "$STYLE_FILE"
|
||||
chmod 0644 "$STYLE_FILE"
|
||||
|
||||
|
||||
@@ -89,10 +89,12 @@ _ps1_season() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Style selection (aurora/neon/forge/circuit/mono)
|
||||
# PS1_STYLE=aurora|neon|forge|circuit|mono
|
||||
# PS1_STYLE_PACK=standard|contest
|
||||
# Style selection (aurora/neon/forge/circuit/mono/git/hawolex + custom pack)
|
||||
# PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime|demo
|
||||
# PS1_STYLE_PACK=standard|contest|holiday|custom
|
||||
# PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time
|
||||
# PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear
|
||||
# PS1_GIT=0|1
|
||||
# Also reads config from /etc/ps1-style or ~/.config/ps1/style
|
||||
_ps1_style_config() {
|
||||
local cfg=""
|
||||
@@ -110,6 +112,8 @@ _ps1_style_config() {
|
||||
PS1_STYLE) export PS1_STYLE="$v" ;;
|
||||
PS1_STYLE_PACK) export PS1_STYLE_PACK="$v" ;;
|
||||
PS1_CONTEST_LAYOUT) export PS1_CONTEST_LAYOUT="$v" ;;
|
||||
PS1_HOLIDAY) export PS1_HOLIDAY="$v" ;;
|
||||
PS1_GIT) export PS1_GIT="$v" ;;
|
||||
esac
|
||||
done < "$cfg"
|
||||
fi
|
||||
@@ -133,6 +137,161 @@ _ps1_contest_layout() {
|
||||
echo "$layout"
|
||||
}
|
||||
|
||||
_ps1_holiday() {
|
||||
_ps1_style_config
|
||||
local holiday="${PS1_HOLIDAY:-christmas}"
|
||||
echo "$holiday"
|
||||
}
|
||||
|
||||
_ps1_git_enabled() {
|
||||
_ps1_style_config
|
||||
local v="${PS1_GIT:-0}"
|
||||
case "$v" in
|
||||
1|y|Y|yes|YES|true|TRUE|on|ON) echo "1" ;;
|
||||
*) echo "0" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
_ps1_git_line_tail() {
|
||||
if [[ "$(_ps1_git_enabled)" == "1" ]]; then
|
||||
export GIT_PS1_SHOWDIRTYSTATE=1
|
||||
export GIT_PS1_SHOWSTASHSTATE=1
|
||||
export GIT_PS1_SHOWUNTRACKEDFILES=1
|
||||
local info
|
||||
info="$(__git_capsule)"
|
||||
if [[ -n "$info" ]]; then
|
||||
printf "%s " "$info"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
printf " "
|
||||
}
|
||||
|
||||
_ps1_context_badge() {
|
||||
local parts=()
|
||||
if [[ -n "${SSH_CONNECTION:-}" ]]; then
|
||||
parts+=("ssh")
|
||||
fi
|
||||
if [[ -f /.dockerenv || -f /run/.containerenv ]]; then
|
||||
parts+=("ctr")
|
||||
fi
|
||||
if command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||
parts+=("git")
|
||||
fi
|
||||
if ((${#parts[@]} == 0)); then
|
||||
printf ""
|
||||
return
|
||||
fi
|
||||
printf "[%s] " "$(IFS=:; echo "${parts[*]}")"
|
||||
}
|
||||
|
||||
_ps1_glitch_glyph() {
|
||||
local glyphs=( "≣" "∿" "⌁" "⋯" "⋆" "≡" )
|
||||
local idx=$((10#$(date +%S) % ${#glyphs[@]}))
|
||||
printf "%s" "${glyphs[$idx]}"
|
||||
}
|
||||
|
||||
_ps1_path_topo() {
|
||||
local p="${__PS1_PATH}"
|
||||
local colors=(109 110 111 110)
|
||||
local out=""
|
||||
local idx=0
|
||||
local IFS='/'
|
||||
read -ra parts <<< "$p"
|
||||
for part in "${parts[@]}"; do
|
||||
if [[ -z "$part" ]]; then
|
||||
out+="/"
|
||||
continue
|
||||
fi
|
||||
local c="${colors[$((idx % ${#colors[@]}))]}"
|
||||
out+="\[\e[38;5;${c}m\]${part}\[\e[0m\]/"
|
||||
((idx++))
|
||||
done
|
||||
out="${out%/}"
|
||||
printf "%s" "$out"
|
||||
}
|
||||
|
||||
_ps1_demo_next() {
|
||||
local styles=(
|
||||
"aurora" "neon" "forge" "circuit" "mono" "git" "hawolex" "hawolexv2"
|
||||
"aurora" "aurora" "aurora" "aurora" "aurora" "aurora"
|
||||
"radar" "synthwave" "noir" "topo" "glitch" "arcticfire" "acidlime"
|
||||
)
|
||||
local packs=(
|
||||
"standard" "contest" "contest" "contest" "contest" "contest" "contest" "contest"
|
||||
"holiday" "holiday" "holiday" "holiday" "holiday" "holiday"
|
||||
"custom" "custom" "custom" "custom" "custom" "custom" "custom"
|
||||
)
|
||||
local holidays=(
|
||||
"" "" "" "" "" "" "" ""
|
||||
"christmas" "easter" "halloween" "valentine" "thanksgiving" "newyear"
|
||||
"" "" "" "" "" "" ""
|
||||
)
|
||||
local count=${#styles[@]}
|
||||
local idx="${PS1_DEMO_INDEX:--1}"
|
||||
idx=$(( (idx + 1) % count ))
|
||||
PS1_DEMO_INDEX="$idx"
|
||||
export PS1_DEMO_INDEX
|
||||
__PS1_DEMO_STYLE="${styles[$idx]}"
|
||||
__PS1_DEMO_PACK="${packs[$idx]}"
|
||||
__PS1_DEMO_HOLIDAY="${holidays[$idx]}"
|
||||
}
|
||||
|
||||
# ---- Load Git prompt helper (best effort) ----
|
||||
__try_source_git_prompt() {
|
||||
local candidates=(
|
||||
"/usr/share/git/completion/git-prompt.sh"
|
||||
"/usr/local/etc/bash_completion.d/git-prompt.sh"
|
||||
"/etc/bash_completion.d/git-prompt.sh"
|
||||
)
|
||||
for f in "${candidates[@]}"; do
|
||||
[[ -r "$f" ]] && source "$f" && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
__try_source_git_prompt >/dev/null 2>&1
|
||||
|
||||
__git_capsule() {
|
||||
local info status=""
|
||||
local clean="✨"
|
||||
local dirty="🔨"
|
||||
local staged="📌"
|
||||
local untracked="🧷"
|
||||
local stashed="📦"
|
||||
local has_ps1=0
|
||||
|
||||
if declare -F __git_ps1 >/dev/null 2>&1; then
|
||||
has_ps1=1
|
||||
info="$(__git_ps1 "%s" 2>/dev/null)"
|
||||
if [[ -z "$info" ]]; then
|
||||
has_ps1=0
|
||||
fi
|
||||
fi
|
||||
if [[ -z "$info" ]]; then
|
||||
if command -v git >/dev/null 2>&1; then
|
||||
info="$(git symbolic-ref --quiet --short HEAD 2>/dev/null || git rev-parse --short HEAD 2>/dev/null)"
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -z "$info" ]] && return 0
|
||||
|
||||
if (( has_ps1 )); then
|
||||
if [[ "$info" == *"*"* ]]; then status+=" $dirty"; fi
|
||||
if [[ "$info" == *"+"* ]]; then status+=" $staged"; fi
|
||||
if [[ "$info" == *"%"* ]]; then status+=" $untracked"; fi
|
||||
if [[ "$info" == *"$"* ]]; then status+=" $stashed"; fi
|
||||
if [[ -z "$status" ]]; then status=" $clean"; fi
|
||||
|
||||
info="${info//\%/}"
|
||||
info="${info//\*/}"
|
||||
info="${info//\+/}"
|
||||
info="${info//\$/}"
|
||||
fi
|
||||
|
||||
info="$(printf "%s" "$info" | xargs)"
|
||||
printf " ⟦%s⟧%s" "$info" "$status"
|
||||
}
|
||||
|
||||
# Time-based emoji with seasonal accents (Europe/Oslo)
|
||||
_ps1_pick_icon() {
|
||||
local list_name="$1"
|
||||
@@ -147,6 +306,13 @@ _ps1_pick_icon() {
|
||||
spring) offset=11 ;;
|
||||
summer) offset=23 ;;
|
||||
autumn) offset=37 ;;
|
||||
christmas) offset=61 ;;
|
||||
easter) offset=73 ;;
|
||||
halloween) offset=97 ;;
|
||||
valentine) offset=109 ;;
|
||||
thanksgiving) offset=131 ;;
|
||||
newyear) offset=151 ;;
|
||||
hawolex) offset=173 ;;
|
||||
*) offset=0 ;;
|
||||
esac
|
||||
|
||||
@@ -167,15 +333,60 @@ _ps1_symbol() {
|
||||
|
||||
local season="${__PS1_SEASON:-winter}"
|
||||
local pack="${__PS1_STYLE_PACK:-standard}"
|
||||
local holiday="${__PS1_HOLIDAY:-christmas}"
|
||||
local rot_season="${season}"
|
||||
local sunrise coffee work evening night
|
||||
local -a sunrise_list work_list
|
||||
|
||||
if [[ "$pack" == "contest" ]]; then
|
||||
if [[ "$__PS1_STYLE" == "hawolex" ]]; then
|
||||
rot_season="hawolex"
|
||||
sunrise_list=( "💻" "🚗" "🔊" "🎮" )
|
||||
work_list=( "🎧" "🕹️" "📟" "🧩" )
|
||||
coffee="☕"; evening="🌆"; night="🌙"
|
||||
elif [[ "$pack" == "contest" ]]; then
|
||||
rot_season="winter"
|
||||
sunrise_list=( "⚡️" "🛰️" "🧬" "🧠" )
|
||||
work_list=( "🛠️" "💾" "🧪" "🧩" )
|
||||
coffee="☕"; evening="🎛️"; night="🕶️"
|
||||
elif [[ "$pack" == "holiday" ]]; then
|
||||
rot_season="$holiday"
|
||||
case "$holiday" in
|
||||
christmas)
|
||||
sunrise_list=( "🎄" "🎅" "❄️" "⛄" )
|
||||
work_list=( "🎁" "🧤" "🧣" "🦌" )
|
||||
coffee="☕"; evening="🌟"; night="🕯️"
|
||||
;;
|
||||
easter)
|
||||
sunrise_list=( "🐣" "🥚" "🌷" "🌤" )
|
||||
work_list=( "🐰" "🌼" "🧺" "🍫" )
|
||||
coffee="☕"; evening="🌅"; night="🌙"
|
||||
;;
|
||||
halloween)
|
||||
sunrise_list=( "🎃" "🦇" "🌕" "🕸️" )
|
||||
work_list=( "👻" "💀" "🕯️" "🧪" )
|
||||
coffee="☕"; evening="🌆"; night="🕷️"
|
||||
;;
|
||||
valentine)
|
||||
sunrise_list=( "💖" "🌹" "💘" "💕" )
|
||||
work_list=( "💌" "🍫" "🕊️" "💗" )
|
||||
coffee="☕"; evening="🌆"; night="🌙"
|
||||
;;
|
||||
thanksgiving)
|
||||
sunrise_list=( "🦃" "🍁" "🥧" "🍂" )
|
||||
work_list=( "🍽️" "🌾" "🧺" "🥖" )
|
||||
coffee="☕"; evening="🌆"; night="🌙"
|
||||
;;
|
||||
newyear)
|
||||
sunrise_list=( "🎆" "🥂" "🎇" "✨" )
|
||||
work_list=( "🗓️" "⏳" "🚀" "✨" )
|
||||
coffee="☕"; evening="🌆"; night="🌙"
|
||||
;;
|
||||
*)
|
||||
sunrise_list=( "🎉" "✨" "🎊" "🌟" )
|
||||
work_list=( "🧩" "🛠️" "💾" "🧪" )
|
||||
coffee="☕"; evening="🌆"; night="🌙"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case "$season" in
|
||||
spring)
|
||||
@@ -238,52 +449,168 @@ __PS1_SEASON="winter"
|
||||
__PS1_STYLE="aurora"
|
||||
__PS1_STYLE_PACK="standard"
|
||||
__PS1_CONTEST_LAYOUT="day-time-user"
|
||||
__PS1_HOLIDAY="christmas"
|
||||
__PS1_GIT=0
|
||||
|
||||
_ps1_set_prompt() {
|
||||
local RST="\[\e[0m\]"
|
||||
|
||||
# Seasonal palettes (Z1 is darker than Z2)
|
||||
local Z1_BG Z1_FG Z2_BG Z2_FG PATH_FG FRAME
|
||||
local Z1_BG Z1_FG Z2_BG Z2_FG Z3_BG Z4_BG Z5_BG PATH_FG FRAME
|
||||
local Z1_BG_CODE Z2_BG_CODE Z3_BG_CODE Z4_BG_CODE Z5_BG_CODE
|
||||
if [[ "$__PS1_STYLE_PACK" == "contest" ]]; then
|
||||
Z1_BG="\[\e[48;5;24m\]"
|
||||
Z1_BG_CODE=24
|
||||
Z2_BG_CODE=31
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;31m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
PATH_FG="\[\e[38;5;51m\]"
|
||||
FRAME="\[\e[38;5;23m\]"
|
||||
elif [[ "$__PS1_STYLE_PACK" == "holiday" ]]; then
|
||||
case "$__PS1_HOLIDAY" in
|
||||
christmas)
|
||||
Z1_BG_CODE=52
|
||||
Z2_BG_CODE=28
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
PATH_FG="\[\e[38;5;194m\]"
|
||||
FRAME="\[\e[38;5;88m\]"
|
||||
;;
|
||||
easter)
|
||||
Z1_BG_CODE=186
|
||||
Z2_BG_CODE=150
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;16m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;16m\]"
|
||||
PATH_FG="\[\e[38;5;94m\]"
|
||||
FRAME="\[\e[38;5;143m\]"
|
||||
;;
|
||||
halloween)
|
||||
Z1_BG_CODE=53
|
||||
Z2_BG_CODE=166
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;16m\]"
|
||||
PATH_FG="\[\e[38;5;16m\]"
|
||||
FRAME="\[\e[38;5;89m\]"
|
||||
;;
|
||||
valentine)
|
||||
Z1_BG_CODE=198
|
||||
Z2_BG_CODE=205
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
PATH_FG="\[\e[38;5;224m\]"
|
||||
FRAME="\[\e[38;5;162m\]"
|
||||
;;
|
||||
thanksgiving)
|
||||
Z1_BG_CODE=94
|
||||
Z2_BG_CODE=136
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;230m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;231m\]"
|
||||
PATH_FG="\[\e[38;5;223m\]"
|
||||
FRAME="\[\e[38;5;130m\]"
|
||||
;;
|
||||
newyear)
|
||||
Z1_BG_CODE=17
|
||||
Z2_BG_CODE=20
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
PATH_FG="\[\e[38;5;229m\]"
|
||||
FRAME="\[\e[38;5;19m\]"
|
||||
;;
|
||||
*)
|
||||
Z1_BG_CODE=24
|
||||
Z2_BG_CODE=31
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
Z3_BG_CODE="${Z2_BG_CODE}"
|
||||
Z4_BG_CODE="${Z2_BG_CODE}"
|
||||
Z5_BG_CODE="${Z2_BG_CODE}"
|
||||
Z3_BG="\[\e[48;5;${Z3_BG_CODE}m\]"
|
||||
Z4_BG="\[\e[48;5;${Z4_BG_CODE}m\]"
|
||||
Z5_BG="\[\e[48;5;${Z5_BG_CODE}m\]"
|
||||
PATH_FG="\[\e[38;5;51m\]"
|
||||
FRAME="\[\e[38;5;23m\]"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case "$__PS1_SEASON" in
|
||||
spring)
|
||||
Z1_BG="\[\e[48;5;71m\]"
|
||||
Z1_BG_CODE=68
|
||||
Z2_BG_CODE=70
|
||||
Z3_BG_CODE=72
|
||||
Z4_BG_CODE=121
|
||||
Z5_BG_CODE=120
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;120m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;22m\]"
|
||||
PATH_FG="\[\e[38;5;22m\]"
|
||||
Z3_BG="\[\e[48;5;${Z3_BG_CODE}m\]"
|
||||
Z4_BG="\[\e[48;5;${Z4_BG_CODE}m\]"
|
||||
Z5_BG="\[\e[48;5;${Z5_BG_CODE}m\]"
|
||||
PATH_FG="\[\e[38;5;28m\]"
|
||||
FRAME="\[\e[38;5;65m\]"
|
||||
;;
|
||||
summer)
|
||||
Z1_BG="\[\e[48;5;142m\]"
|
||||
Z1_BG_CODE=141
|
||||
Z2_BG_CODE=142
|
||||
Z3_BG_CODE=143
|
||||
Z4_BG_CODE=214
|
||||
Z5_BG_CODE=208
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;214m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;0m\]"
|
||||
PATH_FG="\[\e[38;5;232m\]"
|
||||
Z3_BG="\[\e[48;5;${Z3_BG_CODE}m\]"
|
||||
Z4_BG="\[\e[48;5;${Z4_BG_CODE}m\]"
|
||||
Z5_BG="\[\e[48;5;${Z5_BG_CODE}m\]"
|
||||
PATH_FG="\[\e[38;5;0m\]"
|
||||
FRAME="\[\e[38;5;130m\]"
|
||||
;;
|
||||
autumn)
|
||||
Z1_BG="\[\e[48;5;95m\]"
|
||||
Z1_BG_CODE=93
|
||||
Z2_BG_CODE=95
|
||||
Z3_BG_CODE=97
|
||||
Z4_BG_CODE=166
|
||||
Z5_BG_CODE=136
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;173m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
Z3_BG="\[\e[48;5;${Z3_BG_CODE}m\]"
|
||||
Z4_BG="\[\e[48;5;${Z4_BG_CODE}m\]"
|
||||
Z5_BG="\[\e[48;5;${Z5_BG_CODE}m\]"
|
||||
PATH_FG="\[\e[38;5;223m\]"
|
||||
FRAME="\[\e[38;5;95m\]"
|
||||
;;
|
||||
*)
|
||||
# winter (default)
|
||||
Z1_BG="\[\e[48;5;61m\]"
|
||||
Z1_BG_CODE=59
|
||||
Z2_BG_CODE=61
|
||||
Z3_BG_CODE=63
|
||||
Z4_BG_CODE=38
|
||||
Z5_BG_CODE=37
|
||||
Z1_BG="\[\e[48;5;${Z1_BG_CODE}m\]"
|
||||
Z1_FG="\[\e[38;5;255m\]"
|
||||
Z2_BG="\[\e[48;5;37m\]"
|
||||
Z2_BG="\[\e[48;5;${Z2_BG_CODE}m\]"
|
||||
Z2_FG="\[\e[38;5;255m\]"
|
||||
PATH_FG="\[\e[38;5;194m\]"
|
||||
Z3_BG="\[\e[48;5;${Z3_BG_CODE}m\]"
|
||||
Z4_BG="\[\e[48;5;${Z4_BG_CODE}m\]"
|
||||
Z5_BG="\[\e[48;5;${Z5_BG_CODE}m\]"
|
||||
PATH_FG="\[\e[38;5;152m\]"
|
||||
FRAME="\[\e[38;5;60m\]"
|
||||
;;
|
||||
esac
|
||||
@@ -310,20 +637,27 @@ _ps1_set_prompt() {
|
||||
fi
|
||||
|
||||
local style="${__PS1_STYLE:-aurora}"
|
||||
local git_tail=""
|
||||
if [[ "$style" != "git" ]]; then
|
||||
git_tail="$(_ps1_git_line_tail)"
|
||||
fi
|
||||
local L1="\\d \\A \\u"
|
||||
local L_HOST="@\\h"
|
||||
local PREFIX=""
|
||||
local HOST_PART="${L_HOST}"
|
||||
local PATH_PART="${__PS1_PATH}"
|
||||
local PATH_SEP=" "
|
||||
if [[ "$__PS1_STYLE_PACK" == "contest" ]]; then
|
||||
local layout="${__PS1_CONTEST_LAYOUT:-day-time-user}"
|
||||
local END_PAD=" "
|
||||
local layout="${__PS1_CONTEST_LAYOUT:-day-time-user}"
|
||||
if [[ "$__PS1_STYLE_PACK" == "contest" || "$__PS1_STYLE_PACK" == "holiday" || "$__PS1_STYLE_PACK" == "standard" ]]; then
|
||||
case "$layout" in
|
||||
user-time) L1="\\u \\A" ;;
|
||||
time-user) L1="\\A \\u" ;;
|
||||
day-time) L1="\\d \\A" ;;
|
||||
*) L1="\\d \\A \\u" ;;
|
||||
esac
|
||||
fi
|
||||
if [[ "$__PS1_STYLE_PACK" == "contest" || "$__PS1_STYLE_PACK" == "holiday" ]]; then
|
||||
HOST_PART="@\\h - ${__PS1_PATH}"
|
||||
PATH_PART=""
|
||||
PATH_SEP=""
|
||||
@@ -332,30 +666,58 @@ _ps1_set_prompt() {
|
||||
|
||||
case "$style" in
|
||||
neon)
|
||||
local N1_BG="\[\e[48;5;201m\]"
|
||||
local N1_BG_CODE=201
|
||||
local N2_BG_CODE=45
|
||||
local N1_BG="\[\e[48;5;${N1_BG_CODE}m\]"
|
||||
local N1_FG="\[\e[38;5;255m\]"
|
||||
local N2_BG="\[\e[48;5;45m\]"
|
||||
local N2_BG="\[\e[48;5;${N2_BG_CODE}m\]"
|
||||
local N2_FG="\[\e[38;5;16m\]"
|
||||
local N_PATH_FG="\[\e[38;5;16m\]"
|
||||
local N_FRAME="\[\e[38;5;199m\]"
|
||||
local N_LEFT="${left}"
|
||||
local N_RIGHT="${right}"
|
||||
local N_SEP="${sep}"
|
||||
local N_LEFT_FG=""
|
||||
local N_RIGHT_FG=""
|
||||
if [[ "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
N_LEFT=""
|
||||
N_RIGHT=""
|
||||
N_SEP=""
|
||||
N_LEFT_FG="\[\e[38;5;${N1_BG_CODE}m\]"
|
||||
N_RIGHT_FG="\[\e[38;5;${N2_BG_CODE}m\]"
|
||||
fi
|
||||
PS1="\
|
||||
${PREFIX}${N_FRAME}╭─${RST}\
|
||||
${N1_BG}${N1_FG}${left} ${BOLD}\\u${NOBOLD} \\d \\A ${RST}${N1_BG}${N2_BG}${N2_FG}${sep}${RST}\
|
||||
${N2_BG}${N2_FG} ${HOST_PART}${PATH_SEP}${N_PATH_FG}${PATH_PART} ${RST}${N2_BG}${N2_FG}${right}${RST}\
|
||||
\n${N_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM} "
|
||||
${N_LEFT_FG}${N_LEFT}${RST}${N1_BG}${N1_FG} ${BOLD}\\u${NOBOLD} \\d \\A ${RST}${N1_BG}${N2_BG}${N2_FG}${N_SEP}${RST}\
|
||||
${N2_BG}${N2_FG} ${HOST_PART}${PATH_SEP}${N_PATH_FG}${PATH_PART}${END_PAD}${RST}${N_RIGHT_FG}${N_RIGHT}${RST}\
|
||||
\n${N_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
forge)
|
||||
local F1_BG="\[\e[48;5;94m\]"
|
||||
local F1_BG_CODE=94
|
||||
local F2_BG_CODE=166
|
||||
local F1_BG="\[\e[48;5;${F1_BG_CODE}m\]"
|
||||
local F1_FG="\[\e[38;5;230m\]"
|
||||
local F2_BG="\[\e[48;5;166m\]"
|
||||
local F2_BG="\[\e[48;5;${F2_BG_CODE}m\]"
|
||||
local F2_FG="\[\e[38;5;231m\]"
|
||||
local F_PATH_FG="\[\e[38;5;224m\]"
|
||||
local F_FRAME="\[\e[38;5;130m\]"
|
||||
local F_LEFT="${left}"
|
||||
local F_RIGHT="${right}"
|
||||
local F_SEP="${sep}"
|
||||
local F_LEFT_FG=""
|
||||
local F_RIGHT_FG=""
|
||||
if [[ "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
F_LEFT=""
|
||||
F_RIGHT=""
|
||||
F_SEP=""
|
||||
F_LEFT_FG="\[\e[38;5;${F1_BG_CODE}m\]"
|
||||
F_RIGHT_FG="\[\e[38;5;${F2_BG_CODE}m\]"
|
||||
fi
|
||||
PS1="\
|
||||
${PREFIX}${F_FRAME}╭─${RST}\
|
||||
${F1_BG}${F1_FG}${left} ${BOLD}${L1}${NOBOLD} ${RST}${F1_BG}${F2_BG}${F2_FG}${sep}${RST}\
|
||||
${F2_BG}${F2_FG} ${HOST_PART}${PATH_SEP}${F_PATH_FG}${PATH_PART} ${RST}${F2_BG}${F2_FG}${right}${RST}\
|
||||
\n${F_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM} "
|
||||
${F_LEFT_FG}${F_LEFT}${RST}${F1_BG}${F1_FG} ${BOLD}${L1}${NOBOLD} ${RST}${F1_BG}${F2_BG}${F2_FG}${F_SEP}${RST}\
|
||||
${F2_BG}${F2_FG} ${HOST_PART}${PATH_SEP}${F_PATH_FG}${PATH_PART}${END_PAD}${RST}${F_RIGHT_FG}${F_RIGHT}${RST}\
|
||||
\n${F_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
circuit)
|
||||
local C_FG="\[\e[38;5;46m\]"
|
||||
@@ -364,22 +726,240 @@ ${F2_BG}${F2_FG} ${HOST_PART}${PATH_SEP}${F_PATH_FG}${PATH_PART} ${RST}${F2_BG}$
|
||||
PS1="\
|
||||
${PREFIX}${C_DIM}┏━${RST}${C_FG}[${BOLD}\\u${NOBOLD} ${RST}${C_FG}\\A${RST}${C_DIM}]${RST}\
|
||||
${C_DIM}━${RST}${C_FG}${HOST_PART}${RST}${PATH_SEP}${C_PATH}${PATH_PART}${RST}\
|
||||
\n${C_DIM}┗━${RST}${prompt_sym} ${__PS1_SYM} "
|
||||
\n${C_DIM}┗━${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
mono)
|
||||
local M_FG="\[\e[38;5;250m\]"
|
||||
local M_DIM="\[\e[38;5;240m\]"
|
||||
PS1="\
|
||||
${PREFIX}${M_FG}⟦${L1}⟧ ${M_DIM}${HOST_PART}${PATH_SEP}${M_FG}${PATH_PART}${RST}\
|
||||
\n${M_DIM}└─${RST}${prompt_sym} ${__PS1_SYM} "
|
||||
\n${M_DIM}└─${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
git)
|
||||
export GIT_PS1_SHOWDIRTYSTATE=1
|
||||
export GIT_PS1_SHOWSTASHSTATE=1
|
||||
export GIT_PS1_SHOWUNTRACKEDFILES=1
|
||||
local G_FRAME="\[\e[38;5;60m\]"
|
||||
local G_Z1_BG="\[\e[48;5;61m\]"
|
||||
local G_Z1_FG="\[\e[38;5;255m\]"
|
||||
local G_Z2_BG="\[\e[48;5;37m\]"
|
||||
local G_Z2_FG="\[\e[38;5;255m\]"
|
||||
local G_PATH_FG="\[\e[38;5;194m\]"
|
||||
local GIT_INFO="$(__git_capsule)"
|
||||
local G_LEFT=""
|
||||
local G_RIGHT=""
|
||||
local G_SEP=""
|
||||
local G_END_PAD=" "
|
||||
local G_LEFT_FG="\[\e[38;5;61m\]"
|
||||
local G_RIGHT_FG="\[\e[38;5;37m\]"
|
||||
PS1="\
|
||||
${PREFIX}${G_FRAME}╭─${RST}\
|
||||
${G_LEFT_FG}${G_LEFT}${RST}${G_Z1_BG}${G_Z1_FG} ${L1} ${RST}${G_Z1_BG}${G_Z2_BG}${G_Z2_FG}${G_SEP}${RST}\
|
||||
${G_Z2_BG}${G_Z2_FG} ${HOST_PART}${PATH_SEP}${G_PATH_FG}${PATH_PART}${G_END_PAD}${RST}${G_RIGHT_FG}${G_RIGHT}${RST}\
|
||||
\n${G_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM} ${GIT_INFO} "
|
||||
;;
|
||||
hawolex)
|
||||
local H_FRAME="\[\e[38;5;24m\]"
|
||||
local H_Z1_BG="\[\e[48;5;54m\]"
|
||||
local H_Z1_FG="\[\e[38;5;255m\]"
|
||||
local H_Z2_BG="\[\e[48;5;31m\]"
|
||||
local H_Z2_FG="\[\e[38;5;255m\]"
|
||||
local H_PATH_FG="\[\e[38;5;230m\]"
|
||||
local H_LEFT=""
|
||||
local H_RIGHT=""
|
||||
local H_SEP=""
|
||||
local H_LEFT_FG="\[\e[38;5;54m\]"
|
||||
local H_RIGHT_FG="\[\e[38;5;31m\]"
|
||||
PS1="\
|
||||
${PREFIX}${H_FRAME}╭─${RST}\
|
||||
${H_LEFT_FG}${H_LEFT}${RST}${H_Z1_BG}${H_Z1_FG} ${L1} ${RST}${H_Z1_BG}${H_Z2_BG}${H_Z2_FG}${H_SEP}${RST}\
|
||||
${H_Z2_BG}${H_Z2_FG} ${HOST_PART}${PATH_SEP}${H_PATH_FG}${PATH_PART}${END_PAD}${RST}${H_RIGHT_FG}${H_RIGHT}${RST}\
|
||||
\n${H_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
hawolexv2)
|
||||
local HV2_FRAME="\[\e[38;5;24m\]"
|
||||
local HV2_1_BG="\[\e[48;5;54m\]"
|
||||
local HV2_1_FG="\[\e[38;5;255m\]"
|
||||
local HV2_2_BG="\[\e[48;5;55m\]"
|
||||
local HV2_2_FG="\[\e[38;5;255m\]"
|
||||
local HV2_3_BG="\[\e[48;5;56m\]"
|
||||
local HV2_3_FG="\[\e[38;5;255m\]"
|
||||
local HV2_4_BG="\[\e[48;5;31m\]"
|
||||
local HV2_4_FG="\[\e[38;5;255m\]"
|
||||
local HV2_5_BG="\[\e[48;5;30m\]"
|
||||
local HV2_PATH_FG="\[\e[38;5;230m\]"
|
||||
local HV2_LEFT="${left}"
|
||||
local HV2_RIGHT="${right}"
|
||||
local HV2_SEP="${sep}"
|
||||
local HV2_LEFT_FG=""
|
||||
local HV2_RIGHT_FG=""
|
||||
if [[ "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
HV2_LEFT=""
|
||||
HV2_RIGHT=""
|
||||
HV2_SEP=""
|
||||
HV2_LEFT_FG="\[\e[38;5;54m\]"
|
||||
HV2_RIGHT_FG="\[\e[38;5;30m\]"
|
||||
fi
|
||||
local HV2_SEP12="\[\e[38;5;55m\]\[\e[48;5;54m\]${HV2_SEP}${RST}"
|
||||
local HV2_SEP23="\[\e[38;5;56m\]\[\e[48;5;55m\]${HV2_SEP}${RST}"
|
||||
local HV2_SEP34="\[\e[38;5;31m\]\[\e[48;5;56m\]${HV2_SEP}${RST}"
|
||||
local HV2_SEP45="\[\e[38;5;30m\]\[\e[48;5;31m\]${HV2_SEP}${RST}"
|
||||
local HV2_P1="" HV2_P2="" HV2_P3=""
|
||||
local HV2_LAYOUT="${__PS1_CONTEST_LAYOUT:-day-time-user}"
|
||||
if [[ "$__PS1_STYLE_PACK" == "contest" || "$__PS1_STYLE_PACK" == "holiday" ]]; then
|
||||
case "$HV2_LAYOUT" in
|
||||
user-time) HV2_P1="\\u"; HV2_P2="\\A" ;;
|
||||
time-user) HV2_P1="\\A"; HV2_P2="\\u" ;;
|
||||
day-time) HV2_P1="\\d"; HV2_P2="\\A" ;;
|
||||
*) HV2_P1="\\d"; HV2_P2="\\A"; HV2_P3="\\u" ;;
|
||||
esac
|
||||
else
|
||||
HV2_P1="\\d"; HV2_P2="\\A"; HV2_P3="\\u"
|
||||
fi
|
||||
local HV2_HOST="@\\h"
|
||||
local HV2_PATH_PREFIX=""
|
||||
if [[ "$__PS1_STYLE_PACK" == "contest" || "$__PS1_STYLE_PACK" == "holiday" ]]; then
|
||||
HV2_PATH_PREFIX="- "
|
||||
fi
|
||||
if [[ -n "$HV2_P3" ]]; then
|
||||
PS1="\
|
||||
${PREFIX}${HV2_FRAME}╭─${RST}\
|
||||
${HV2_LEFT_FG}${HV2_LEFT}${RST}${HV2_1_BG}${HV2_1_FG} ${HV2_P1} ${RST}${HV2_SEP12}${HV2_2_BG}${HV2_2_FG} ${HV2_P2} ${RST}${HV2_SEP23}${HV2_3_BG}${HV2_3_FG} ${HV2_P3} ${RST}${HV2_SEP34}${HV2_4_BG}${HV2_4_FG} ${HV2_HOST} ${RST}${HV2_SEP45}${HV2_5_BG}${HV2_PATH_FG} ${HV2_PATH_PREFIX}${__PS1_PATH}${END_PAD}${RST}${HV2_RIGHT_FG}${HV2_RIGHT}${RST}\
|
||||
\n${HV2_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
else
|
||||
PS1="\
|
||||
${PREFIX}${HV2_FRAME}╭─${RST}\
|
||||
${HV2_LEFT_FG}${HV2_LEFT}${RST}${HV2_1_BG}${HV2_1_FG} ${HV2_P1} ${RST}${HV2_SEP12}${HV2_2_BG}${HV2_2_FG} ${HV2_P2} ${RST}${HV2_SEP23}${HV2_3_BG}${HV2_3_FG} ${HV2_HOST} ${RST}${HV2_SEP34}${HV2_4_BG}${HV2_4_FG} ${HV2_PATH_PREFIX}${__PS1_PATH}${END_PAD}${RST}${HV2_RIGHT_FG}${HV2_RIGHT}${RST}\
|
||||
\n${HV2_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
fi
|
||||
;;
|
||||
radar)
|
||||
local R_FRAME="\[\e[38;5;22m\]"
|
||||
local R_MAIN="\[\e[38;5;46m\]"
|
||||
local R_DIM="\[\e[38;5;28m\]"
|
||||
local R_PATH="\[\e[38;5;120m\]"
|
||||
PS1="\
|
||||
${R_FRAME}╭─${RST}${R_MAIN}⟦\\u \\A⟧ ${R_DIM}@\\h ${R_PATH}${__PS1_PATH}${RST}\
|
||||
\n${R_FRAME}╰─${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
synthwave)
|
||||
local SW_FRAME="\[\e[38;5;201m\]"
|
||||
local SW1_BG="\[\e[48;5;198m\]"
|
||||
local SW1_FG="\[\e[38;5;255m\]"
|
||||
local SW2_BG="\[\e[48;5;45m\]"
|
||||
local SW2_FG="\[\e[38;5;16m\]"
|
||||
local SW3_BG="\[\e[48;5;208m\]"
|
||||
local SW3_FG="\[\e[38;5;16m\]"
|
||||
local SW_LEFT="${left}"
|
||||
local SW_RIGHT="${right}"
|
||||
local SW_SEP="${sep}"
|
||||
local SW_LEFT_FG=""
|
||||
local SW_RIGHT_FG=""
|
||||
if [[ "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
SW_LEFT=""
|
||||
SW_RIGHT=""
|
||||
SW_SEP=""
|
||||
SW_LEFT_FG="\[\e[38;5;198m\]"
|
||||
SW_RIGHT_FG="\[\e[38;5;208m\]"
|
||||
fi
|
||||
local SW_SEP12="\[\e[38;5;45m\]\[\e[48;5;198m\]${SW_SEP}${RST}"
|
||||
local SW_SEP23="\[\e[38;5;208m\]\[\e[48;5;45m\]${SW_SEP}${RST}"
|
||||
PS1="\
|
||||
${SW_FRAME}╭─${RST}\
|
||||
${SW_LEFT_FG}${SW_LEFT}${RST}${SW1_BG}${SW1_FG} ${L1} ${RST}${SW_SEP12}${SW2_BG}${SW2_FG} ${L_HOST} ${RST}${SW_SEP23}${SW3_BG}${SW3_FG} ${__PS1_PATH}${END_PAD}${RST}${SW_RIGHT_FG}${SW_RIGHT}${RST}\
|
||||
\n${SW_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
noir)
|
||||
local N_FRAME="\[\e[38;5;236m\]"
|
||||
local N_MAIN="\[\e[38;5;250m\]"
|
||||
local N_DIM="\[\e[38;5;242m\]"
|
||||
local N_PATH="\[\e[38;5;160m\]"
|
||||
PS1="\
|
||||
${N_FRAME}╭─${RST}${N_MAIN}${L1}${RST} ${N_DIM}${L_HOST}${RST} ${N_PATH}${__PS1_PATH}${RST}\
|
||||
\n${N_FRAME}╰─${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
topo)
|
||||
local T_FRAME="\[\e[38;5;24m\]"
|
||||
local T_MAIN="\[\e[38;5;248m\]"
|
||||
PS1="\
|
||||
${T_FRAME}╭─${RST}${T_MAIN}${L1}${RST} ${T_FRAME}${L_HOST}${RST} $(_ps1_path_topo)${END_PAD}${RST}\
|
||||
\n${T_FRAME}╰─${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
glitch)
|
||||
local G_FRAME="\[\e[38;5;129m\]"
|
||||
local G_MAIN="\[\e[38;5;118m\]"
|
||||
local G_DIM="\[\e[38;5;60m\]"
|
||||
local G_SEP="$(_ps1_glitch_glyph)"
|
||||
PS1="\
|
||||
${G_FRAME}╭─${RST}${G_MAIN}${L1}${RST} ${G_DIM}${G_SEP}${RST} ${G_MAIN}${L_HOST} ${RST}${G_DIM}${G_SEP}${RST} ${G_MAIN}${__PS1_PATH}${RST}\
|
||||
\n${G_FRAME}╰─${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
arcticfire)
|
||||
local AF_FRAME="\[\e[38;5;25m\]"
|
||||
local AF1_BG="\[\e[48;5;24m\]"
|
||||
local AF1_FG="\[\e[38;5;255m\]"
|
||||
local AF2_BG="\[\e[48;5;31m\]"
|
||||
local AF2_FG="\[\e[38;5;255m\]"
|
||||
local AF3_BG="\[\e[48;5;208m\]"
|
||||
local AF3_FG="\[\e[38;5;16m\]"
|
||||
local AF_LEFT="${left}"
|
||||
local AF_RIGHT="${right}"
|
||||
local AF_SEP="${sep}"
|
||||
local AF_LEFT_FG=""
|
||||
local AF_RIGHT_FG=""
|
||||
if [[ "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
AF_LEFT=""
|
||||
AF_RIGHT=""
|
||||
AF_SEP=""
|
||||
AF_LEFT_FG="\[\e[38;5;24m\]"
|
||||
AF_RIGHT_FG="\[\e[38;5;208m\]"
|
||||
fi
|
||||
local AF_SEP12="\[\e[38;5;31m\]\[\e[48;5;24m\]${AF_SEP}${RST}"
|
||||
local AF_SEP23="\[\e[38;5;208m\]\[\e[48;5;31m\]${AF_SEP}${RST}"
|
||||
PS1="\
|
||||
${AF_FRAME}╭─${RST}\
|
||||
${AF_LEFT_FG}${AF_LEFT}${RST}${AF1_BG}${AF1_FG} ${L1} ${RST}${AF_SEP12}${AF2_BG}${AF2_FG} ${L_HOST} ${RST}${AF_SEP23}${AF3_BG}${AF3_FG} ${__PS1_PATH}${END_PAD}${RST}${AF_RIGHT_FG}${AF_RIGHT}${RST}\
|
||||
\n${AF_FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
acidlime)
|
||||
local AL_FRAME="\[\e[38;5;46m\]"
|
||||
local AL_MAIN="\[\e[38;5;46m\]"
|
||||
local AL_DIM="\[\e[38;5;40m\]"
|
||||
local AL_PATH="\[\e[38;5;118m\]"
|
||||
PS1="\
|
||||
${AL_FRAME}╭─${RST}${AL_MAIN}${L1}${RST} ${AL_DIM}${L_HOST}${RST} ${AL_PATH}${__PS1_PATH}${RST}\
|
||||
\n${AL_FRAME}╰─${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
;;
|
||||
*)
|
||||
# aurora (default)
|
||||
PS1="\
|
||||
local A_LEFT="${left}"
|
||||
local A_RIGHT="${right}"
|
||||
local A_SEP="${sep}"
|
||||
local A_LEFT_FG=""
|
||||
local A_RIGHT_FG=""
|
||||
if [[ "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
A_LEFT=""
|
||||
A_RIGHT=""
|
||||
A_SEP=""
|
||||
A_LEFT_FG="\[\e[38;5;${Z1_BG_CODE}m\]"
|
||||
A_RIGHT_FG="\[\e[38;5;${Z5_BG_CODE:-$Z2_BG_CODE}m\]"
|
||||
fi
|
||||
if [[ "$__PS1_STYLE_PACK" == "standard" && "$__PS1_USE_NF" -eq 1 ]]; then
|
||||
local SEP12="\[\e[38;5;${Z2_BG_CODE}m\]\[\e[48;5;${Z1_BG_CODE}m\]${A_SEP}${RST}"
|
||||
local SEP23="\[\e[38;5;${Z3_BG_CODE}m\]\[\e[48;5;${Z2_BG_CODE}m\]${A_SEP}${RST}"
|
||||
local SEP34="\[\e[38;5;${Z4_BG_CODE}m\]\[\e[48;5;${Z3_BG_CODE}m\]${A_SEP}${RST}"
|
||||
local SEP45="\[\e[38;5;${Z5_BG_CODE}m\]\[\e[48;5;${Z4_BG_CODE}m\]${A_SEP}${RST}"
|
||||
PS1="\
|
||||
${PREFIX}${FRAME}╭─${RST}\
|
||||
${Z1_BG}${Z1_FG}${left} ${L1} ${RST}${Z1_BG}${Z2_BG}${Z2_FG}${sep}${RST}\
|
||||
${Z2_BG}${Z2_FG} ${HOST_PART}${PATH_SEP}${PATH_FG}${PATH_PART} ${RST}${Z2_BG}${Z2_FG}${right}${RST}\
|
||||
\n${FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM} "
|
||||
${A_LEFT_FG}${A_LEFT}${RST}${Z1_BG}${Z1_FG} \\d ${RST}${SEP12}${Z2_BG}${Z1_FG} \\A ${RST}${SEP23}${Z3_BG}${Z1_FG} \\u ${RST}${SEP34}${Z4_BG}${Z2_FG} ${L_HOST} ${RST}${SEP45}${Z5_BG}${PATH_FG} ${__PS1_PATH}${END_PAD}${RST}${A_RIGHT_FG}${A_RIGHT}${RST}\
|
||||
\n${FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
else
|
||||
PS1="\
|
||||
${PREFIX}${FRAME}╭─${RST}\
|
||||
${A_LEFT_FG}${A_LEFT}${RST}${Z1_BG}${Z1_FG} ${L1} ${RST}${Z1_BG}${Z2_BG}${Z2_FG}${A_SEP}${RST}\
|
||||
${Z2_BG}${Z2_FG} ${HOST_PART}${PATH_SEP}${PATH_FG}${PATH_PART}${END_PAD}${RST}${A_RIGHT_FG}${A_RIGHT}${RST}\
|
||||
\n${FRAME}╰── ${RST}${prompt_sym} ${__PS1_SYM}${git_tail}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -389,7 +969,17 @@ _ps1_update() {
|
||||
__PS1_SEASON="$(_ps1_season)"
|
||||
__PS1_STYLE_PACK="$(_ps1_style_pack)"
|
||||
__PS1_CONTEST_LAYOUT="$(_ps1_contest_layout)"
|
||||
__PS1_HOLIDAY="$(_ps1_holiday)"
|
||||
__PS1_STYLE="$(_ps1_style)"
|
||||
__PS1_GIT="${PS1_GIT:-0}"
|
||||
if [[ "$__PS1_STYLE" == "demo" ]]; then
|
||||
_ps1_demo_next
|
||||
__PS1_STYLE="$__PS1_DEMO_STYLE"
|
||||
__PS1_STYLE_PACK="$__PS1_DEMO_PACK"
|
||||
if [[ "$__PS1_STYLE_PACK" == "holiday" && -n "$__PS1_DEMO_HOLIDAY" ]]; then
|
||||
__PS1_HOLIDAY="$__PS1_DEMO_HOLIDAY"
|
||||
fi
|
||||
fi
|
||||
__PS1_SYM="$(_ps1_symbol)"
|
||||
__PS1_PATH="$(_ps1_path)"
|
||||
if _ps1_has_nf; then __PS1_USE_NF=1; else __PS1_USE_NF=0; fi
|
||||
|
||||
BIN
images/bash-pallete.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
images/themes/acidlime.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
images/themes/arcticfire.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
images/themes/aurora.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
images/themes/christmas.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
images/themes/circuit.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
images/themes/easter.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
images/themes/forge.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
images/themes/git.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
images/themes/glitch.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
images/themes/halloween.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
images/themes/hawolex.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
images/themes/hawolexv2.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
images/themes/mono.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
images/themes/neon.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
images/themes/newyear.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
images/themes/noir.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
images/themes/radar.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
images/themes/season-autumn.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
images/themes/season-spring.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
images/themes/season-summer.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
images/themes/season-winter.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
images/themes/synthwave.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
images/themes/thanksgiving.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
images/themes/topo.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
images/themes/valentine.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
468
libary.md
Normal file
@@ -0,0 +1,468 @@
|
||||
# Theme Library
|
||||
|
||||
This file lists every prompt theme, color codes, design intent, and configuration options.
|
||||
|
||||
## Git Capsule (optional, all themes)
|
||||
|
||||
What it is: a compact git status block shown on line 2 when you're inside a git repo.
|
||||
It uses `__git_ps1` when available, with a safe fallback to `git rev-parse` for the branch.
|
||||
|
||||
States + emojis (plain language):
|
||||
- Clean repo: ✨ no local changes; your files match the last commit
|
||||
- Dirty working tree: 🔨 you edited tracked files but haven’t staged them yet
|
||||
- Staged changes: 📌 changes are staged and ready to commit
|
||||
- Untracked files: 🧷 new files git hasn’t started tracking
|
||||
- Stashed changes: 📦 work saved with `git stash` (not in your working tree)
|
||||
|
||||
How it works:
|
||||
- The capsule only renders when a repo is detected (no extra noise outside git).
|
||||
- If `__git_ps1` is available, it reads git state flags and maps them to emojis.
|
||||
- If not, it falls back to the current branch/short SHA (still useful, but fewer states).
|
||||
|
||||
Best practices:
|
||||
- Keep the capsule on during active work; it surfaces risk at a glance.
|
||||
- If you want faster prompts in very large repos, leave untracked detection off.
|
||||
- Use the Git theme for a minimal, work-safe look with the capsule always enabled.
|
||||
|
||||
## Seasonal (Aurora, Standard Pack)
|
||||
|
||||
Design intent: calm, readable, long-session comfort with a subtle five-step gradient
|
||||
(date -> time -> user -> host -> path).
|
||||
|
||||
Layout: two-line powerline, host+path on line 1, status + emoji on line 2.
|
||||
|
||||
Winter:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🏔️ 🌨️ ❄️ 🌌; work 🎿 ⛷️ 🏂 🧊; coffee ☕; evening 🌆; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=59 Z2_BG=61 Z3_BG=63 Z4_BG=38 Z5_BG=37
|
||||
Z1_FG=255 Z2_FG=255
|
||||
PATH_FG=152
|
||||
FRAME=60
|
||||
```
|
||||
|
||||
Spring:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🌷 🌱 🐣 🌤; work 🌿 🪴 🐝 🌼; coffee ☕; evening 🌤; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=68 Z2_BG=70 Z3_BG=72 Z4_BG=121 Z5_BG=120
|
||||
Z1_FG=255 Z2_FG=22
|
||||
PATH_FG=28
|
||||
FRAME=65
|
||||
```
|
||||
|
||||
Summer:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🌞 🏖️ 🌅 🌤; work 🏄 🏖️ 🚤 🌴; coffee 🧃; evening 🌇; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=141 Z2_BG=142 Z3_BG=143 Z4_BG=214 Z5_BG=208
|
||||
Z1_FG=255 Z2_FG=0
|
||||
PATH_FG=0
|
||||
FRAME=130
|
||||
```
|
||||
|
||||
Autumn:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🍁 🍂 🌫️ 🌦️; work 🍂 🍄 🎃 🪵; coffee ☕; evening 🌆; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=93 Z2_BG=95 Z3_BG=97 Z4_BG=166 Z5_BG=136
|
||||
Z1_FG=255 Z2_FG=255
|
||||
PATH_FG=223
|
||||
FRAME=95
|
||||
```
|
||||
|
||||
## Contest Pack (style_pack=contest)
|
||||
|
||||
Design intent: high-contrast silhouettes, fast scanning, stage-ready presence.
|
||||
|
||||
Layout: configurable order for the left segment, always ends with "@host - /path".
|
||||
|
||||
Aurora (contest palette):
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=24 Z2_BG=31
|
||||
Z1_FG=255 Z2_FG=255
|
||||
PATH_FG=51
|
||||
FRAME=23
|
||||
```
|
||||
|
||||
Neon:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=201 Z1_FG=255
|
||||
Z2_BG=45 Z2_FG=16
|
||||
PATH_FG=16
|
||||
FRAME=199
|
||||
```
|
||||
|
||||
Forge:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=94 Z1_FG=230
|
||||
Z2_BG=166 Z2_FG=231
|
||||
PATH_FG=224
|
||||
FRAME=130
|
||||
```
|
||||
|
||||
Circuit:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
FG_MAIN=46
|
||||
FG_DIM=22
|
||||
PATH_FG=120
|
||||
```
|
||||
|
||||
Mono:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
FG_MAIN=250
|
||||
FG_DIM=240
|
||||
```
|
||||
|
||||
Git:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=61 Z1_FG=255
|
||||
Z2_BG=37 Z2_FG=255
|
||||
PATH_FG=194
|
||||
FRAME=60
|
||||
```
|
||||
|
||||
Hawolex:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 💻 🚗 🔊 🎮; work 🎧 🕹️ 📟 🧩; coffee ☕; evening 🌆; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=54 Z1_FG=255
|
||||
Z2_BG=31 Z2_FG=255
|
||||
PATH_FG=230
|
||||
FRAME=24
|
||||
```
|
||||
|
||||
HawolexV2 (gradient):
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=54 Z2_BG=55 Z3_BG=56 Z4_BG=31 Z5_BG=30
|
||||
Z_FG=255
|
||||
PATH_FG=230
|
||||
FRAME=24
|
||||
```
|
||||
|
||||
Demo:
|
||||
```
|
||||
Cycles all themes on each prompt (screenshots mode).
|
||||
```
|
||||
|
||||
## Holidays Pack (style_pack=holiday)
|
||||
|
||||
Design intent: themed color + emoji without sacrificing readability.
|
||||
Layout uses contest order and ends with "@host - /path".
|
||||
|
||||
Christmas:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🎄 🎅 ❄️ ⛄; work 🎁 🧤 🧣 🦌; coffee ☕; evening 🌟; night 🕯️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=52 Z2_BG=28
|
||||
Z1_FG=255 Z2_FG=255
|
||||
PATH_FG=194
|
||||
FRAME=88
|
||||
```
|
||||
|
||||
Easter:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🐣 🥚 🌷 🌤; work 🐰 🌼 🧺 🍫; coffee ☕; evening 🌅; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=186 Z2_BG=150
|
||||
Z1_FG=16 Z2_FG=16
|
||||
PATH_FG=94
|
||||
FRAME=143
|
||||
```
|
||||
|
||||
Halloween:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🎃 🦇 🌕 🕸️; work 👻 💀 🕯️ 🧪; coffee ☕; evening 🌆; night 🕷️
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=53 Z2_BG=166
|
||||
Z1_FG=255 Z2_FG=16
|
||||
PATH_FG=16
|
||||
FRAME=89
|
||||
```
|
||||
|
||||
Valentine:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 💖 🌹 💘 💕; work 💌 🍫 🕊️ 💗; coffee ☕; evening 🌆; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=198 Z2_BG=205
|
||||
Z1_FG=255 Z2_FG=255
|
||||
PATH_FG=224
|
||||
FRAME=162
|
||||
```
|
||||
|
||||
Thanksgiving:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🦃 🍁 🥧 🍂; work 🍽️ 🌾 🧺 🥖; coffee ☕; evening 🌆; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=94 Z2_BG=136
|
||||
Z1_FG=230 Z2_FG=231
|
||||
PATH_FG=223
|
||||
FRAME=130
|
||||
```
|
||||
|
||||
NewYear:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: sunrise 🎆 🥂 🎇 ✨; work 🗓️ ⏳ 🚀 ✨; coffee ☕; evening 🌆; night 🌙
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=17 Z2_BG=20
|
||||
Z1_FG=255 Z2_FG=255
|
||||
PATH_FG=229
|
||||
FRAME=19
|
||||
```
|
||||
|
||||
## Custom Pack (style_pack=custom)
|
||||
|
||||
Design intent: experimental, high-signal styles with bold contrast and distinct silhouettes.
|
||||
Custom styles include a context badge when relevant (ssh, ctr, git).
|
||||
|
||||
Radar:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
FRAME=22
|
||||
FG_MAIN=46
|
||||
FG_DIM=28
|
||||
PATH_FG=120
|
||||
```
|
||||
|
||||
Synthwave:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=198 Z1_FG=255
|
||||
Z2_BG=45 Z2_FG=16
|
||||
Z3_BG=208 Z3_FG=16
|
||||
FRAME=201
|
||||
```
|
||||
|
||||
Noir:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
FG_MAIN=250
|
||||
FG_DIM=242
|
||||
PATH_FG=160
|
||||
FRAME=236
|
||||
```
|
||||
|
||||
Topo:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
PATH_FG_LIST=109,110,111,110
|
||||
FRAME=24
|
||||
```
|
||||
|
||||
Glitch:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
FG_MAIN=118
|
||||
FG_DIM=60
|
||||
FRAME=129
|
||||
```
|
||||
|
||||
ArcticFire:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
Z1_BG=24 Z1_FG=255
|
||||
Z2_BG=31 Z2_FG=255
|
||||
Z3_BG=208 Z3_FG=16
|
||||
FRAME=25
|
||||
```
|
||||
|
||||
AcidLime:
|
||||
|
||||

|
||||
|
||||
Emoji:
|
||||
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
|
||||
- Fixed times: 🥪 11:00–11:29, 🍲 16:00–16:59
|
||||
- Interval: time slots (Sunrise 05:00–08:59, Coffee 09:00–10:59, Work 11:30–15:59, Evening 17:00–22:59, Night 23:00–04:59), daily rotation
|
||||
|
||||
```
|
||||
FG_MAIN=46
|
||||
FG_DIM=40
|
||||
PATH_FG=118
|
||||
FRAME=46
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
||||
Core:
|
||||
```
|
||||
PS1_STYLE_PACK=standard|contest|holiday|custom
|
||||
PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime
|
||||
PS1_SEASON_MODE=dynamic|static
|
||||
PS1_SEASON=winter|spring|summer|autumn
|
||||
PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time
|
||||
PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear
|
||||
PS1_GIT=0|1
|
||||
```
|
||||
|
||||
Overrides:
|
||||
```
|
||||
PS1_FORCE_NF=1 # force Nerd Font separators
|
||||
PS1_FORCE_ASCII=1 # force ASCII/Unicode separators
|
||||
DISABLE_GLOBAL_PS1=1 # disable prompt in current shell
|
||||
~/.config/ps1/disable # disable prompt per-user
|
||||
```
|
||||