From ae66cbc70e6a35e198befa8e05c906cb2d5ba698 Mon Sep 17 00:00:00 2001 From: steffen Date: Sat, 24 Jan 2026 18:20:27 +0000 Subject: [PATCH] Add demo mode to cycle all themes --- .context.json | 9 +++++- README.md | 2 ++ contest-styles.json | 14 +++++++++ dotfiles/install/install-linux-global.sh | 3 ++ dotfiles/install/install-macos-user.sh | 3 ++ dotfiles/ps1/ps1.sh | 36 +++++++++++++++++++++++- libary.md | 4 +++ 7 files changed, 69 insertions(+), 2 deletions(-) diff --git a/.context.json b/.context.json index 4c94ada..0e79bb4 100644 --- a/.context.json +++ b/.context.json @@ -224,6 +224,13 @@ "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", @@ -275,7 +282,7 @@ } ], "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": [ "PS1_STYLE", "PS1_STYLE_PACK", diff --git a/README.md b/README.md index f142a4d..b7f9ab6 100644 --- a/README.md +++ b/README.md @@ -216,6 +216,8 @@ Seven extra styles, built to be loud and expressive: - 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. --- diff --git a/contest-styles.json b/contest-styles.json index 3c2d3bc..052aefb 100644 --- a/contest-styles.json +++ b/contest-styles.json @@ -302,6 +302,20 @@ }, "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", diff --git a/dotfiles/install/install-linux-global.sh b/dotfiles/install/install-linux-global.sh index 45e12e9..1e7bee8 100644 --- a/dotfiles/install/install-linux-global.sh +++ b/dotfiles/install/install-linux-global.sh @@ -187,6 +187,8 @@ if [[ -t 0 ]]; then echo " Preview: [date time user] @host - /path" echo " 8) HawolexV2 - Winter neon gradient" 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 case "${style_pick}" in 2) style_choice="neon" ;; @@ -196,6 +198,7 @@ if [[ -t 0 ]]; then 6) style_choice="git" ;; 7) style_choice="hawolex" ;; 8) style_choice="hawolexv2" ;; + 9) style_choice="demo" ;; ""|1) style_choice="aurora" ;; *) echo "Invalid choice, using aurora."; style_choice="aurora" ;; esac diff --git a/dotfiles/install/install-macos-user.sh b/dotfiles/install/install-macos-user.sh index 79d5dfd..636ac5c 100644 --- a/dotfiles/install/install-macos-user.sh +++ b/dotfiles/install/install-macos-user.sh @@ -163,6 +163,8 @@ if [[ -t 0 ]]; then echo " Preview: [date time user] @host - /path" echo " 8) HawolexV2 - Winter neon gradient" 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 case "${style_pick}" in 2) style_choice="neon" ;; @@ -172,6 +174,7 @@ if [[ -t 0 ]]; then 6) style_choice="git" ;; 7) style_choice="hawolex" ;; 8) style_choice="hawolexv2" ;; + 9) style_choice="demo" ;; ""|1) style_choice="aurora" ;; *) echo "Invalid choice, using aurora."; style_choice="aurora" ;; esac diff --git a/dotfiles/ps1/ps1.sh b/dotfiles/ps1/ps1.sh index 44f107a..c234d12 100644 --- a/dotfiles/ps1/ps1.sh +++ b/dotfiles/ps1/ps1.sh @@ -90,7 +90,7 @@ _ps1_season() { } # 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_CONTEST_LAYOUT=day-time-user|user-time|time-user|day-time # PS1_HOLIDAY=christmas|easter|halloween|valentine|thanksgiving|newyear @@ -211,6 +211,32 @@ _ps1_path_topo() { 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) ---- __try_source_git_prompt() { @@ -947,6 +973,14 @@ _ps1_update() { __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 diff --git a/libary.md b/libary.md index 301d4ca..894283e 100644 --- a/libary.md +++ b/libary.md @@ -204,6 +204,10 @@ PATH_FG=230 FRAME=24 ``` +Demo: +``` +Cycles all themes on each prompt (screenshots mode). +``` ## Holidays Pack (style_pack=holiday)