Add demo mode to cycle all themes

This commit is contained in:
2026-01-24 18:20:27 +00:00
parent 98ae44cc3b
commit 761a1ae38a
7 changed files with 86 additions and 17 deletions

View File

@@ -196,6 +196,13 @@
"layout": "two-line, segmented gradient", "layout": "two-line, segmented gradient",
"preview": "[date time user] @host - /path" "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", "id": "radar",
"name": "Radar", "name": "Radar",
@@ -247,7 +254,7 @@
} }
], ],
"config": { "config": {
"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", "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": [ "config_file_keys": [
"PS1_STYLE", "PS1_STYLE",
"PS1_STYLE_PACK", "PS1_STYLE_PACK",

View File

@@ -181,6 +181,8 @@ Seven extra styles, built to be loud and expressive:
- AcidLime: black + electric green - AcidLime: black + electric green
Custom styles add a small context badge when relevant (`ssh`, `ctr`, `git`). 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>
--- ---

View File

@@ -288,6 +288,20 @@
}, },
"preview": "[date time user] @host - /path" "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", "id": "radar",
"name": "Radar", "name": "Radar",

View File

@@ -187,6 +187,8 @@ if [[ -t 0 ]]; then
echo " Preview: [date time user] @host - /path" echo " Preview: [date time user] @host - /path"
echo " 8) HawolexV2 - Winter neon gradient" echo " 8) HawolexV2 - Winter neon gradient"
echo " Preview: [date time user] @host - /path" echo " Preview: [date time user] @host - /path"
echo " 9) Demo - Cycles all themes every prompt"
echo " Preview: (auto-rotate)"
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" ;;
@@ -196,6 +198,7 @@ if [[ -t 0 ]]; then
6) style_choice="git" ;; 6) style_choice="git" ;;
7) style_choice="hawolex" ;; 7) style_choice="hawolex" ;;
8) style_choice="hawolexv2" ;; 8) style_choice="hawolexv2" ;;
9) style_choice="demo" ;;
""|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

View File

@@ -163,6 +163,8 @@ if [[ -t 0 ]]; then
echo " Preview: [date time user] @host - /path" echo " Preview: [date time user] @host - /path"
echo " 8) HawolexV2 - Winter neon gradient" echo " 8) HawolexV2 - Winter neon gradient"
echo " Preview: [date time user] @host - /path" echo " Preview: [date time user] @host - /path"
echo " 9) Demo - Cycles all themes every prompt"
echo " Preview: (auto-rotate)"
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" ;;
@@ -172,6 +174,7 @@ if [[ -t 0 ]]; then
6) style_choice="git" ;; 6) style_choice="git" ;;
7) style_choice="hawolex" ;; 7) style_choice="hawolex" ;;
8) style_choice="hawolexv2" ;; 8) style_choice="hawolexv2" ;;
9) style_choice="demo" ;;
""|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

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|hawolexv2|radar|synthwave|noir|topo|glitch|arcticfire|acidlime # 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_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,33 @@ _ps1_path_topo() {
printf "%s" "$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[@]}
if [[ -z "${__PS1_DEMO_INDEX+x}" ]]; then
__PS1_DEMO_INDEX=0
else
__PS1_DEMO_INDEX=$(( (__PS1_DEMO_INDEX + 1) % count ))
fi
__PS1_DEMO_STYLE="${styles[$__PS1_DEMO_INDEX]}"
__PS1_DEMO_PACK="${packs[$__PS1_DEMO_INDEX]}"
__PS1_DEMO_HOLIDAY="${holidays[$__PS1_DEMO_INDEX]}"
}
# ---- Load Git prompt helper (best effort) ---- # ---- Load Git prompt helper (best effort) ----
__try_source_git_prompt() { __try_source_git_prompt() {
local candidates=( local candidates=(
@@ -946,6 +973,14 @@ _ps1_update() {
__PS1_HOLIDAY="$(_ps1_holiday)" __PS1_HOLIDAY="$(_ps1_holiday)"
__PS1_STYLE="$(_ps1_style)" __PS1_STYLE="$(_ps1_style)"
__PS1_GIT="${PS1_GIT:-0}" __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_SYM="$(_ps1_symbol)"
__PS1_PATH="$(_ps1_path)" __PS1_PATH="$(_ps1_path)"
if _ps1_has_nf; then __PS1_USE_NF=1; else __PS1_USE_NF=0; fi if _ps1_has_nf; then __PS1_USE_NF=1; else __PS1_USE_NF=0; fi

View File

@@ -108,6 +108,11 @@ PATH_FG=230
FRAME=24 FRAME=24
``` ```
Demo:
```
Cycles all themes on each prompt (screenshots mode).
```
## Holidays Pack (style_pack=holiday) ## Holidays Pack (style_pack=holiday)
Design intent: themed color + emoji without sacrificing readability. Design intent: themed color + emoji without sacrificing readability.