- Darken summer path text - Use dark green for spring host/path
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
🚀 Install (step by step)
🐧 Linux / WSL (global, all users)
- Clone the repo:
git clone <repo-url>
- Enter the folder:
cd Bashrc
- Run the global installer (auto-installs deps + prompts for punchline):
sudo bash dotfiles/install/install-linux-global.sh
You get 3 choices in the install script:
- PS1 only
- Banner only
- Both (PS1 + banner)
To "uninstall" one part, run the script again and choose only the other.
- Open a new shell to see the prompt and banner.
🍏 macOS (per-user)
- Clone the repo:
git clone <repo-url>
- Enter the folder:
cd Bashrc
- Run the user installer:
bash dotfiles/install/install-macos-user.sh
- Reload your shell (or open a new terminal):
source ~/.bashrc
🖼️ Nerd Fonts (optional but recommended)
bash dotfiles/install/install-nerdfont.sh
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
✅ What gets installed (PS1 + banner)
Linux / WSL
- Installs the prompt module to
/etc/profile.d/ps1.sh - Installs the banner module to
/etc/profile.d/banner.sh - Sources both from
/etc/bash.bashrc - Installs
landscape-common,figlet, andlolcatif missing - Prompts for the global punchline used by the banner
- You can change the selection or remove PS1/banner by running the installer again
macOS
- Copies
ps1/ps1.shto~/.config/ps1/ps1.sh - Adds a source block in
~/.bashrcand~/.bash_profile
PS1 module (when it runs)
The prompt is loaded automatically by the installer:
- Linux/WSL: sourced from
/etc/bash.bashrc(global) - macOS: sourced from
~/.bashrcand~/.bash_profile(per-user)
You normally do not need to run ps1.sh manually.
Banner (hostname + punchline + sysinfo)
On Linux/WSL, a banner is also shown on login:
figlet $(hostname) -c | lolcatfiglet -f digital "<punchline>" -c | lolcatlandscape-sysinfo | lolcat
Punchline (global)
The banner reads the punchline from:
/etc/ps1-punchline
The install script prompts for a punchline and stores it in the file. You can also set it manually:
echo "Your punchline" | sudo tee /etc/ps1-punchline >/dev/null
PS1 install
Use the installer for your OS:
Linux / WSL (global)
sudo bash dotfiles/install/install-linux-global.sh
macOS (per-user)
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
🗂️ Repo Structure
dotfiles/
├── ps1/
│ └── ps1.sh
├── install/
│ ├── install-linux-global.sh
│ ├── install-macos-user.sh
│ └── install-nerdfont.sh
└── README.md
⚙️ Overrides (Optional)
Sometimes autodetection doesn’t work (e.g., on macOS without fontconfig):
Force Nerd Font glyphs:
export PS1_FORCE_NF=1
Force fallback (no powerline glyphs):
export PS1_FORCE_ASCII=1
Add these to your ~/.bashrc or ~/.bash_profile.
🙅 Disable Prompt (per user)
If you want to disable the global prompt for your account:
Temporarily in a shell:
export DISABLE_GLOBAL_PS1=1
Permanently:
mkdir -p ~/.config/ps1
touch ~/.config/ps1/disable
To re-enable:
rm -f ~/.config/ps1/disable
🧪 Testing
After install, open a new shell and run:
bash -i -c 'echo OK'
If you see a prompt with colors and emoji, things are working.
💡 Usage Notes
Font matters: even with Nerd Fonts installed, you must select them in your terminal settings.
Works on terminals like:
- GNOME Terminal
- iTerm2
- Kitty
- VS Code integrated terminal
- Windows Terminal (WSL)
If you see squares or missing glyphs, your terminal is likely using a non-Nerd font.
📸 Example Prompt
This prompt shows:
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
Want to help improve this project?
- Fork the repository
- Make your changes
- Open a merge request
- Please keep consistent colors and styles
📄 License
MIT © 2026 Steffen Skui
