AygeaNight terminal theme

macOS/Ubuntu/Arch config files for iTerm2, tmux, starship prompt,
and fox kitsune fetch scripts in brand colors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Aygea
2026-03-28 20:18:37 -07:00
commit 0481603e62
10 changed files with 1632 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
# Font files — download separately from nerdfonts.com
fonts/
# macOS
.DS_Store
+251
View File
@@ -0,0 +1,251 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!--
AygeaNight.itermcolors
Tokyo Night base · Aygea brand accent colors
INSTALL: Double-click this file → iTerm2 will import it automatically
Then: iTerm2 → Preferences → Profiles → Colors → Color Presets → AygeaNight
-->
<plist version="1.0">
<dict>
<!-- ── ANSI Colors ─────────────────────────────────────────── -->
<!-- 0 Black — deep navy panel -->
<key>Ansi 0 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.10</real>
<key>Green Component</key><real>0.11</real>
<key>Blue Component</key> <real>0.16</real>
</dict>
<!-- 1 Red — muted wine rose (no harsh red) -->
<key>Ansi 1 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.42</real>
<key>Green Component</key><real>0.10</real>
<key>Blue Component</key> <real>0.23</real>
</dict>
<!-- 2 Green — muted teal (opal teal ember) -->
<key>Ansi 2 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.10</real>
<key>Green Component</key><real>0.29</real>
<key>Blue Component</key> <real>0.35</real>
</dict>
<!-- 3 Yellow — cool lavender (avoiding warm yellow entirely) -->
<key>Ansi 3 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.60</real>
<key>Green Component</key><real>0.55</real>
<key>Blue Component</key> <real>0.78</real>
</dict>
<!-- 4 Blue — Deep Sapphire #0F52BA -->
<key>Ansi 4 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.059</real>
<key>Green Component</key><real>0.322</real>
<key>Blue Component</key> <real>0.729</real>
</dict>
<!-- 5 Magenta — Soft Pink #F8C8DC -->
<key>Ansi 5 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.780</real>
<key>Green Component</key><real>0.549</real>
<key>Blue Component</key> <real>0.659</real>
</dict>
<!-- 6 Cyan — Opal Flash Blue #A8D8F0 -->
<key>Ansi 6 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.459</real>
<key>Green Component</key><real>0.722</real>
<key>Blue Component</key> <real>0.878</real>
</dict>
<!-- 7 White — Silver #E6EEF8 -->
<key>Ansi 7 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.780</real>
<key>Green Component</key><real>0.820</real>
<key>Blue Component</key> <real>0.878</real>
</dict>
<!-- 8 Bright Black — navy mid #2A3A5E -->
<key>Ansi 8 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.165</real>
<key>Green Component</key><real>0.227</real>
<key>Blue Component</key> <real>0.369</real>
</dict>
<!-- 9 Bright Red — Iced Rose #C4728A -->
<key>Ansi 9 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.769</real>
<key>Green Component</key><real>0.447</real>
<key>Blue Component</key> <real>0.541</real>
</dict>
<!-- 10 Bright Green — lighter teal -->
<key>Ansi 10 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.157</real>
<key>Green Component</key><real>0.490</real>
<key>Blue Component</key> <real>0.576</real>
</dict>
<!-- 11 Bright Yellow — Opal Lavender #C9B8E8 -->
<key>Ansi 11 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.788</real>
<key>Green Component</key><real>0.722</real>
<key>Blue Component</key> <real>0.910</real>
</dict>
<!-- 12 Bright Blue — Baby Blue #AFCBFF -->
<key>Ansi 12 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.686</real>
<key>Green Component</key><real>0.796</real>
<key>Blue Component</key> <real>1.000</real>
</dict>
<!-- 13 Bright Magenta — Pink Light #FFEAF2 -->
<key>Ansi 13 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.941</real>
<key>Green Component</key><real>0.776</real>
<key>Blue Component</key> <real>0.859</real>
</dict>
<!-- 14 Bright Cyan — Baby Blue Light #DDEEFF -->
<key>Ansi 14 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.867</real>
<key>Green Component</key><real>0.933</real>
<key>Blue Component</key> <real>1.000</real>
</dict>
<!-- 15 Bright White — near white #F4F8FF -->
<key>Ansi 15 Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.957</real>
<key>Green Component</key><real>0.973</real>
<key>Blue Component</key> <real>1.000</real>
</dict>
<!-- ── UI Colors ────────────────────────────────────────────── -->
<!-- Background — Tokyo Night base, slightly warmer/bluer than pure black -->
<key>Background Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.063</real>
<key>Green Component</key><real>0.071</real>
<key>Blue Component</key> <real>0.118</real>
</dict>
<!-- Foreground — Silver #C0D1E6 -->
<key>Foreground Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.753</real>
<key>Green Component</key><real>0.820</real>
<key>Blue Component</key> <real>0.902</real>
</dict>
<!-- Bold — bright silver/white -->
<key>Bold Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.957</real>
<key>Green Component</key><real>0.973</real>
<key>Blue Component</key> <real>1.000</real>
</dict>
<!-- Cursor — Baby Blue #AFCBFF -->
<key>Cursor Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.686</real>
<key>Green Component</key><real>0.796</real>
<key>Blue Component</key> <real>1.000</real>
</dict>
<!-- Cursor Text — dark bg so text is readable -->
<key>Cursor Text Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.063</real>
<key>Green Component</key><real>0.071</real>
<key>Blue Component</key> <real>0.118</real>
</dict>
<!-- Selection — navy blue #1B2438 -->
<key>Selection Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.106</real>
<key>Green Component</key><real>0.141</real>
<key>Blue Component</key> <real>0.220</real>
</dict>
<!-- Selected Text — bright silver -->
<key>Selected Text Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.957</real>
<key>Green Component</key><real>0.973</real>
<key>Blue Component</key> <real>1.000</real>
</dict>
<!-- Link — Sapphire Light #4A90E2 -->
<key>Link Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.290</real>
<key>Green Component</key><real>0.565</real>
<key>Blue Component</key> <real>0.886</real>
</dict>
<!-- Tab/badge -->
<key>Tab Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.063</real>
<key>Green Component</key><real>0.071</real>
<key>Blue Component</key> <real>0.118</real>
</dict>
<key>Badge Color</key>
<dict>
<key>Color Space</key><string>sRGB</string>
<key>Red Component</key> <real>0.686</real>
<key>Green Component</key><real>0.796</real>
<key>Blue Component</key> <real>1.000</real>
<key>Alpha Component</key><real>0.6</real>
</dict>
</dict>
</plist>
+32
View File
@@ -0,0 +1,32 @@
# AygeaNight
Tokyo Night base with Aygea brand accent colors. Baby blue, sapphire, pink, silver on dark navy.
<img src="assets/tmux.png" alt="AygeaNight tmux theme" width="700">
> **This is a personal terminal theme for my own machines.** It's not a framework or library — just a collection of config files I use daily. If it's useful to you, cool, but I'm not supporting it or taking requests.
## What's included
| File | What it does |
|---|---|
| `AygeaNight.itermcolors` | iTerm2 color scheme |
| `tmux.conf` | tmux status bar and colors |
| `starship.toml` | Shell prompt theme |
| `fetch/aygeafetch.zsh` | System fetch for macOS (zsh) |
| `fetch/aygeafetch-ubuntu.sh` | System fetch for Ubuntu (bash) |
| `fetch/aygeafetch-arch.sh` | System fetch for Arch Linux (bash) |
## Setup guide
See [TERMINAL-SETUP.md](TERMINAL-SETUP.md) for full step-by-step install instructions.
## Font
This theme uses **JetBrainsMono Nerd Font**. It's not included in this repo — download it from [nerdfonts.com](https://www.nerdfonts.com/font-downloads).
## Colors
Baby Blue `#AFCBFF` · Soft Pink `#F8C8DC` · Silver `#E6EEF8` · Sapphire `#6A8FD3` · Pink Dark `#D88CA8` · Silver Dark `#C0D1E6` · Purple `#9480B9` · Purple Dark `#5A4878` · Deep Sapphire `#0F52BA` · Sapphire Dark `#083B89`
Background: Tokyo Night base `#0F1020`
+226
View File
@@ -0,0 +1,226 @@
# 🦊 AygeaNight Terminal Setup Guide
Tokyo Night base · Aygea brand accent colors
Baby blue, sapphire, pink, silver — dark navy background
---
## Files in this repo
| File | Goes to | What it does |
|---|---|---|
| `AygeaNight.itermcolors` | double-click to install | iTerm2 color scheme |
| `tmux.conf` | `~/.tmux.conf` | tmux status bar + colors |
| `starship.toml` | `~/.config/starship.toml` | shell prompt |
| `fetch/aygeafetch.zsh` | macOS system fetch | fox + system info |
| `fetch/aygeafetch-ubuntu.sh` | Ubuntu system fetch | fox + system info |
| `fetch/aygeafetch-arch.sh` | Arch system fetch | fox + system info |
---
## Step 1 — Install a Nerd Font (required for icons)
Without this you'll see boxes or `>` instead of icons and powerline arrows in tmux and Starship.
1. Go to https://www.nerdfonts.com/font-downloads
2. Download **JetBrainsMono Nerd Font**
3. Unzip and double-click each `.ttf` file to install via Font Book
4. In iTerm2: Preferences → Profiles → Text → Font → select **JetBrainsMono Nerd Font**
- Check "Use a different font for non-ASCII text" → same font
---
## Step 2 — Install iTerm2 color scheme (macOS only)
1. Double-click `AygeaNight.itermcolors` — iTerm2 imports it automatically
2. iTerm2 → Preferences → Profiles → Colors → Color Presets → **AygeaNight**
Optional vibe tweaks:
- Profiles → Window → Transparency: ~1015%
- Profiles → Window → Blur: ~20
- Profiles → Window → Background image: drag any image, set opacity ~8%
---
## Step 3 — Set up tmux
```bash
cp tmux.conf ~/.tmux.conf
tmux kill-server
tmux
```
Reload from inside tmux any time with `Ctrl+A then R`.
---
## Step 4 — Starship prompt
### macOS (zsh)
```bash
brew install starship
mkdir -p ~/.config
cp starship.toml ~/.config/starship.toml
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
source ~/.zshrc
```
### Linux — Ubuntu
```bash
curl -sS https://starship.rs/install.sh | sh
mkdir -p ~/.config
cp starship.toml ~/.config/starship.toml
```
Add to `~/.bashrc` **above everything else**:
```bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export TERM=xterm-256color
export COLORTERM=truecolor
```
Then add starship at the **very end** of `~/.bashrc`:
```bash
eval "$(starship init bash)"
```
**Locale setup (required — fixes broken ╭─ ╰─ inside tmux):**
```bash
sudo apt-get install -y locales
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
# must fully log out and back in — source alone is not enough
tmux kill-server
tmux
```
### Linux — Arch
```bash
curl -sS https://starship.rs/install.sh | sh
mkdir -p ~/.config
cp starship.toml ~/.config/starship.toml
```
Add to `~/.bashrc` **above everything else**:
```bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export TERM=xterm-256color
export COLORTERM=truecolor
```
Then add at the **very end**:
```bash
eval "$(starship init bash)"
```
**Locale setup on Arch** (different from Ubuntu — no package needed):
```bash
sudo nano /etc/locale.gen
# uncomment this line:
# en_US.UTF-8 UTF-8
sudo locale-gen
sudo localectl set-locale LANG=en_US.UTF-8
# log out and back in
tmux kill-server
tmux
```
---
## Step 5 — Fetch Scripts (optional — system info with fox mascot)
Three self-contained fetch scripts that display a chibi white fox kitsune alongside your system info in AygeaNight brand colors. No dependencies — pure shell.
| File | Platform | Shell |
|---|---|---|
| `fetch/aygeafetch.zsh` | macOS | zsh |
| `fetch/aygeafetch-ubuntu.sh` | Ubuntu Linux | bash |
| `fetch/aygeafetch-arch.sh` | Arch Linux | bash |
### macOS (zsh)
```bash
chmod +x fetch/aygeafetch.zsh
cp fetch/aygeafetch.zsh ~/aygeafetch.zsh
```
Add to `~/.zshrc` (at the end):
```bash
aygeafetch
# or: source ~/aygeafetch.zsh
```
### Ubuntu (bash)
```bash
chmod +x fetch/aygeafetch-ubuntu.sh
sudo cp fetch/aygeafetch-ubuntu.sh /usr/local/bin/aygeafetch
```
Add to `~/.bashrc` (at the end):
```bash
aygeafetch
```
### Arch Linux (bash)
```bash
chmod +x fetch/aygeafetch-arch.sh
sudo cp fetch/aygeafetch-arch.sh /usr/local/bin/aygeafetch
```
Add to `~/.bashrc` (at the end):
```bash
aygeafetch
```
---
## Troubleshooting
**Icons showing as boxes/squares:**
→ Nerd Font not set in iTerm2. Preferences → Profiles → Text → Font.
**Powerline arrows showing as `>` or `?`:**
→ Same as above — Nerd Font required.
**╭─ ╰─ showing as `_─` or garbled in tmux:**
→ Locale not installed. Follow the locale setup steps for your distro. Must log out completely, not just source.
**tmux colors look wrong / still greenish:**
→ Run `tmux kill-server` then start fresh. Sourcing `.tmux.conf` alone doesn't always apply all color changes.
**Selection highlight invisible in tmux:**
→ Check `~/.tmux.conf` has: `set -g mode-style "fg=#0F1020,bg=#AFCBFF,bold"`
**Prompt not drawing correctly inside tmux:**
→ Make sure `TERM` and `COLORTERM` exports are at the top of `~/.bashrc` before everything else, then `tmux kill-server` and start fresh.
**Starship not loading:**
→ The eval line must be at the very END of your rc file, after all exports.
**Locale error: `cannot change locale (en_US.UTF-8)`:**
→ The locale isn't generated yet. Run the locale setup steps for your distro above.
**Mac prompt has unwanted gap between ╭─ and ╰─:**
→ Remove any blank line or trailing `\` after `$time` in `~/.config/starship.toml`.
**tmux prefix key:**
→ This config uses `Ctrl+A` instead of the tmux default `Ctrl+B`.
---
*AygeaNight — built March 2026* 🦊
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

+248
View File
@@ -0,0 +1,248 @@
#!/usr/bin/env bash
# ╭──────────────────────────────────────────────────────────────╮
# │ aygeafetch-arch.sh · AygeaNight system fetch · Arch │
# │ Fox kitsune ASCII art + system info in brand colors │
# ╰──────────────────────────────────────────────────────────────╯
#
# INSTALL:
# chmod +x fetch/aygeafetch-arch.sh
# sudo cp fetch/aygeafetch-arch.sh /usr/local/bin/aygeafetch
# Add to ~/.bashrc (at the end):
# aygeafetch
#
# REQUIREMENTS:
# - bash 4+
# - Truecolor terminal
# - A Nerd Font for best results
#
# NO EXTERNAL DEPENDENCIES - pure bash, no python/jq/neofetch
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
COLOR=0
[[ -t 1 ]] && COLOR=1
ART_W=27
GAP=3
# ── Helper: truecolor foreground escape ─────────────────────────
_c() {
[[ "$COLOR" = 1 ]] && printf '\033[38;2;%s;%s;%sm' "$1" "$2" "$3"
}
R=""
[[ "$COLOR" = 1 ]] && R=$(printf '\033[0m')
# ── Helper: visible length (strips ANSI, pure shell) ────────────
_vlen() {
local s="$1" out="" i=0 len=${#1} char skip=0
while (( i < len )); do
char="${s:$i:1}"
if (( skip )); then
case "$char" in [a-zA-Z]) skip=0 ;; esac
(( i++ )) && continue
fi
if [[ "$char" == $(printf '\033') ]]; then
skip=1
(( i++ )) && continue
fi
out="${out}${char}"
(( i++ ))
done
printf '%s' "${#out}"
}
# ── Helper: pad art line to ART_W visible chars ─────────────────
_pad() {
local vis
vis=$(_vlen "$1")
printf '%s%*s' "$1" $((ART_W - vis)) ""
}
# ── Palette shortcuts ───────────────────────────────────────────
_s=$(_c 230 238 248); _e=$(_c 15 82 186)
_b=$(_c 245 195 215); _p=$(_c 248 200 220)
_m=$(_c 216 140 168); _x=$(_c 155 135 195)
_d=$(_c 105 88 140); _f=$(_c 192 209 230)
_t1=$(_c 210 218 238); _t2=$(_c 170 182 210)
_t3=$(_c 130 145 175); _t4=$(_c 106 122 150)
# ── ASCII art (24 lines) ────────────────────────────────────────
declare -a ART
ART=()
ART+=("$(printf '%s /\\ /\\%s' "$_s" "$R")")
ART+=("$(printf '%s / \\ / \\%s' "$_s" "$R")")
ART+=("$(printf '%s / %s/\\%s\\ / %s/\\%s\\%s' "$_s" "$_p" "$_s" "$_p" "$_s" "$R")")
ART+=("$(printf '%s / %s/ \\%s\\ / %s/ \\%s\\%s' "$_s" "$_p" "$_s" "$_p" "$_s" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s* * %s|%s' "$_f" "$_b" "$_f" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s@@ @@%s %s|%s' "$_f" "$_e" "$R" "$_f" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s* * %s|%s' "$_f" "$_b" "$_f" "$R")")
ART+=("$(printf '%s | %s.w.%s %s|%s' "$_f" "$_m" "$R" "$_f" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s~~~~~~~~~~~~%s %s|%s' "$_f" "$_x" "$R" "$_f" "$R")")
ART+=("$(printf ' \\ %s*=======*%s /' "$_d" "$R")")
ART+=("$(printf ' \\ %s| |%s /' "$_f" "$R")")
ART+=("$(printf ' %s\\| |/%s' "$_f" "$R")")
ART+=("$(printf ' %s| |%s' "$_f" "$R")")
ART+=("$(printf ' %s/| |\\ %s|=====|%s %s/| |\\%s' "$_t1" "$_f" "$R" "$_t1" "$R")")
ART+=("$(printf ' %s/ | | \\ %s|=====|%s %s/ | | \\%s' "$_t1" "$_f" "$R" "$_t1" "$R")")
ART+=("$(printf '%s/ | | %s\\|====|/%s %s| | \\%s' "$_t1" "$_t2" "$R" "$_t2" "$R")")
ART+=("$(printf ' %s| | %s|====|%s %s| | \\%s' "$_t2" "$_t3" "$R" "$_t3" "$R")")
ART+=("$(printf ' %s| | %s|==|%s %s| | \\%s' "$_t3" "$_t3" "$R" "$_t3" "$R")")
ART+=("$(printf ' %s| | %s||%s %s| | \\%s' "$_t3" "$_t4" "$R" "$_t4" "$R")")
ART+=("$(printf ' %s| | \\%s' "$_t4" "$R")")
# ── Data gathering (Arch Linux) ─────────────────────────────────
get_os() {
local name=""
if [[ -f /etc/os-release ]]; then
while IFS='=' read -r key val; do
if [[ "$key" == "PRETTY_NAME" ]]; then
name="${val//\"/}"
break
fi
done < /etc/os-release
fi
printf '%s' "${name:-Arch Linux}"
}
get_kernel() {
printf '%s' "$(uname -r 2>/dev/null)" || printf 'N/A'
}
get_shell() {
printf '%s' "${SHELL##*/:-bash}"
}
get_term() {
printf '%s' "${TERM:-${COLORTERM:-N/A}}"
}
get_cpu() {
local cpu=""
if [[ -f /proc/cpuinfo ]]; then
while IFS=: read -r k v; do
if [[ "$k" == "model name"* ]]; then
cpu="${v# }"
break
fi
done < /proc/cpuinfo
fi
cpu="${cpu//(tm)/}"; cpu="${cpu//(TM)/}"
cpu="${cpu//(r)/}"; cpu="${cpu//(R)/}"
printf '%s' "${cpu:-N/A}"
}
get_gpu() {
local gpu=""
if command -v lspci >/dev/null 2>&1; then
gpu=$(lspci 2>/dev/null | grep -iE 'vga|3d|display' | head -1 | cut -d: -f3)
gpu="${gpu# }"
fi
printf '%s' "${gpu:-N/A}"
}
get_ram() {
local line used total
if line=$(free -h 2>/dev/null | grep '^Mem:'); then
read -r _ total used _ _ _ <<< "$line"
printf '%s / %s' "${used:-N/A}" "${total:-N/A}"
else
printf 'N/A'
fi
}
get_uptime() {
local s d h m
if [[ -f /proc/uptime ]]; then
s=$(awk '{printf "%d", $1}' /proc/uptime 2>/dev/null) || s=0
(( d = s / 86400 )); (( s = s % 86400 ))
(( h = s / 3600 )); (( s = s % 3600 ))
(( m = s / 60 ))
printf '%dd %dh %dm' "$d" "$h" "$m"
else
printf 'N/A'
fi
}
get_pkgs() {
local n
n=$(pacman -Qq 2>/dev/null | wc -l | tr -d ' ') || n=0
printf '%s' "${n:-N/A}"
}
get_ip() {
local ip=""
if command -v hostname >/dev/null 2>&1; then
ip=$(hostname -I 2>/dev/null | awk '{print $1}')
fi
printf '%s' "${ip:-N/A}"
}
# ── Info formatting ─────────────────────────────────────────────
LBL_W=10
_lc=$(_c 175 203 255)
_vc=$(_c 230 238 248)
_uc=$(_c 175 203 255)
_hc=$(_c 192 209 230)
_sc=$(_c 42 58 94)
_info() {
local label="$1" value="$2"
printf '%s%*s%s %s%s%s' "$_lc" "$LBL_W" "$label" "$R" "$_vc" "$value" "$R"
}
# ── Build info array ────────────────────────────────────────────
declare -a INFO
INFO=()
INFO+=("$(printf '%s%s%s@%s%s' "$_uc" "$(whoami)" "$_hc" "$(hostname -s 2>/dev/null || printf 'localhost')" "$R")")
INFO+=("$(printf '%s──────────────────────%s' "$_sc" "$R")")
INFO+=("$(_info OS "$(get_os)")")
INFO+=("$(_info Kernel "$(get_kernel)")")
INFO+=("$(_info Shell "$(get_shell)")")
INFO+=("$(_info Terminal "$(get_term)")")
INFO+=("$(_info CPU "$(get_cpu)")")
INFO+=("$(_info GPU "$(get_gpu)")")
INFO+=("$(_info RAM "$(get_ram)")")
INFO+=("$(_info Uptime "$(get_uptime)")")
INFO+=("$(_info Packages "$(get_pkgs)")")
INFO+=("$(_info IP "$(get_ip)")")
# ── Render side by side ────────────────────────────────────────
art_n=${#ART[@]}
info_n=${#INFO[@]}
info_start=4
max_lines=$art_n
needed=$((info_start + info_n))
if (( needed > max_lines )); then max_lines=$needed; fi
for (( row=0; row<max_lines; row++ )); do
if (( row < art_n )); then
_pad "${ART[$row]}"
else
printf '%*s' "$ART_W" ""
fi
printf '%*s' "$GAP" ""
idx=$(( row - info_start ))
if (( idx >= 0 && idx < info_n )); then
printf '%s\n' "${INFO[$idx]}"
else
printf '\n'
fi
done
# ── Color swatch (10 brand colors) ─────────────────────────────
printf '%*s' "$((ART_W + GAP))" ""
swatch_r=(175 248 230 106 216 192 148 90 15 8)
swatch_g=(203 200 238 143 140 209 128 72 82 59)
swatch_b=(255 220 248 211 168 230 185 120 186 137)
for (( i=0; i<10; i++ )); do
ec=$(_c ${swatch_r[$i]} ${swatch_g[$i]} ${swatch_b[$i]})
printf '%s' "$ec"
printf '\xe2\x96\x88\xe2\x96\x88'
done
printf '%s\n' "$R"
+257
View File
@@ -0,0 +1,257 @@
#!/usr/bin/env bash
# ╭──────────────────────────────────────────────────────────────╮
# │ aygeafetch-ubuntu.sh · AygeaNight system fetch · Ubuntu │
# │ Fox kitsune ASCII art + system info in brand colors │
# ╰──────────────────────────────────────────────────────────────╯
#
# INSTALL:
# chmod +x fetch/aygeafetch-ubuntu.sh
# sudo cp fetch/aygeafetch-ubuntu.sh /usr/local/bin/aygeafetch
# Add to ~/.bashrc (at the end):
# aygeafetch
#
# REQUIREMENTS:
# - bash 4+
# - Truecolor terminal
# - A Nerd Font for best results
#
# NO EXTERNAL DEPENDENCIES - pure bash, no python/jq/neofetch
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
COLOR=0
[[ -t 1 ]] && COLOR=1
ART_W=27
GAP=3
# ── Helper: truecolor foreground escape ─────────────────────────
_c() {
[[ "$COLOR" = 1 ]] && printf '\033[38;2;%s;%s;%sm' "$1" "$2" "$3"
}
R=""
[[ "$COLOR" = 1 ]] && R=$(printf '\033[0m')
# ── Helper: visible length (strips ANSI, pure shell) ────────────
_vlen() {
local s="$1" out="" i=0 len=${#1} char skip=0
while (( i < len )); do
char="${s:$i:1}"
if (( skip )); then
case "$char" in [a-zA-Z]) skip=0 ;; esac
(( i++ )) && continue
fi
if [[ "$char" == $(printf '\033') ]]; then
skip=1
(( i++ )) && continue
fi
out="${out}${char}"
(( i++ ))
done
printf '%s' "${#out}"
}
# ── Helper: pad art line to ART_W visible chars ─────────────────
_pad() {
local vis
vis=$(_vlen "$1")
printf '%s%*s' "$1" $((ART_W - vis)) ""
}
# ── Palette shortcuts ───────────────────────────────────────────
_s=$(_c 230 238 248); _e=$(_c 15 82 186)
_b=$(_c 245 195 215); _p=$(_c 248 200 220)
_m=$(_c 216 140 168); _x=$(_c 155 135 195)
_d=$(_c 105 88 140); _f=$(_c 192 209 230)
_t1=$(_c 210 218 238); _t2=$(_c 170 182 210)
_t3=$(_c 130 145 175); _t4=$(_c 106 122 150)
# ── ASCII art (24 lines) ────────────────────────────────────────
declare -a ART
ART=()
ART+=("$(printf '%s /\\ /\\%s' "$_s" "$R")")
ART+=("$(printf '%s / \\ / \\%s' "$_s" "$R")")
ART+=("$(printf '%s / %s/\\%s\\ / %s/\\%s\\%s' "$_s" "$_p" "$_s" "$_p" "$_s" "$R")")
ART+=("$(printf '%s / %s/ \\%s\\ / %s/ \\%s\\%s' "$_s" "$_p" "$_s" "$_p" "$_s" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s* * %s|%s' "$_f" "$_b" "$_f" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s@@ @@%s %s|%s' "$_f" "$_e" "$R" "$_f" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s* * %s|%s' "$_f" "$_b" "$_f" "$R")")
ART+=("$(printf '%s | %s.w.%s %s|%s' "$_f" "$_m" "$R" "$_f" "$R")")
ART+=("$(printf '%s | |%s' "$_f" "$R")")
ART+=("$(printf '%s | %s~~~~~~~~~~~~%s %s|%s' "$_f" "$_x" "$R" "$_f" "$R")")
ART+=("$(printf ' \\ %s*=======*%s /' "$_d" "$R")")
ART+=("$(printf ' \\ %s| |%s /' "$_f" "$R")")
ART+=("$(printf ' %s\\| |/%s' "$_f" "$R")")
ART+=("$(printf ' %s| |%s' "$_f" "$R")")
ART+=("$(printf ' %s/| |\\ %s|=====|%s %s/| |\\%s' "$_t1" "$_f" "$R" "$_t1" "$R")")
ART+=("$(printf ' %s/ | | \\ %s|=====|%s %s/ | | \\%s' "$_t1" "$_f" "$R" "$_t1" "$R")")
ART+=("$(printf '%s/ | | %s\\|====|/%s %s| | \\%s' "$_t1" "$_t2" "$R" "$_t2" "$R")")
ART+=("$(printf ' %s| | %s|====|%s %s| | \\%s' "$_t2" "$_t3" "$R" "$_t3" "$R")")
ART+=("$(printf ' %s| | %s|==|%s %s| | \\%s' "$_t3" "$_t3" "$R" "$_t3" "$R")")
ART+=("$(printf ' %s| | %s||%s %s| | \\%s' "$_t3" "$_t4" "$R" "$_t4" "$R")")
ART+=("$(printf ' %s| | \\%s' "$_t4" "$R")")
# ── Data gathering (Ubuntu Linux) ───────────────────────────────
get_os() {
local name=""
if [[ -f /etc/os-release ]]; then
while IFS='=' read -r key val; do
if [[ "$key" == "PRETTY_NAME" ]]; then
name="${val//\"/}"
break
fi
done < /etc/os-release
fi
printf '%s' "${name:-Ubuntu}"
}
get_kernel() {
printf '%s' "$(uname -r 2>/dev/null)" || printf 'N/A'
}
get_shell() {
printf '%s' "${SHELL##*/:-bash}"
}
get_term() {
printf '%s' "${TERM:-${COLORTERM:-N/A}}"
}
get_cpu() {
local cpu=""
if [[ -f /proc/cpuinfo ]]; then
while IFS=: read -r k v; do
if [[ "$k" == "model name"* ]]; then
cpu="${v# }"
break
fi
done < /proc/cpuinfo
fi
cpu="${cpu//(tm)/}"; cpu="${cpu//(TM)/}"
cpu="${cpu//(r)/}"; cpu="${cpu//(R)/}"
printf '%s' "${cpu:-N/A}"
}
get_gpu() {
local gpu=""
if command -v lspci >/dev/null 2>&1; then
gpu=$(lspci 2>/dev/null | grep -iE 'vga|3d|display' | head -1 | cut -d: -f3)
gpu="${gpu# }"
fi
printf '%s' "${gpu:-N/A}"
}
get_ram() {
local line used total
if line=$(free -h 2>/dev/null | grep '^Mem:'); then
read -r _ total used _ _ _ <<< "$line"
printf '%s / %s' "${used:-N/A}" "${total:-N/A}"
else
printf 'N/A'
fi
}
get_uptime() {
local s d h m
if [[ -f /proc/uptime ]]; then
s=$(awk '{printf "%d", $1}' /proc/uptime 2>/dev/null) || s=0
(( d = s / 86400 )); (( s = s % 86400 ))
(( h = s / 3600 )); (( s = s % 3600 ))
(( m = s / 60 ))
printf '%dd %dh %dm' "$d" "$h" "$m"
else
printf 'N/A'
fi
}
get_pkgs() {
local dpkg_n snap_n total
dpkg_n=$(dpkg -l 2>/dev/null | grep -c '^ii') || dpkg_n=0
if command -v snap >/dev/null 2>&1; then
snap_n=$(snap list 2>/dev/null | tail -n +2 | wc -l | tr -d ' ') || snap_n=0
else
snap_n=0
fi
total="${dpkg_n:-0}"
if [[ -n "$snap_n" ]] && (( snap_n > 0 )); then
total="${dpkg_n} (dpkg) + ${snap_n} (snap)"
fi
printf '%s' "$total"
}
get_ip() {
local ip=""
if command -v hostname >/dev/null 2>&1; then
ip=$(hostname -I 2>/dev/null | awk '{print $1}')
fi
printf '%s' "${ip:-N/A}"
}
# ── Info formatting ─────────────────────────────────────────────
LBL_W=10
_lc=$(_c 175 203 255)
_vc=$(_c 230 238 248)
_uc=$(_c 175 203 255)
_hc=$(_c 192 209 230)
_sc=$(_c 42 58 94)
_info() {
local label="$1" value="$2"
printf '%s%*s%s %s%s%s' "$_lc" "$LBL_W" "$label" "$R" "$_vc" "$value" "$R"
}
# ── Build info array ────────────────────────────────────────────
declare -a INFO
INFO=()
INFO+=("$(printf '%s%s%s@%s%s' "$_uc" "$(whoami)" "$_hc" "$(hostname -s 2>/dev/null || printf 'localhost')" "$R")")
INFO+=("$(printf '%s──────────────────────%s' "$_sc" "$R")")
INFO+=("$(_info OS "$(get_os)")")
INFO+=("$(_info Kernel "$(get_kernel)")")
INFO+=("$(_info Shell "$(get_shell)")")
INFO+=("$(_info Terminal "$(get_term)")")
INFO+=("$(_info CPU "$(get_cpu)")")
INFO+=("$(_info GPU "$(get_gpu)")")
INFO+=("$(_info RAM "$(get_ram)")")
INFO+=("$(_info Uptime "$(get_uptime)")")
INFO+=("$(_info Packages "$(get_pkgs)")")
INFO+=("$(_info IP "$(get_ip)")")
# ── Render side by side ────────────────────────────────────────
art_n=${#ART[@]}
info_n=${#INFO[@]}
info_start=4
max_lines=$art_n
needed=$((info_start + info_n))
if (( needed > max_lines )); then max_lines=$needed; fi
for (( row=0; row<max_lines; row++ )); do
if (( row < art_n )); then
_pad "${ART[$row]}"
else
printf '%*s' "$ART_W" ""
fi
printf '%*s' "$GAP" ""
idx=$(( row - info_start ))
if (( idx >= 0 && idx < info_n )); then
printf '%s\n' "${INFO[$idx]}"
else
printf '\n'
fi
done
# ── Color swatch (10 brand colors) ─────────────────────────────
printf '%*s' "$((ART_W + GAP))" ""
swatch_r=(175 248 230 106 216 192 148 90 15 8)
swatch_g=(203 200 238 143 140 209 128 72 82 59)
swatch_b=(255 220 248 211 168 230 185 120 186 137)
for (( i=0; i<10; i++ )); do
ec=$(_c ${swatch_r[$i]} ${swatch_g[$i]} ${swatch_b[$i]})
printf '%s' "$ec"
printf '\xe2\x96\x88\xe2\x96\x88'
done
printf '%s\n' "$R"
+244
View File
@@ -0,0 +1,244 @@
#!/usr/bin/env zsh
# ╭──────────────────────────────────────────────────────────────╮
# │ aygeafetch.zsh · AygeaNight system fetch · macOS │
# │ Fox kitsune ASCII art + system info in brand colors │
# ╰──────────────────────────────────────────────────────────────╯
#
# INSTALL:
# chmod +x fetch/aygeafetch.zsh
# cp fetch/aygeafetch.zsh ~/aygeafetch.zsh
# Add to ~/.zshrc (at the end):
# aygeafetch
# # or: source ~/aygeafetch.zsh
#
# REQUIREMENTS:
# - zsh (macOS default)
# - Truecolor terminal (iTerm2, Kitty, Alacritty, WezTerm)
# - A Nerd Font for best results (JetBrainsMono Nerd Font)
#
# NO EXTERNAL DEPENDENCIES - pure zsh, no python/jq/neofetch
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
COLOR=0
[[ -t 1 ]] && COLOR=1
ART_W=27
GAP=3
# ── Helper: truecolor foreground escape ─────────────────────────
_c() {
[[ "$COLOR" = 1 ]] && printf '\033[38;2;%s;%s;%sm' "$1" "$2" "$3"
}
R=""
[[ "$COLOR" = 1 ]] && R=$(printf '\033[0m')
# ── Helper: visible length (strips ANSI, pure shell) ────────────
_vlen() {
local s="$1" out="" i=1 char skip=0
local -i len=${#s}
while (( i <= len )); do
char="${s[$i]}"
if (( skip )); then
[[ "$char" =~ [a-zA-Z] ]] && skip=0
(( i++ )) && continue
fi
if [[ "$char" == $(printf '\033') ]]; then
skip=1
(( i++ )) && continue
fi
out="${out}${char}"
(( i++ ))
done
printf '%s' "${#out}"
}
# ── Helper: pad art line to ART_W visible chars ─────────────────
_pad() {
local vis
vis=$(_vlen "$1")
printf '%s%*s' "$1" $((ART_W - vis)) ""
}
# ── Palette shortcuts ───────────────────────────────────────────
_s=$(_c 230 238 248); _e=$(_c 15 82 186)
_b=$(_c 245 195 215); _p=$(_c 248 200 220)
_m=$(_c 216 140 168); _x=$(_c 155 135 195)
_d=$(_c 105 88 140); _f=$(_c 192 209 230)
_t1=$(_c 210 218 238); _t2=$(_c 170 182 210)
_t3=$(_c 130 145 175); _t4=$(_c 106 122 150)
# ── ASCII art - built with printf to avoid quoting issues ────────
typeset -a ART
ART=()
ART+=$(printf '%s /\\ /\\%s' "$_s" "$R")
ART+=$(printf '%s / \\ / \\%s' "$_s" "$R")
ART+=$(printf '%s / %s/\\%s\\ / %s/\\%s\\%s' "$_s" "$_p" "$_s" "$_p" "$_s" "$R")
ART+=$(printf '%s / %s/ \\%s\\ / %s/ \\%s\\%s' "$_s" "$_p" "$_s" "$_p" "$_s" "$R")
ART+=$(printf '%s | |%s' "$_f" "$R")
ART+=$(printf '%s | %s* * %s|%s' "$_f" "$_b" "$_f" "$R")
ART+=$(printf '%s | |%s' "$_f" "$R")
ART+=$(printf '%s | %s@@ @@%s %s|%s' "$_f" "$_e" "$R" "$_f" "$R")
ART+=$(printf '%s | |%s' "$_f" "$R")
ART+=$(printf '%s | %s* * %s|%s' "$_f" "$_b" "$_f" "$R")
ART+=$(printf '%s | %s.w.%s %s|%s' "$_f" "$_m" "$R" "$_f" "$R")
ART+=$(printf '%s | |%s' "$_f" "$R")
ART+=$(printf '%s | %s~~~~~~~~~~~~%s %s|%s' "$_f" "$_x" "$R" "$_f" "$R")
ART+=$(printf ' \\ %s*=======*%s /' "$_d" "$R")
ART+=$(printf ' \\ %s| |%s /' "$_f" "$R")
ART+=$(printf ' %s\\| |/%s' "$_f" "$R")
ART+=$(printf ' %s| |%s' "$_f" "$R")
ART+=$(printf ' %s/| |\\ %s|=====|%s %s/| |\\%s' "$_t1" "$_f" "$R" "$_t1" "$R")
ART+=$(printf ' %s/ | | \\ %s|=====|%s %s/ | | \\%s' "$_t1" "$_f" "$R" "$_t1" "$R")
ART+=$(printf '%s/ | | %s\\|====|/%s %s| | \\%s' "$_t1" "$_t2" "$R" "$_t2" "$R")
ART+=$(printf ' %s| | %s|====|%s %s| | \\%s' "$_t2" "$_t3" "$R" "$_t3" "$R")
ART+=$(printf ' %s| | %s|==|%s %s| | \\%s' "$_t3" "$_t3" "$R" "$_t3" "$R")
ART+=$(printf ' %s| | %s||%s %s| | \\%s' "$_t3" "$_t4" "$R" "$_t4" "$R")
ART+=$(printf ' %s| | \\%s' "$_t4" "$R")
# ── Data gathering (macOS) ──────────────────────────────────────
get_os() {
local name ver
name=$(sw_vers -productName 2>/dev/null) || name="macOS"
ver=$(sw_vers -productVersion 2>/dev/null) || ver=""
printf '%s %s' "$name" "$ver"
}
get_kernel() {
local k
k=$(uname -r 2>/dev/null) || k="N/A"
printf '%s' "$k"
}
get_shell() {
local sh="${SHELL:t}"
printf '%s' "${sh:-zsh}"
}
get_term() {
printf '%s' "${TERM_PROGRAM:-${TERM:-N/A}}"
}
get_cpu() {
local cpu
cpu=$(sysctl -n machdep.cpu.brand_string 2>/dev/null) || cpu=""
[[ -z "$cpu" ]] && cpu="Apple Silicon"
cpu="${cpu//(tm)/}"; cpu="${cpu//(TM)/}"
cpu="${cpu//(r)/}"; cpu="${cpu//(R)/}"
printf '%s' "$cpu"
}
get_gpu() {
local gpu
gpu=$(system_profiler SPDisplaysDataType 2>/dev/null \
| grep 'Chipset Model' | head -1 \
| sed 's/.*: *//')
printf '%s' "${gpu:-N/A}"
}
get_ram() {
local pagesize total wired active comp used
pagesize=$(sysctl -n hw.pagesize 2>/dev/null) || pagesize=4096
total=$(sysctl -n hw.memsize 2>/dev/null) || total=0
wired=$(vm_stat 2>/dev/null | grep 'Pages wired down' | sed 's/[^0-9]//g') || wired=0
active=$(vm_stat 2>/dev/null | grep 'Pages active' | sed 's/[^0-9]//g') || active=0
comp=$(vm_stat 2>/dev/null | grep 'Pages occupied by compressor' | sed 's/[^0-9]//g') || comp=0
used=$(( (wired + active + comp) * pagesize ))
if (( total > 0 )); then
printf '%dM / %dM' $((used / 1048576)) $((total / 1048576))
else
printf 'N/A'
fi
}
get_uptime() {
local boot s d h m
boot=$(sysctl -n kern.boottime 2>/dev/null) || boot=""
boot=${boot#*=}
boot=${boot%,*}
[[ -z "$boot" ]] && { printf 'N/A'; return; }
(( s = $(date +%s) - boot ))
(( d = s / 86400 )); (( s = s % 86400 ))
(( h = s / 3600 )); (( s = s % 3600 ))
(( m = s / 60 ))
printf '%dd %dh %dm' "$d" "$h" "$m"
}
get_pkgs() {
local n
n=$(brew list --formula 2>/dev/null | wc -l | tr -d ' ')
printf '%s' "${n:-N/A}"
}
get_ip() {
local ip
ip=$(ipconfig getifaddr en0 2>/dev/null) || ip=""
[[ -z "$ip" ]] && ip=$(ipconfig getifaddr en1 2>/dev/null) || ip=""
printf '%s' "${ip:-N/A}"
}
# ── Info formatting ─────────────────────────────────────────────
LBL_W=10
_lc=$(_c 175 203 255)
_vc=$(_c 230 238 248)
_uc=$(_c 175 203 255)
_hc=$(_c 192 209 230)
_sc=$(_c 42 58 94)
_info() {
local label="$1" value="$2"
printf '%s%*s%s %s%s%s' "$_lc" "$LBL_W" "$label" "$R" "$_vc" "$value" "$R"
}
# ── Build info array ────────────────────────────────────────────
typeset -a INFO
INFO=()
INFO+=$(printf '%s%s%s@%s%s' "$_uc" "$(whoami)" "$_hc" "$(hostname -s 2>/dev/null || printf 'localhost')" "$R")
INFO+=$(printf '%s──────────────────────%s' "$_sc" "$R")
INFO+=$(_info OS "$(get_os)")
INFO+=$(_info Kernel "$(get_kernel)")
INFO+=$(_info Shell "$(get_shell)")
INFO+=$(_info Terminal "$(get_term)")
INFO+=$(_info CPU "$(get_cpu)")
INFO+=$(_info GPU "$(get_gpu)")
INFO+=$(_info RAM "$(get_ram)")
INFO+=$(_info Uptime "$(get_uptime)")
INFO+=$(_info Packages "$(get_pkgs)")
INFO+=$(_info IP "$(get_ip)")
# ── Render side by side ────────────────────────────────────────
art_n=${#ART}
info_n=${#INFO}
info_start=4
max_lines=$art_n
needed=$((info_start + info_n))
if (( needed > max_lines )); then max_lines=$needed; fi
for (( row=1; row<=max_lines; row++ )); do
if (( row <= art_n )); then
_pad "${ART[$row]}"
else
printf '%*s' "$ART_W" ""
fi
printf '%*s' "$GAP" ""
idx=$(( row - info_start ))
if (( idx >= 1 && idx <= info_n )); then
printf '%s\n' "${INFO[$idx]}"
else
printf '\n'
fi
done
# ── Color swatch (10 brand colors) ─────────────────────────────
printf '%*s' "$((ART_W + GAP))" ""
swatch_r=(175 248 230 106 216 192 148 90 15 8)
swatch_g=(203 200 238 143 140 209 128 72 82 59)
swatch_b=(255 220 248 211 168 230 185 120 186 137)
for (( i=1; i<=10; i++ )); do
ec=$(_c ${swatch_r[$i]} ${swatch_g[$i]} ${swatch_b[$i]})
printf '%s' "$ec"
printf '\xe2\x96\x88\xe2\x96\x88'
done
printf '%s\n' "$R"
+203
View File
@@ -0,0 +1,203 @@
# ╭──────────────────────────────────────────────────────────────╮
# │ ~/.config/starship.toml · AygeaNight prompt · 🦊 │
# ╰──────────────────────────────────────────────────────────────╯
#
# INSTALL:
# 1. Install starship: brew install starship
# 2. Add to ~/.zshrc: eval "$(starship init zsh)"
# 3. Copy this file: mkdir -p ~/.config && cp starship.toml ~/.config/starship.toml
#
# FONT: Requires a Nerd Font for icons to render correctly
# https://www.nerdfonts.com/font-downloads
# Set the Nerd Font in iTerm2 → Preferences → Profiles → Text → Font
# ── Global ──────────────────────────────────────────────────────
add_newline = true
command_timeout = 1000
# Prompt format — two lines
# Line 1: fox icon · directory · git · lang versions · status
# Line 2: the actual input character
format = """
[╭─](bold color:#2A3A5E)\
$os\
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$git_state\
$nodejs\
$python\
$rust\
$golang\
$docker_context\
$cmd_duration\
$fill\
$time
[╰─](bold color:#2A3A5E)$character"""
# ── OS icon ─────────────────────────────────────────────────────
[os]
disabled = false
format = "[$symbol](bold fg:#6A8FD3) "
[os.symbols]
Macos = ""
Linux = ""
Ubuntu = ""
Arch = ""
Windows = ""
# ── Username ─────────────────────────────────────────────────────
[username]
show_always = false
format = "[$user](bold fg:#AFCBFF)[@](fg:#C0D1E6)"
# ── Hostname ─────────────────────────────────────────────────────
[hostname]
ssh_only = false
format = "[$hostname](bold fg:#DDEEFF) "
trim_at = "."
# ── Directory ────────────────────────────────────────────────────
[directory]
format = "[ $path]($style)[$read_only]($read_only_style) "
style = "bold fg:#AFCBFF"
read_only = " 󰌾"
read_only_style = "fg:#D88CA8"
truncation_length = 4
truncation_symbol = "…/"
home_symbol = "~"
[directory.substitutions]
"Documents" = "󰈙 "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
"Desktop" = " "
"Developer" = " "
# ── Git branch ───────────────────────────────────────────────────
[git_branch]
format = "[ $symbol$branch(:$remote_branch)]($style) "
symbol = " "
style = "bold fg:#D88CA8"
truncation_length = 20
truncation_symbol = "…"
# ── Git status ───────────────────────────────────────────────────
[git_status]
format = "([$all_status$ahead_behind]($style) )"
style = "fg:#F8C8DC"
conflicted = "⚡"
ahead = "⇡${count}"
behind = "⇣${count}"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
up_to_date = "✓"
untracked = "?${count}"
stashed = "󰏗 "
modified = "!${count}"
staged = "+${count}"
renamed = "»${count}"
deleted = "✘${count}"
# ── Git state (rebasing, merging etc.) ───────────────────────────
[git_state]
format = "[$state($progress_current/$progress_total)]($style) "
style = "bold fg:#C9B8E8"
# ── Node.js ──────────────────────────────────────────────────────
[nodejs]
format = "[ $version]($style) "
style = "fg:#A8D8F0"
detect_files = ["package.json", ".nvmrc", ".node-version"]
# ── Python ───────────────────────────────────────────────────────
[python]
format = "[ ${pyenv_prefix}$version($virtualenv)]($style) "
style = "fg:#A8D8F0"
# ── Rust ─────────────────────────────────────────────────────────
[rust]
format = "[ $version]($style) "
style = "fg:#D88CA8"
# ── Go ───────────────────────────────────────────────────────────
[golang]
format = "[ $version]($style) "
style = "fg:#A8D8F0"
# ── Docker ───────────────────────────────────────────────────────
[docker_context]
format = "[ $context]($style) "
style = "fg:#6A8FD3"
only_with_files = true
# ── Command duration ─────────────────────────────────────────────
[cmd_duration]
format = "[ $duration]($style) "
style = "fg:#C0D1E6"
min_time = 2_000
show_milliseconds = false
# ── Fill (pushes time to the right) ──────────────────────────────
[fill]
symbol = " "
# ── Time (right side) ────────────────────────────────────────────
[time]
disabled = false
format = "[$time]($style) "
style = "fg:#3B4A75"
time_format = "%H:%M"
# ── Prompt character ─────────────────────────────────────────────
# Success: sapphire Error: pink
[character]
success_symbol = "[](bold fg:#6A8FD3)"
error_symbol = "[](bold fg:#D88CA8)"
vimcmd_symbol = "[](bold fg:#C9B8E8)"
# ── Status (exit code) ───────────────────────────────────────────
[status]
disabled = false
format = "[$symbol$status]($style) "
style = "fg:#D88CA8"
symbol = "✘ "
success_symbol = ""
not_executable_symbol = " "
not_found_symbol = "󰍉 "
sigint_symbol = "󰂭 "
signal_symbol = "󱐋 "
# ── Package version ──────────────────────────────────────────────
[package]
format = "[ $version]($style) "
style = "fg:#6A8FD3"
# ── Memory usage (optional — uncomment to show) ──────────────────
# [memory_usage]
# disabled = false
# format = "[$symbol ${ram_pct}]($style) "
# style = "fg:#C0D1E6"
# symbol = "󰍛 "
# threshold = 70
# ── Battery ──────────────────────────────────────────────────────
[battery]
full_symbol = "󰁹 "
charging_symbol = "󰂄 "
discharging_symbol = "󰂀 "
[[battery.display]]
threshold = 20
style = "bold fg:#D88CA8"
[[battery.display]]
threshold = 50
style = "fg:#C0D1E6"
[[battery.display]]
threshold = 100
style = "fg:#6A8FD3"
+166
View File
@@ -0,0 +1,166 @@
# ╭──────────────────────────────────────────────────────────────╮
# │ ~/.tmux.conf · AygeaNight theme · 🦊 │
# │ Tokyo Night base · Aygea brand accent colors │
# ╰──────────────────────────────────────────────────────────────╯
#
# INSTALL:
# cp tmux.conf ~/.tmux.conf
# tmux source ~/.tmux.conf (or restart tmux)
#
# REQUIREMENTS:
# - tmux 3.2+ (for truecolor support)
# - A Nerd Font in iTerm2 for the separators and icons
# Recommended: JetBrainsMono Nerd Font or Hack Nerd Font
# Download: https://www.nerdfonts.com/font-downloads
# Set in: iTerm2 → Preferences → Profiles → Text → Font
# - Optional: tmux plugin manager (tpm) for plugins section at bottom
# ── General ─────────────────────────────────────────────────────
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB" # truecolor
set -ag terminal-overrides ",alacritty:RGB"
set -g mouse on # mouse support
set -g base-index 1 # windows from 1
set -g pane-base-index 1
set -g renumber-windows on
set -g history-limit 50000
set -g escape-time 0 # no ESC delay (important for vim/nvim)
set -g focus-events on
set -g set-clipboard on
set -g allow-passthrough on # OSC 52 clipboard over SSH
set -g extended-keys on
set -q -g status-utf8 on
set -wq -g utf8 on
# ── Prefix ──────────────────────────────────────────────────────
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# ── Split panes (intuitive keys) ────────────────────────────────
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
unbind '"'
unbind %
# ── Pane navigation (vim-style) ──────────────────────────────────
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# ── Pane resizing ────────────────────────────────────────────────
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# ── Reload config ────────────────────────────────────────────────
bind r source-file ~/.tmux.conf \; display "🦊 tmux reloaded!"
# ═══════════════════════════════════════════════════════════════
# COLORS — AygeaNight Palette
# Tokyo Night base (#0F1020 bg) + Aygea brand accents
# ═══════════════════════════════════════════════════════════════
# Brand hex references (used in #[fg=...] below):
# Baby Blue: #AFCBFF Baby Blue Dark: #6A8FD3
# Deep Sapphire: #0F52BA Sapphire Dark: #083B89
# Soft Pink: #F8C8DC Pink Dark: #D88CA8
# Silver: #E6EEF8 Silver Dark: #C0D1E6
# Navy: #2A3A5E Navy Dark: #1B2438
# BG: #0F1020 (Tokyo Night base, blue-shifted)
bg_base="#0F1020"
bg_panel="#1B2438"
bg_active="#2A3A5E"
fg_main="#C0D1E6"
fg_dim="#3B4A75"
col_active="#AFCBFF"
col_pink="#D88CA8"
col_sapphire="#0F52BA"
col_accent="#6A8FD3"
col_sep="#2A3A5E"
# ── Pane borders ────────────────────────────────────────────────
set -g pane-border-style "fg=#2A3A5E"
set -g pane-active-border-style "fg=#6A8FD3"
# ── Message / command bar ────────────────────────────────────────
set -g message-style "fg=#AFCBFF,bg=#1B2438,bold"
set -g message-command-style "fg=#D88CA8,bg=#1B2438"
# ── Copy mode ───────────────────────────────────────────────────
set -g mode-style "fg=#0F1020,bg=#AFCBFF"
# ── Status bar — global ──────────────────────────────────────────
set -g status on
set -g status-position top
set -g status-interval 5
set -g status-justify left
set -g status-style "fg=#C0D1E6,bg=#0F1020"
# ── Status LEFT — session badge ──────────────────────────────────
# 🦊 [session-name]
set -g status-left-length 40
set -g status-left "\
#[fg=#0F1020,bg=#AFCBFF,bold] 🦊 \
#[fg=#0F1020,bg=#AFCBFF,bold]#{session_name} \
#[fg=#AFCBFF,bg=#2A3A5E,nobold]\
#[fg=#6A8FD3,bg=#2A3A5E] \
#[fg=#2A3A5E,bg=#0F1020]\
#[fg=#3B4A75,bg=#0F1020] "
# ── Window list (center) ─────────────────────────────────────────
set -g window-status-separator ""
# Inactive window
set -g window-status-format "\
#[fg=#0F1020,bg=#0F1020] \
#[fg=#3B4A75,bg=#1B2438] #I \
#[fg=#C0D1E6,bg=#1B2438]#W \
#[fg=#1B2438,bg=#0F1020]"
# Active window — baby blue highlight
set -g window-status-current-format "\
#[fg=#0F1020,bg=#0F1020]\
#[fg=#0F1020,bg=#6A8FD3,bold] #I \
#[fg=#0F1020,bg=#AFCBFF,bold]#W \
#[fg=#AFCBFF,bg=#0F1020,nobold]"
# Window with activity
set -g window-status-activity-style "fg=#D88CA8,bg=#1B2438"
set -g window-status-bell-style "fg=#F8C8DC,bg=#1B2438,bold"
# ── Status RIGHT — system info ───────────────────────────────────
set -g status-right-length 120
set -g status-right "\
#[fg=#2A3A5E,bg=#0F1020]\
#[fg=#C0D1E6,bg=#2A3A5E] #(whoami) \
#[fg=#1B2438,bg=#2A3A5E]\
#[fg=#6A8FD3,bg=#1B2438,bold] \
#[fg=#AFCBFF,bg=#1B2438]%H:%M \
#[fg=#6A8FD3,bg=#1B2438] ⁞ \
#[fg=#C0D1E6,bg=#1B2438]%a %d %b \
#[fg=#0F52BA,bg=#1B2438]\
#[fg=#E6EEF8,bg=#0F52BA,bold] ♡ "
# ── Clock mode ───────────────────────────────────────────────────
set -g clock-mode-colour "#AFCBFF"
set -g clock-mode-style 24
# ═══════════════════════════════════════════════════════════════
# PLUGINS (optional — requires tpm)
# Install tpm first:
# git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# Then press prefix + I to install plugins
# ═══════════════════════════════════════════════════════════════
# set -g @plugin 'tmux-plugins/tpm'
# set -g @plugin 'tmux-plugins/tmux-sensible'
# set -g @plugin 'tmux-plugins/tmux-resurrect' # save/restore sessions
# set -g @plugin 'tmux-plugins/tmux-continuum' # auto-save sessions
# set -g @continuum-restore 'on'
# run '~/.tmux/plugins/tpm/tpm'