Compare commits

..

21 Commits

Author SHA1 Message Date
d1ee693044 Ignore local SSH notes 2026-01-24 21:23:44 +00:00
3fb8b9697a Clarify git capsule state meanings 2026-01-24 20:44:31 +00:00
12fc686de1 Document git capsule in library 2026-01-24 20:40:29 +00:00
16a7d8dad9 . 2026-01-24 20:13:06 +00:00
8079b90e0c . 2026-01-24 19:57:11 +00:00
d944ed83e6 Document emoji usage per theme 2026-01-24 19:43:32 +00:00
4347690b4a Add installer menu structure 2026-01-24 19:34:34 +00:00
af0df324da Remove demo note from library 2026-01-24 19:30:07 +00:00
a7c88d772e Remove demo references and add theme gallery 2026-01-24 19:26:21 +00:00
dbe1843415 Tidy library spacing 2026-01-24 19:16:29 +00:00
3a970dde82 Reorder library to name-image-palette 2026-01-24 19:13:25 +00:00
ecf0ec07bd Place seasonal previews under each season 2026-01-24 19:08:15 +00:00
ee8e3dcafb Add seasonal and HawolexV2 screenshots 2026-01-24 19:05:31 +00:00
55909294b1 Fix library image links 2026-01-24 18:58:14 +00:00
bbc4281d50 Add theme screenshots and update library 2026-01-24 18:51:28 +00:00
8c68ce28f7 Fix demo rotation and move demo to top 2026-01-24 18:27:03 +00:00
761a1ae38a Add demo mode to cycle all themes 2026-01-24 18:20:27 +00:00
98ae44cc3b Add layout order selection for seasonal prompts 2026-01-24 16:15:28 +00:00
9774c15d34 Add theme library and fix HawolexV2 layout 2026-01-24 16:10:06 +00:00
a6b588ad8a Add HawolexV2 gradient style 2026-01-24 15:57:58 +00:00
77cbefe2a2 Polish README and update state JSONs 2026-01-24 15:51:38 +00:00
33 changed files with 781 additions and 79 deletions

View File

