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:
@@ -0,0 +1,5 @@
|
||||
# Font files — download separately from nerdfonts.com
|
||||
fonts/
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
@@ -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>
|
||||
@@ -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`
|
||||
@@ -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* 🦊
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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
@@ -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"
|
||||
@@ -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'
|
||||
Reference in New Issue
Block a user