A tiny pride-flag-themed prompt + “rainbow typewriter” input effect, with an interactive installer. Works on zsh, bash, and fish.
Want to try the theme in a given shell without modifying any rc file? Use the bundled smoke-test script:
./scripts/smoke-test.sh bash # bash (auto-detects ble.sh if installed)
./scripts/smoke-test.sh fish # fish
./scripts/smoke-test.sh zsh # zsh in an isolated session
./scripts/smoke-test.sh bash --mode=light --input=defaultIt launches the requested shell interactively with the theme sourced and the config env vars set, then drops you back to your original shell when you exit. Your real ~/.zshrc / ~/.bashrc / fish config are never touched.
| Feature | zsh | bash | fish |
|---|---|---|---|
| Colored prompt | ✅ native | ✅ native | ✅ native |
| Per-word rainbow as-you-type | ✅ via ZLE | ✅ via ble.sh (optional dep) |
fish_color_* (fish's line editor is not user-extensible) |
Runtime rainbow-on / rainbow-off |
✅ | ✅ | ✅ |
Note on fish: fish's line editor is compiled into the fish binary and does not expose a hook to recolor arbitrary ranges of the typed buffer. The fish port therefore approximates the effect by coloring different token types (commands, params, strings, options, …) with different pride-flag colors. It's a rainbow-flavored highlight, not a true per-word rainbow. See Why fish can't do full parity below.
- One of: zsh, bash, or fish.
perl(used by the installer to cleanly remove previous install blocks from your rc file).- A terminal that supports 24-bit color (all modern macOS/Linux terminals do).
- Bash users who want the full rainbow typewriter: install
ble.shand load it in your~/.bashrcbefore sourcing our theme. Withoutble.sh, bash still gets the colored prompt but not the per-word input coloring — that's a bash limitation, not ours.
- Clone this repo.
- Run the installer (it auto-detects your login shell via
$SHELL):
bash ./turn_your_shell_a_lesbian.shTo force a specific shell (useful if $SHELL disagrees with what you actually use):
bash ./turn_your_shell_a_lesbian.sh --shell=bash # or --shell=zsh / --shell=fish- Restart your terminal, or apply immediately:
# zsh
source ~/.zshrc
# bash
source ~/.bashrc
# fish
source ~/.config/fish/config.fishThe installer will:
-
Detect (or accept via
--shell=) your target shell. -
Ask you to choose language (English/中文).
-
Let you preview styles (dark/light, rainbow typing on/off, input color).
-
Ask for a display name (defaults to your real system username).
-
Append a sentineled configuration block to the right rc file (
~/.zshrc,~/.bashrc, or~/.config/fish/config.fish) that exports: -
PRIDE_THEME_MODE -
PRIDE_THEME_USER -
RAINBOW_TYPING -
PRIDE_INPUT_COLOR
…and then sources the shell-appropriate theme file (lesbiancolor.sh / .bash / .fish).
Run:
bash ./turn_your_shell_a_lesbian.sh --backThis strips the Pride Shell block from all of ~/.zshrc, ~/.bashrc, and ~/.config/fish/config.fish (whichever contain it). Then restart your terminal.
If you don’t want the installer, source the shell-specific theme file yourself.
zsh — add to ~/.zshrc:
export PRIDE_THEME_MODE="dark" # "dark" or "light"
export PRIDE_THEME_USER="%n" # or a fixed string like "lilith"
export RAINBOW_TYPING="on" # "on" or "off"
export PRIDE_INPUT_COLOR="purple" # "purple" or "default"
source "/absolute/path/to/lesbiancolor.sh"bash — add to ~/.bashrc:
# (Optional, for full rainbow typewriter: load ble.sh first)
# source "/path/to/ble.sh"
export PRIDE_THEME_MODE="dark"
export PRIDE_THEME_USER='\u' # bash prompt escape for username
export RAINBOW_TYPING="on"
export PRIDE_INPUT_COLOR="purple"
source "/absolute/path/to/lesbiancolor.bash"fish — add to ~/.config/fish/config.fish:
set -gx PRIDE_THEME_MODE dark
set -gx PRIDE_THEME_USER (whoami)
set -gx RAINBOW_TYPING on
set -gx PRIDE_INPUT_COLOR purple
source "/absolute/path/to/lesbiancolor.fish"Once installed:
rainbow-on: enable rainbow typewriterrainbow-off: disable rainbow typewriter
- On zsh, the theme sets
PROMPTand registers a ZLEline-pre-redrawhook to colorize input per-word. - On bash, the theme sets
PS1(andPS0for color-reset before command execution). Ifble.shis loaded, the theme additionally remapsble-facesyntax highlight faces to the pride-flag palette. - On fish, the theme defines
fish_promptand sets thefish_color_*variables to a rainbow-flavored palette (per token type, not per word — see Why fish can't do full parity). - The installer temporarily resizes the terminal to
95x24to fit its TUI.
zsh's ZLE and ble.sh both expose programmable hooks to recolor arbitrary ranges of the currently-typed buffer (region_highlight, custom highlight layers). Fish's line editor is written in C++ and compiled into the fish binary; the only user-facing knobs for input coloring are the fish_color_* variables, which let you pick one color per token type (command, param, quote, option, …) — not one color per word. There is no fish_prompt-like hook that runs on every keystroke with write access to the rendered buffer. Producing true per-word rainbow-as-you-type in fish would require patching fish's C++ source, or writing an entire replacement line editor in fishscript (intercepting every keystroke, disabling fish's own highlighter / autosuggestions / history search). Neither is a sustainable shipping option, so the fish port delivers the best faithful approximation instead.
- zsh on macOS —
Terminal.app, VS Code / Cursor / Windsurf integrated terminals. - bash and fish ports: syntax-checked and sourced in non-interactive subshells; live TUI testing pending per-shell. Reports welcome.
Other terminals (iTerm2, Alacritty, Kitty, GNOME Terminal, …) are expected to work as long as they run one of the supported shells and support 24-bit color.
- The transgender pride flag colors used in this theme — light blue
#5BCEFA, pink#F5A9B8, white — are from the flag designed by Monica Helms in 1999. - The warm palette (reds/oranges/pinks in the dark & light themes) is inspired by the lesbian “sunset” pride flag, commonly attributed to Emily Gwen (2018).
- Flag colors are used here purely as a visual tribute; this project is not officially affiliated with or endorsed by either designer.
这是一个 Zsh 终端主题 + “彩虹打字机”输入效果,并带有交互式安装脚本。
仓库内容:
turn_your_shell_a_lesbian.sh:交互式安装/卸载脚本(会在~/.zshrc里追加/移除一段配置)。lesbiancolor.sh:真正的主题文件(包含 Prompt 与 ZLE 输入上色 Hook)。
- zsh、bash 或 fish 中的任意一个。
perl(安装脚本用它来干净移除旧的安装段落)。- 支持 24-bit 真彩色的终端(macOS/Linux 一般都没问题)。
- 注意:bash 用户如果希望完整的彩虹打字机效果,需要额外安装
ble.sh,并在~/.bashrc中在 source 本主题之前 sourceble.sh。不装ble.sh的话,bash 下只有彩色提示符,没有按单词彩虹化的输入——这是 bash 本身的限制,不是我们的 bug。 - 注意:fish 因为其行编辑器编译在 C++ 二进制里、不对用户开放逐键重染色接口,所以我们只能用
fish_color_*提供一个按 token 类型着色的彩虹风近似(命令一种颜色、参数一种颜色、引号字符串一种颜色…),不是真正的逐词彩虹。
- 先把本仓库 clone 到本地。
- 运行安装脚本(会通过
$SHELL自动检测你在用的 shell):
bash ./turn_your_shell_a_lesbian.sh想强制指定 shell(假如你实际用的和 $SHELL 不一致):
bash ./turn_your_shell_a_lesbian.sh --shell=bash # 或 --shell=zsh / --shell=fish- 重启终端,或立刻生效:
# zsh
source ~/.zshrc
# bash
source ~/.bashrc
# fish
source ~/.config/fish/config.fish安装脚本会:
-
检测(或通过
--shell=接受)目标 shell。 -
让你选择语言(English/中文)。
-
预览并选择风格。
-
询问显示用户名(默认为系统用户名)。
-
在对应 shell 的 rc 文件(
~/.zshrc/~/.bashrc/~/.config/fish/config.fish)中写入一个有哨兵注释的配置块,设置: -
PRIDE_THEME_MODE -
PRIDE_THEME_USER -
RAINBOW_TYPING -
PRIDE_INPUT_COLOR
并用绝对路径 source 对应 shell 的主题文件(lesbiancolor.sh / .bash / .fish)。
运行:
bash ./turn_your_shell_a_lesbian.sh --back会从 ~/.zshrc、~/.bashrc、~/.config/fish/config.fish 中全部清理掉 Pride Shell 的配置块(哪个文件里有就清哪个),然后重启终端即可。
zsh — 写入 ~/.zshrc:
export PRIDE_THEME_MODE="dark" # "dark" 或 "light"
export PRIDE_THEME_USER="%n" # 或固定字符串,例如 "lilith"
export RAINBOW_TYPING="on" # "on" 或 "off"
export PRIDE_INPUT_COLOR="purple" # "purple" 或 "default"
source "/absolute/path/to/lesbiancolor.sh"bash — 写入 ~/.bashrc:
# (可选,如需完整彩虹打字机效果,先 source ble.sh)
# source "/path/to/ble.sh"
export PRIDE_THEME_MODE="dark"
export PRIDE_THEME_USER='\u' # bash 用户名转义
export RAINBOW_TYPING="on"
export PRIDE_INPUT_COLOR="purple"
source "/absolute/path/to/lesbiancolor.bash"fish — 写入 ~/.config/fish/config.fish:
set -gx PRIDE_THEME_MODE dark
set -gx PRIDE_THEME_USER (whoami)
set -gx RAINBOW_TYPING on
set -gx PRIDE_INPUT_COLOR purple
source "/absolute/path/to/lesbiancolor.fish"安装后可用:
rainbow-on:开启彩虹打字机rainbow-off:关闭彩虹打字机
- zsh:设置
PROMPT,并注册line-pre-redrawZLE 钩子来逐词重染色输入。 - bash:设置
PS1(并用PS0在执行命令前重置颜色)。如果检测到ble.sh已加载,会额外用ble-face将语法高亮色图置换成旗帜调色板。 - fish:定义
fish_prompt,并把fish_color_*变量按 token 类型配成彩虹风近似(详见上文环境要求中的 fish 说明)。 - 为了让终端 UI (TUI) 完美居中显示,安装脚本会临时将终端大小调整为
95x24。
- zsh on macOS —
Terminal.app;以及 VS Code / Cursor / Windsurf 的集成终端。 - bash / fish 端口:已通过语法检查和非交互式 source 检验;真交互 TUI 测试还在进行中,欢迎反馈。
- 本主题中使用的跨性别骄傲旗 (transgender pride flag) 配色 —— 浅蓝
#5BCEFA、粉色#F5A9B8、白色 —— 来自 Monica Helms 于 1999 年设计的跨性别旗。 - 暖色系配色(深色 / 浅色主题里的红、橙、粉)灵感来自于 “日落版”拉拉旗 (lesbian sunset flag),普遍认为由 Emily Gwen 于 2018 年设计。
- 这里只是出于视觉致敬使用这些旗帜的配色,本项目并未获得任何原作者的官方授权或背书。