@@ -10,14 +10,9 @@
"main": { "main": {
"notes": [ "notes": [
"Shared PS1 module in dotfiles/ps1/ps1.sh is source of truth for both Linux and macOS installers.", "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." "README example image uses images/bash-pallete.png."
] ]
},
"dev": {
"notes": [
"Development branch; currently in sync with main."
]
} }
}, },
"files": { "files": {
@@ -26,7 +21,36 @@
"macos_installer": "dotfiles/install/install-macos-user.sh", "macos_installer": "dotfiles/install/install-macos-user.sh",
"global_installer_wrapper": "dotfiles/install/install-global-ps1.sh", "global_installer_wrapper": "dotfiles/install/install-global-ps1.sh",
"readme": "README.md", "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": { "install_behavior": {
"linux": { "linux": {
@@ -41,7 +65,7 @@
"PS1 only / Banner only / Both", "PS1 only / Banner only / Both",
"PS1 mode: Single season / Dynamic / Contest / Holidays / Custom (if PS1 selected)", "PS1 mode: Single season / Dynamic / Contest / Holidays / Custom (if PS1 selected)",
"Season pick (if single season)", "Season pick (if single season)",
"Contest layout selection (if contest/holidays)", "Layout order selection (seasonal/contest/holidays)",
"Style preset selection (if contest)", "Style preset selection (if contest)",
"Holiday selection (if holidays)", "Holiday selection (if holidays)",
"Custom style selection (if custom)", "Custom style selection (if custom)",
@@ -64,7 +88,7 @@
"prompts": [ "prompts": [
"PS1 mode: Single season / Dynamic / Contest / Holidays / Custom", "PS1 mode: Single season / Dynamic / Contest / Holidays / Custom",
"Season pick (if single season)", "Season pick (if single season)",
"Contest layout selection (if contest/holidays)", "Layout order selection (seasonal/contest/holidays)",
"Style preset selection (if contest)", "Style preset selection (if contest)",
"Holiday selection (if holidays)", "Holiday selection (if holidays)",
"Custom style selection (if custom)", "Custom style selection (if custom)",
@@ -193,6 +217,13 @@
"layout": "two-line, contest layout", "layout": "two-line, contest layout",
"preview": "[date time user] @host - /path" "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": "radar", "id": "radar",
"name": "Radar", "name": "Radar",
@@ -244,7 +275,7 @@
} }
], ],
"config": { "config": {
"env": "PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|radar|synthwave|noir|topo|glitch|arcticfire|acidlime; 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", "env": "PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime; 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": [ "config_file_keys": [
"PS1_STYLE", "PS1_STYLE",
"PS1_STYLE_PACK", "PS1_STYLE_PACK",
@@ -500,6 +531,7 @@
"README uses images/bash-pallete.png.", "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.", "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).", "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)." "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)."
] ]
} }

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.sshinfo.txt

168
README.md
View File

@@ -1,15 +1,30 @@
# Bashrc Dotfiles — Global & Portable Bash Prompt # Bashrc Dotfiles — Global & Portable Bash Prompt
Production-ready on `main`. Elegant, portable, and easy-to-install Bash prompt with seasonal palettes, time-aware emoji, and clean powerline structure.
Elegant, portable, and easy-to-install Bash prompt with: ---
- ✨ Two color zones ## ⚡ Quick Look
- 🌅 Time-based emoji accents
- 🖥️ Fallback when Nerd Fonts arent available - Theme gallery + full specs: [Theme Library](libary.md)
- 📍 Shortened but informative path - Packs: Seasonal (auto), Contest, Holidays, Custom, Git
- 🔘 Status-colored prompt arrow - Layout order option: day-time-user, user-time, time-user, day-time
- 🧠 Works on Linux, WSL, and macOS - 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 nonNerd font, the prompt falls back to ASCII/Unicode.
--- ---
@@ -63,20 +78,33 @@ bash dotfiles/install/install-macos-user.sh
source ~/.bashrc source ~/.bashrc
``` ```
### 🖼️ Nerd Fonts (optional but recommended) <details>
<summary><strong>Installer menu (structure)</strong></summary>
```bash ```text
bash dotfiles/install/install-nerdfont.sh 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:
- 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
- Manual download: https://www.nerdfonts.com/font-downloads
---
<details> <details>
<summary><strong>Installer choices</strong></summary> <summary><strong>Installer choices</strong></summary>
@@ -86,15 +114,28 @@ Linux/WSL:
- PS1 only / Banner only / Both - PS1 only / Banner only / Both
- PS1 modes: Single season, Dynamic season, Contest pack, Holidays pack, Custom pack - PS1 modes: Single season, Dynamic season, Contest pack, Holidays pack, Custom pack
- Dynamic season auto-switches by time of year (Spring: MarMay, Summer: JunAug, Autumn: SepNov 14, Winter: Nov 15Feb) - Dynamic season auto-switches by time of year (Spring: MarMay, Summer: JunAug, Autumn: SepNov 14, Winter: Nov 15Feb)
- Layout order (day-time-user, user-time, time-user, day-time) for seasonal and contest modes
macOS: macOS:
- PS1 modes: Single season, Dynamic season, Contest pack, Holidays pack, Custom pack - PS1 modes: Single season, Dynamic season, Contest pack, Holidays pack, Custom pack
- Dynamic season auto-switches by time of year (same ranges as Linux) - 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> </details>
--- ---
## ✨ 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> <details>
<summary><strong>What gets installed</strong></summary> <summary><strong>What gets installed</strong></summary>
@@ -151,19 +192,6 @@ echo "Your punchline" | sudo tee /etc/ps1-punchline >/dev/null
--- ---
## 🧠 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
---
## 🎛️ Themes & Style Packs ## 🎛️ Themes & Style Packs
### 🏁 Contest Pack ### 🏁 Contest Pack
@@ -223,6 +251,15 @@ Holidays pack uses themed palettes + emojis and the contest layout order:
--- ---
## 🧭 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> <details>
<summary><strong>Emoji palette</strong></summary> <summary><strong>Emoji palette</strong></summary>
@@ -262,6 +299,7 @@ Meaning:
├── images/ ├── images/
│ ├── bash-pallete.png │ ├── bash-pallete.png
│ └── contest.png │ └── contest.png
│ └── themes/
├── dotfiles/ ├── dotfiles/
│ ├── banner/ │ ├── banner/
│ │ └── banner.sh │ │ └── banner.sh
@@ -356,16 +394,46 @@ If you see squares or missing glyphs, your terminal is likely using a non-Nerd f
--- ---
## 📸 Seasonal Previews ## 📸 Theme Gallery
Placeholders for the four seasonal prompts (screenshots will be added here): Seasonal (Aurora):
- Winter: `images/season-winter.png` (placeholder) ![Winter](images/themes/season-winter.png)
- Spring: `images/season-spring.png` (placeholder) ![Spring](images/themes/season-spring.png)
- Summer: `images/season-summer.png` (placeholder) ![Summer](images/themes/season-summer.png)
- Autumn: `images/season-autumn.png` (placeholder) ![Autumn](images/themes/season-autumn.png)
Current combined palette reference: Contest pack:
![Aurora (contest)](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)
Holidays pack:
![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)
Custom pack:
![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)
Palette reference:
<p align="center"> <p align="center">
<img src="images/bash-pallete.png" width="900"> <img src="images/bash-pallete.png" width="900">
@@ -373,26 +441,6 @@ Current combined palette reference:
--- ---
## 🔥 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 ## 🛠️ Contribution
Want to help improve this project? Want to help improve this project?

View File

@@ -1,6 +1,6 @@
{ {
"project": "Bashrc Dotfiles", "project": "Bashrc Dotfiles",
"branch": "dev", "branch": "main",
"purpose": "DEFCON contest + custom render pack for PS1 styles", "purpose": "DEFCON contest + custom render pack for PS1 styles",
"contest_pack": { "contest_pack": {
"layout_options": [ "layout_options": [
@@ -33,6 +33,20 @@
"emoji_padding": 2, "emoji_padding": 2,
"note": "Two spaces after the emoji before the cursor" "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": { "holiday_pack": {
"layout_options": [ "layout_options": [
"day-time-user", "day-time-user",
@@ -266,6 +280,27 @@
"frame": 24 "frame": 24
}, },
"preview": "[date time user] @host - /path" "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": "radar", "id": "radar",

View File

@@ -70,10 +70,38 @@ if [[ -t 0 ]]; then
esac 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) 2)
season_mode="dynamic" season_mode="dynamic"
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
;; ;;
""|3) ""|3)
season_mode="static" season_mode="static"
@@ -157,6 +185,8 @@ if [[ -t 0 ]]; then
echo " Preview: [date time user] @host - /path (git)" echo " Preview: [date time user] @host - /path (git)"
echo " 7) Hawolex - Winter neon, tech icons" echo " 7) Hawolex - Winter neon, tech icons"
echo " Preview: [date time user] @host - /path" echo " Preview: [date time user] @host - /path"
echo " 8) HawolexV2 - Winter neon gradient"
echo " Preview: [date time user] @host - /path"
read -r -p "Choose style [1]: " style_pick read -r -p "Choose style [1]: " style_pick
case "${style_pick}" in case "${style_pick}" in
2) style_choice="neon" ;; 2) style_choice="neon" ;;
@@ -165,6 +195,7 @@ if [[ -t 0 ]]; then
5) style_choice="mono" ;; 5) style_choice="mono" ;;
6) style_choice="git" ;; 6) style_choice="git" ;;
7) style_choice="hawolex" ;; 7) style_choice="hawolex" ;;
8) style_choice="hawolexv2" ;;
""|1) style_choice="aurora" ;; ""|1) style_choice="aurora" ;;
*) echo "Invalid choice, using aurora."; style_choice="aurora" ;; *) echo "Invalid choice, using aurora."; style_choice="aurora" ;;
esac esac
@@ -281,7 +312,7 @@ if [[ "$install_ps1" -eq 1 ]]; then
{ {
printf 'PS1_STYLE=%s\n' "$style_choice" printf 'PS1_STYLE=%s\n' "$style_choice"
printf 'PS1_STYLE_PACK=%s\n' "$style_pack" printf 'PS1_STYLE_PACK=%s\n' "$style_pack"
if [[ "$style_pack" == "contest" || "$style_pack" == "holiday" ]]; then if [[ "$style_pack" == "contest" || "$style_pack" == "holiday" || "$style_pack" == "standard" ]]; then
printf 'PS1_CONTEST_LAYOUT=%s\n' "$contest_layout" printf 'PS1_CONTEST_LAYOUT=%s\n' "$contest_layout"
fi fi
if [[ "$style_pack" == "holiday" ]]; then if [[ "$style_pack" == "holiday" ]]; then

View File

@@ -45,11 +45,39 @@ if [[ -t 0 ]]; then
*) echo "Invalid choice, using winter."; season_choice="winter" ;; *) echo "Invalid choice, using winter."; season_choice="winter" ;;
esac 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) 2)
season_mode="dynamic" season_mode="dynamic"
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
;; ;;
""|3) ""|3)
season_mode="static" season_mode="static"
@@ -133,6 +161,8 @@ if [[ -t 0 ]]; then
echo " Preview: [date time user] @host - /path (git)" echo " Preview: [date time user] @host - /path (git)"
echo " 7) Hawolex - Winter neon, tech icons" echo " 7) Hawolex - Winter neon, tech icons"
echo " Preview: [date time user] @host - /path" echo " Preview: [date time user] @host - /path"
echo " 8) HawolexV2 - Winter neon gradient"
echo " Preview: [date time user] @host - /path"
read -r -p "Choose style [1]: " style_pick read -r -p "Choose style [1]: " style_pick
case "${style_pick}" in case "${style_pick}" in
2) style_choice="neon" ;; 2) style_choice="neon" ;;
@@ -141,6 +171,7 @@ if [[ -t 0 ]]; then
5) style_choice="mono" ;; 5) style_choice="mono" ;;
6) style_choice="git" ;; 6) style_choice="git" ;;
7) style_choice="hawolex" ;; 7) style_choice="hawolex" ;;
8) style_choice="hawolexv2" ;;
""|1) style_choice="aurora" ;; ""|1) style_choice="aurora" ;;
*) echo "Invalid choice, using aurora."; style_choice="aurora" ;; *) echo "Invalid choice, using aurora."; style_choice="aurora" ;;
esac esac
@@ -202,7 +233,7 @@ chmod 0644 "$SEASON_FILE"
{ {
printf 'PS1_STYLE=%s\n' "$style_choice" printf 'PS1_STYLE=%s\n' "$style_choice"
printf 'PS1_STYLE_PACK=%s\n' "$style_pack" printf 'PS1_STYLE_PACK=%s\n' "$style_pack"
if [[ "$style_pack" == "contest" || "$style_pack" == "holiday" ]]; then if [[ "$style_pack" == "contest" || "$style_pack" == "holiday" || "$style_pack" == "standard" ]]; then
printf 'PS1_CONTEST_LAYOUT=%s\n' "$contest_layout" printf 'PS1_CONTEST_LAYOUT=%s\n' "$contest_layout"
fi fi
if [[ "$style_pack" == "holiday" ]]; then if [[ "$style_pack" == "holiday" ]]; then

View File

@@ -90,7 +90,7 @@ _ps1_season() {
} }
# Style selection (aurora/neon/forge/circuit/mono/git/hawolex + custom pack) # Style selection (aurora/neon/forge/circuit/mono/git/hawolex + custom pack)
# PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|radar|synthwave|noir|topo|glitch|arcticfire|acidlime # PS1_STYLE=aurora|neon|forge|circuit|mono|git|hawolex|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime
# PS1_STYLE_PACK=standard|contest|holiday|custom # PS1_STYLE_PACK=standard|contest|holiday|custom
# PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time # PS1_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time
# PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear # PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear
@@ -211,6 +211,7 @@ _ps1_path_topo() {
printf "%s" "$out" printf "%s" "$out"
} }
# ---- Load Git prompt helper (best effort) ---- # ---- Load Git prompt helper (best effort) ----
__try_source_git_prompt() { __try_source_git_prompt() {
local candidates=( local candidates=(
@@ -622,14 +623,16 @@ _ps1_set_prompt() {
local PATH_PART="${__PS1_PATH}" local PATH_PART="${__PS1_PATH}"
local PATH_SEP=" " local PATH_SEP=" "
local END_PAD=" " local END_PAD=" "
if [[ "$__PS1_STYLE_PACK" == "contest" || "$__PS1_STYLE_PACK" == "holiday" ]]; then local layout="${__PS1_CONTEST_LAYOUT:-day-time-user}"
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 case "$layout" in
user-time) L1="\\u \\A" ;; user-time) L1="\\u \\A" ;;
time-user) L1="\\A \\u" ;; time-user) L1="\\A \\u" ;;
day-time) L1="\\d \\A" ;; day-time) L1="\\d \\A" ;;
*) L1="\\d \\A \\u" ;; *) L1="\\d \\A \\u" ;;
esac esac
fi
if [[ "$__PS1_STYLE_PACK" == "contest" || "$__PS1_STYLE_PACK" == "holiday" ]]; then
HOST_PART="@\\h - ${__PS1_PATH}" HOST_PART="@\\h - ${__PS1_PATH}"
PATH_PART="" PATH_PART=""
PATH_SEP="" PATH_SEP=""
@@ -748,6 +751,63 @@ ${H_LEFT_FG}${H_LEFT}${RST}${H_Z1_BG}${H_Z1_FG} ${L1} ${RST}${H_Z1_BG}${H_Z2_BG}
${H_Z2_BG}${H_Z2_FG} ${HOST_PART}${PATH_SEP}${H_PATH_FG}${PATH_PART}${END_PAD}${RST}${H_RIGHT_FG}${H_RIGHT}${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}" \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) radar)
local R_FRAME="\[\e[38;5;22m\]" local R_FRAME="\[\e[38;5;22m\]"
local R_MAIN="\[\e[38;5;46m\]" local R_MAIN="\[\e[38;5;46m\]"

