commit 0481603e6293443a946fbd7d594cd1145214f4f1 Author: Aygea Date: Sat Mar 28 20:18:37 2026 -0700 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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..43e15a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Font files — download separately from nerdfonts.com +fonts/ + +# macOS +.DS_Store diff --git a/AygeaNight.itermcolors b/AygeaNight.itermcolors new file mode 100644 index 0000000..a01b068 --- /dev/null +++ b/AygeaNight.itermcolors @@ -0,0 +1,251 @@ + + + + + + + + + + Ansi 0 Color + + Color SpacesRGB + Red Component 0.10 + Green Component0.11 + Blue Component 0.16 + + + + Ansi 1 Color + + Color SpacesRGB + Red Component 0.42 + Green Component0.10 + Blue Component 0.23 + + + + Ansi 2 Color + + Color SpacesRGB + Red Component 0.10 + Green Component0.29 + Blue Component 0.35 + + + + Ansi 3 Color + + Color SpacesRGB + Red Component 0.60 + Green Component0.55 + Blue Component 0.78 + + + + Ansi 4 Color + + Color SpacesRGB + Red Component 0.059 + Green Component0.322 + Blue Component 0.729 + + + + Ansi 5 Color + + Color SpacesRGB + Red Component 0.780 + Green Component0.549 + Blue Component 0.659 + + + + Ansi 6 Color + + Color SpacesRGB + Red Component 0.459 + Green Component0.722 + Blue Component 0.878 + + + + Ansi 7 Color + + Color SpacesRGB + Red Component 0.780 + Green Component0.820 + Blue Component 0.878 + + + + Ansi 8 Color + + Color SpacesRGB + Red Component 0.165 + Green Component0.227 + Blue Component 0.369 + + + + Ansi 9 Color + + Color SpacesRGB + Red Component 0.769 + Green Component0.447 + Blue Component 0.541 + + + + Ansi 10 Color + + Color SpacesRGB + Red Component 0.157 + Green Component0.490 + Blue Component 0.576 + + + + Ansi 11 Color + + Color SpacesRGB + Red Component 0.788 + Green Component0.722 + Blue Component 0.910 + + + + Ansi 12 Color + + Color SpacesRGB + Red Component 0.686 + Green Component0.796 + Blue Component 1.000 + + + + Ansi 13 Color + + Color SpacesRGB + Red Component 0.941 + Green Component0.776 + Blue Component 0.859 + + + + Ansi 14 Color + + Color SpacesRGB + Red Component 0.867 + Green Component0.933 + Blue Component 1.000 + + + + Ansi 15 Color + + Color SpacesRGB + Red Component 0.957 + Green Component0.973 + Blue Component 1.000 + + + + + + Background Color + + Color SpacesRGB + Red Component 0.063 + Green Component0.071 + Blue Component 0.118 + + + + Foreground Color + + Color SpacesRGB + Red Component 0.753 + Green Component0.820 + Blue Component 0.902 + + + + Bold Color + + Color SpacesRGB + Red Component 0.957 + Green Component0.973 + Blue Component 1.000 + + + + Cursor Color + + Color SpacesRGB + Red Component 0.686 + Green Component0.796 + Blue Component 1.000 + + + + Cursor Text Color + + Color SpacesRGB + Red Component 0.063 + Green Component0.071 + Blue Component 0.118 + + + + Selection Color + + Color SpacesRGB + Red Component 0.106 + Green Component0.141 + Blue Component 0.220 + + + + Selected Text Color + + Color SpacesRGB + Red Component 0.957 + Green Component0.973 + Blue Component 1.000 + + + + Link Color + + Color SpacesRGB + Red Component 0.290 + Green Component0.565 + Blue Component 0.886 + + + + Tab Color + + Color SpacesRGB + Red Component 0.063 + Green Component0.071 + Blue Component 0.118 + + + Badge Color + + Color SpacesRGB + Red Component 0.686 + Green Component0.796 + Blue Component 1.000 + Alpha Component0.6 + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..5bcbef3 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# AygeaNight + +Tokyo Night base with Aygea brand accent colors. Baby blue, sapphire, pink, silver on dark navy. + +AygeaNight tmux theme + +> **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` diff --git a/TERMINAL-SETUP.md b/TERMINAL-SETUP.md new file mode 100644 index 0000000..757f4c9 --- /dev/null +++ b/TERMINAL-SETUP.md @@ -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: ~10–15% +- 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* 🦊 diff --git a/assets/tmux.png b/assets/tmux.png new file mode 100644 index 0000000..94ac8f8 Binary files /dev/null and b/assets/tmux.png differ diff --git a/fetch/aygeafetch-arch.sh b/fetch/aygeafetch-arch.sh new file mode 100644 index 0000000..bc0845d --- /dev/null +++ b/fetch/aygeafetch-arch.sh @@ -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= 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" diff --git a/fetch/aygeafetch-ubuntu.sh b/fetch/aygeafetch-ubuntu.sh new file mode 100644 index 0000000..7455093 --- /dev/null +++ b/fetch/aygeafetch-ubuntu.sh @@ -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= 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" diff --git a/fetch/aygeafetch.zsh b/fetch/aygeafetch.zsh new file mode 100644 index 0000000..8133e64 --- /dev/null +++ b/fetch/aygeafetch.zsh @@ -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" diff --git a/starship.toml b/starship.toml new file mode 100644 index 0000000..a7a93b3 --- /dev/null +++ b/starship.toml @@ -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" diff --git a/tmux.conf b/tmux.conf new file mode 100644 index 0000000..cb0d870 --- /dev/null +++ b/tmux.conf @@ -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'