BIN
images/themes/acidlime.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
images/themes/aurora.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
images/themes/christmas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
images/themes/circuit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
images/themes/easter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
images/themes/forge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
images/themes/git.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
images/themes/glitch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
images/themes/halloween.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
images/themes/hawolex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
images/themes/hawolexv2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

BIN
images/themes/mono.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
images/themes/neon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
images/themes/newyear.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
images/themes/noir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
images/themes/radar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
images/themes/synthwave.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
images/themes/topo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
images/themes/valentine.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

464
libary.md Normal file
View File

@@ -0,0 +1,464 @@
# 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 havent staged them yet
- Staged changes: 📌 changes are staged and ready to commit
- Untracked files: 🧷 new files git hasnt 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:
![Winter](./images/themes/season-winter.png)
Emoji:
- Set: sunrise 🏔️ 🌨️ ❄️ 🌌; work 🎿 ⛷️ 🏂 🧊; coffee ☕; evening 🌆; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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:
![Spring](./images/themes/season-spring.png)
Emoji:
- Set: sunrise 🌷 🌱 🐣 🌤; work 🌿 🪴 🐝 🌼; coffee ☕; evening 🌤; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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:
![Summer](./images/themes/season-summer.png)
Emoji:
- Set: sunrise 🌞 🏖️ 🌅 🌤; work 🏄 🏖️ 🚤 🌴; coffee 🧃; evening 🌇; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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:
![Autumn](./images/themes/season-autumn.png)
Emoji:
- Set: sunrise 🍁 🍂 🌫️ 🌦️; work 🍂 🍄 🎃 🪵; coffee ☕; evening 🌆; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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):
![Aurora (contest)](./images/themes/aurora.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=24 Z2_BG=31
Z1_FG=255 Z2_FG=255
PATH_FG=51
FRAME=23
```
Neon:
![Neon](./images/themes/neon.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=201 Z1_FG=255
Z2_BG=45 Z2_FG=16
PATH_FG=16
FRAME=199
```
Forge:
![Forge](./images/themes/forge.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=94 Z1_FG=230
Z2_BG=166 Z2_FG=231
PATH_FG=224
FRAME=130
```
Circuit:
![Circuit](./images/themes/circuit.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
FG_MAIN=46
FG_DIM=22
PATH_FG=120
```
Mono:
![Mono](./images/themes/mono.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
FG_MAIN=250
FG_DIM=240
```
Git:
![Git](./images/themes/git.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=61 Z1_FG=255
Z2_BG=37 Z2_FG=255
PATH_FG=194
FRAME=60
```
Hawolex:
![Hawolex](./images/themes/hawolex.png)
Emoji:
- Set: sunrise 💻 🚗 🔊 🎮; work 🎧 🕹️ 📟 🧩; coffee ☕; evening 🌆; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=54 Z1_FG=255
Z2_BG=31 Z2_FG=255
PATH_FG=230
FRAME=24
```
HawolexV2 (gradient):
![HawolexV2](./images/themes/hawolexv2.png)
Emoji:
- Set: sunrise ⚡️ 🛰️ 🧬 🧠; work 🛠️ 💾 🧪 🧩; coffee ☕; evening 🎛️; night 🕶️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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
```
## Holidays Pack (style_pack=holiday)
Design intent: themed color + emoji without sacrificing readability.
Layout uses contest order and ends with "@host - /path".
Christmas:
![Christmas](./images/themes/christmas.png)
Emoji:
- Set: sunrise 🎄 🎅 ❄️ ⛄; work 🎁 🧤 🧣 🦌; coffee ☕; evening 🌟; night 🕯️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=52 Z2_BG=28
Z1_FG=255 Z2_FG=255
PATH_FG=194
FRAME=88
```
Easter:
![Easter](./images/themes/easter.png)
Emoji:
- Set: sunrise 🐣 🥚 🌷 🌤; work 🐰 🌼 🧺 🍫; coffee ☕; evening 🌅; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=186 Z2_BG=150
Z1_FG=16 Z2_FG=16
PATH_FG=94
FRAME=143
```
Halloween:
![Halloween](./images/themes/halloween.png)
Emoji:
- Set: sunrise 🎃 🦇 🌕 🕸️; work 👻 💀 🕯️ 🧪; coffee ☕; evening 🌆; night 🕷️
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=53 Z2_BG=166
Z1_FG=255 Z2_FG=16
PATH_FG=16
FRAME=89
```
Valentine:
![Valentine](./images/themes/valentine.png)
Emoji:
- Set: sunrise 💖 🌹 💘 💕; work 💌 🍫 🕊️ 💗; coffee ☕; evening 🌆; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=198 Z2_BG=205
Z1_FG=255 Z2_FG=255
PATH_FG=224
FRAME=162
```
Thanksgiving:
![Thanksgiving](./images/themes/thanksgiving.png)
Emoji:
- Set: sunrise 🦃 🍁 🥧 🍂; work 🍽️ 🌾 🧺 🥖; coffee ☕; evening 🌆; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=94 Z2_BG=136
Z1_FG=230 Z2_FG=231
PATH_FG=223
FRAME=130
```
NewYear:
![NewYear](./images/themes/newyear.png)
Emoji:
- Set: sunrise 🎆 🥂 🎇 ✨; work 🗓️ ⏳ 🚀 ✨; coffee ☕; evening 🌆; night 🌙
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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:
![Radar](./images/themes/radar.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
FRAME=22
FG_MAIN=46
FG_DIM=28
PATH_FG=120
```
Synthwave:
![Synthwave](./images/themes/synthwave.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=198 Z1_FG=255
Z2_BG=45 Z2_FG=16
Z3_BG=208 Z3_FG=16
FRAME=201
```
Noir:
![Noir](./images/themes/noir.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
FG_MAIN=250
FG_DIM=242
PATH_FG=160
FRAME=236
```
Topo:
![Topo](./images/themes/topo.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
PATH_FG_LIST=109,110,111,110
FRAME=24
```
Glitch:
![Glitch](./images/themes/glitch.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
FG_MAIN=118
FG_DIM=60
FRAME=129
```
ArcticFire:
![ArcticFire](./images/themes/arcticfire.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004:59), daily rotation
```
Z1_BG=24 Z1_FG=255
Z2_BG=31 Z2_FG=255
Z3_BG=208 Z3_FG=16
FRAME=25
```
AcidLime:
![AcidLime](./images/themes/acidlime.png)
Emoji:
- Set: seasonal (Spring/Summer/Autumn/Winter sets, same as Seasonal section)
- Fixed times: 🥪 11:0011:29, 🍲 16:0016:59
- Interval: time slots (Sunrise 05:0008:59, Coffee 09:0010:59, Work 11:3015:59, Evening 17:0022:59, Night 23:0004: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
```