feat: violet-chaton v2 — palette originale, kitty, AGS, Maple Mono NF

Refonte complete du rice. Palette 100% originale (Mitsuri Kanroji inspired),
zero emprunt Dracula/Catppuccin. 50 fichiers, 3200+ lignes.

Palette v2:
- palette.sh source de verite unique (dark + light)
- 5 accents (magenta, lilac, mitsuri, lavande, champagne)
- 4 semantiques derivees, 4 niveaux texte, 6 fonds
- Gradient signature: magenta → lilac → lavande → mitsuri
- Variante Light: fonds lavande, accents assombris WCAG

Terminal:
- kitty (remplace COSMIC Term comme principal)
- Maple Mono NF (cursive italics, ligatures)
- Cursor trail magenta, splits/layouts tiling, undercurl
- Vi-mode zsh avec cursor shape adaptatif

Shell:
- starship 3 lignes (palette nommee, brain_name, battery, sudo)
- zshrc v2 (nouveaux outils, fzf pimp, shell functions, vi-mode)
- Commandes custom: proj, glog, fkill, colors, hotkeys, weather, y

Desktop:
- AGS config (bar 3-pills, OSD gradient, launcher, notifications)
- COSMIC Dark + Light v2 (7 fichiers RON chacun)
- COSMIC Term v2 (color schemes dark/light, Maple Mono NF)
- GTK3/GTK4 dark + light css
- Vivaldi theme v2

Outils:
- +kitty +dust +procs +tokei +sd +hyperfine +gping +Maple Mono NF
- Propagation palette sur: bat, btop, cava, yazi, lazygit, rofi,
  delta, fastfetch, atuin, ls-colors, vivaldi
- Claude Code statusline brain-aware

Docs:
- README v2 complet (palette, structure, raccourcis, commandes)
- help.md v2 (reference exhaustive)
This commit is contained in:
Tetardtek-Cortex
2026-03-26 03:57:18 +01:00
parent 7d4d54c5b8
commit 7e9d12e640
50 changed files with 3250 additions and 1633 deletions

View File

@@ -27,18 +27,19 @@ PACKAGES=(
btop
# atuin → installé via son propre script (voir 02-packages-manual.sh)
# starship → installé via son propre script (voir 02-packages-manual.sh)
# ── Waybar + launcher + dépendances ──────────────────────────────────────
waybar
wob
wofi
# ── AGS + deps (remplace waybar/wob/wofi) ─────────────────────────────────
brightnessctl
playerctl
wireplumber
python3-gi
gir1.2-gtk-3.0
gir1.2-gtklayershell-0.1
gir1.2-gdkpixbuf-2.0
gir1.2-pango-1.0
libgtk-layer-shell-dev
libpulse-dev
libdbusmenu-gtk3-dev
# Rofi reste en backup launcher (AGS launcher = principal)
rofi
# ── Fun & utils ──────────────────────────────────────────────────────────
cmatrix
toilet

View File

@@ -131,6 +131,135 @@ else
chmod +x "$BIN/pipes.sh" && ok "pipes.sh" || fail "pipes.sh"
fi
# dust (remplace ncdu/du)
if has_cmd dust; then
ok "dust (déjà installé)"
else
DUST_VER=$(github_latest_tag "bootandy/dust")
if [ -z "$DUST_VER" ]; then
fail "dust — version introuvable"
else
install_binary "dust" \
"https://github.com/bootandy/dust/releases/download/${DUST_VER}/dust-${DUST_VER}-x86_64-unknown-linux-musl.tar.gz" \
"tar:dust"
fi
fi
# procs (remplace ps)
if has_cmd procs; then
ok "procs (déjà installé)"
else
PROCS_VER=$(github_latest_tag "dalance/procs")
if [ -z "$PROCS_VER" ]; then
fail "procs — version introuvable"
else
install_binary "procs" \
"https://github.com/dalance/procs/releases/download/${PROCS_VER}/procs-${PROCS_VER}-x86_64-linux.zip" \
"zip:procs"
fi
fi
# tokei (stats code par langage) — v12 car v13+ n'a plus de binaires pre-compiles
if has_cmd tokei; then
ok "tokei (déjà installé)"
else
install_binary "tokei" \
"https://github.com/XAMPPRocky/tokei/releases/download/v12.1.2/tokei-x86_64-unknown-linux-musl.tar.gz" \
"tar:tokei"
fi
# sd (remplace sed simplifié)
if has_cmd sd; then
ok "sd (déjà installé)"
else
SD_VER=$(github_latest_tag "chmln/sd")
if [ -z "$SD_VER" ]; then
fail "sd — version introuvable"
else
install_binary "sd" \
"https://github.com/chmln/sd/releases/download/${SD_VER}/sd-${SD_VER}-x86_64-unknown-linux-musl.tar.gz" \
"tar:sd"
fi
fi
# hyperfine (benchmarks CLI)
if has_cmd hyperfine; then
ok "hyperfine (déjà installé)"
else
HF_VER=$(github_latest_tag "sharkdp/hyperfine")
if [ -z "$HF_VER" ]; then
fail "hyperfine — version introuvable"
else
install_binary "hyperfine" \
"https://github.com/sharkdp/hyperfine/releases/download/${HF_VER}/hyperfine-${HF_VER}-x86_64-unknown-linux-musl.tar.gz" \
"tar:hyperfine"
fi
fi
# gping (ping avec graphe)
if has_cmd gping; then
ok "gping (déjà installé)"
else
GPING_VER=$(github_latest_tag "orf/gping")
if [ -z "$GPING_VER" ]; then
fail "gping — version introuvable"
else
install_binary "gping" \
"https://github.com/orf/gping/releases/download/${GPING_VER}/gping-Linux-musl-x86_64.tar.gz" \
"tar:gping"
fi
fi
section "AGS (Aylur's GTK Shell — barre + OSD + launcher + notifs)"
if has_cmd ags; then
ok "ags (deja installe)"
else
step "Installation de AGS depuis source..."
tmp=$(mktemp -d)
AGS_VER=$(github_latest_tag "Aylur/ags")
if [ -z "$AGS_VER" ]; then
warn "ags — version introuvable — a installer manuellement"
else
if git clone --depth 1 --branch "$AGS_VER" https://github.com/Aylur/ags.git "$tmp/ags" &>/dev/null; then
if cd "$tmp/ags" && npm install &>/dev/null && npm run build &>/dev/null; then
cp "$tmp/ags/ags" "$BIN/ags" 2>/dev/null && chmod +x "$BIN/ags" 2>/dev/null
if [ -x "$BIN/ags" ]; then
ok "ags"
else
warn "ags — build OK mais binaire non trouve. Install manuelle recommandee :"
info " git clone https://github.com/Aylur/ags && cd ags && npm i && npm run build"
fi
else
warn "ags — build echoue. Install manuelle recommandee :"
info " git clone https://github.com/Aylur/ags && cd ags && npm i && npm run build"
fi
cd - &>/dev/null
else
warn "ags — clone echoue"
fi
fi
rm -rf "$tmp"
fi
section "kitty (terminal GPU-accelerated)"
if has_cmd kitty; then
ok "kitty (deja installe)"
else
step "Installation de kitty..."
if curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin launch=n &>/dev/null; then
ln -sf "$HOME/.local/kitty.app/bin/kitty" "$HOME/.local/bin/kitty"
ln -sf "$HOME/.local/kitty.app/bin/kitten" "$HOME/.local/bin/kitten"
# Desktop file pour le launcher
cp "$HOME/.local/kitty.app/share/applications/kitty.desktop" \
"$HOME/.local/share/applications/" 2>/dev/null
sed -i "s|Icon=kitty|Icon=$HOME/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png|g" \
"$HOME/.local/share/applications/kitty.desktop" 2>/dev/null
ok "kitty"
else
fail "kitty"
fi
fi
section "starship (prompt)"
if has_cmd starship; then
ok "starship (déjà installé)"
@@ -188,7 +317,7 @@ else
fi
# ── Nerd Fonts ─────────────────────────────────────────────────────────────────
section "Nerd Fonts (JetBrainsMono NL + 0xProto)"
section "Nerd Fonts (Maple Mono NF + JetBrainsMono NL + 0xProto)"
FONTS_DIR="$HOME/.local/share/fonts/NerdFonts"
ensure_dir "$FONTS_DIR"
@@ -213,6 +342,9 @@ install_font() {
rm -rf "$tmp"
}
install_font "Maple Mono NF" \
"https://github.com/subframe7536/maple-font/releases/latest/download/MapleMono-NF.zip" \
"MapleMono-NF-Regular.ttf"
install_font "JetBrainsMono NL" \
"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip" \
"JetBrainsMonoNLNerdFont-Regular.ttf"

View File

@@ -51,6 +51,10 @@ fi
# ── Configs outils ─────────────────────────────────────────────────────────────
section "Configs outils"
deploy_file "$CONFIGS/starship.toml" "$HOME/.config/starship.toml"
deploy_file "$CONFIGS/kitty.conf" "$HOME/.config/kitty/kitty.conf"
if [ -f "$CONFIGS/kitty/violet-chaton-glow.glsl" ]; then
deploy_file "$CONFIGS/kitty/violet-chaton-glow.glsl" "$HOME/.config/kitty/violet-chaton-glow.glsl"
fi
deploy_file "$CONFIGS/bat.conf" "$HOME/.config/bat/config"
deploy_file "$CONFIGS/btop.conf" "$HOME/.config/btop/btop.conf"
deploy_file "$CONFIGS/fastfetch.jsonc" "$HOME/.config/fastfetch/config.jsonc"
@@ -128,14 +132,20 @@ fi
# ── GTK3 / GTK4 — thème violet-chaton ─────────────────────────────────────
section "GTK — thème violet-chaton"
step "Thème GTK3 (adw-gtk3-dark + couleurs violet-chaton)..."
step "Thème GTK3 dark (adw-gtk3-dark + couleurs violet-chaton)..."
ensure_dir "$HOME/.config/gtk-3.0"
deploy_file "$THEMES/violet-chaton-gtk.css" "$HOME/.config/gtk-3.0/gtk.css"
step "Thème GTK4 / libadwaita (couleurs violet-chaton)..."
step "Thème GTK3 light..."
deploy_file "$THEMES/violet-chaton-gtk-light.css" "$HOME/.config/gtk-3.0/gtk-light.css"
step "Thème GTK4 / libadwaita dark..."
ensure_dir "$HOME/.config/gtk-4.0"
deploy_file "$THEMES/violet-chaton-gtk.css" "$HOME/.config/gtk-4.0/gtk.css"
step "Thème GTK4 / libadwaita light..."
deploy_file "$THEMES/violet-chaton-gtk-light.css" "$HOME/.config/gtk-4.0/gtk-light.css"
step "Activation adw-gtk3-dark + dark mode (gsettings)..."
if has_cmd gsettings; then
gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3-dark' 2>/dev/null && \
@@ -246,105 +256,59 @@ PYEOF
fi
fi
# ── Waybar ─────────────────────────────────────────────────────────────────────
section "Waybar — island floating 3 pills"
deploy_file "$CONFIGS/waybar/config" "$HOME/.config/waybar/config"
deploy_file "$THEMES/violet-chaton-waybar.css" "$HOME/.config/waybar/style.css"
deploy_file "$CONFIGS/waybar/cava-waybar.cfg" "$HOME/.config/waybar/cava-waybar.cfg"
# ── AGS (remplace waybar + wob + wofi) ─────────────────────────────────────────
section "AGS — violet-chaton shell"
ensure_dir "$HOME/.config/ags/css"
ensure_dir "$HOME/.config/ags/widgets"
deploy_file "$CONFIGS/ags/config.js" "$HOME/.config/ags/config.js"
deploy_file "$CONFIGS/ags/css/style.css" "$HOME/.config/ags/css/style.css"
deploy_file "$CONFIGS/ags/widgets/Bar.js" "$HOME/.config/ags/widgets/Bar.js"
deploy_file "$CONFIGS/ags/widgets/OSD.js" "$HOME/.config/ags/widgets/OSD.js"
deploy_file "$CONFIGS/ags/widgets/Launcher.js" "$HOME/.config/ags/widgets/Launcher.js"
deploy_file "$CONFIGS/ags/widgets/Notifications.js" "$HOME/.config/ags/widgets/Notifications.js"
step "Scripts waybar..."
ensure_dir "$HOME/.config/waybar/scripts"
for script in "$CONFIGS/waybar/scripts/"*.sh; do
dst="$HOME/.config/waybar/scripts/$(basename "$script")"
cp "$script" "$dst" && chmod +x "$dst"
done
for script in "$CONFIGS/waybar/scripts/"*.py; do
dst="$HOME/.config/waybar/scripts/$(basename "$script")"
cp "$script" "$dst" && chmod +x "$dst"
done
ok "Scripts waybar"
# ── Autostart ───────────────────────────────────────────────────────────────────
section "Autostart — waybar + wob"
# ── Autostart — AGS ────────────────────────────────────────────────────────────
section "Autostart — AGS"
ensure_dir "$HOME/.config/autostart"
deploy_file "$CONFIGS/autostart/waybar.desktop" "$HOME/.config/autostart/waybar.desktop"
deploy_file "$CONFIGS/autostart/wob.desktop" "$HOME/.config/autostart/wob.desktop"
cat > /tmp/ags-vc.desktop << 'DESKTOP'
[Desktop Entry]
Type=Application
Name=AGS violet-chaton
Exec=ags
X-GNOME-Autostart-enabled=true
DESKTOP
deploy_file "/tmp/ags-vc.desktop" "$HOME/.config/autostart/ags.desktop"
rm -f /tmp/ags-vc.desktop
# Cleanup ancien waybar/wob autostart si present
[ -f "$HOME/.config/autostart/waybar.desktop" ] && rm -f "$HOME/.config/autostart/waybar.desktop" && ok "waybar autostart retire"
[ -f "$HOME/.config/autostart/wob.desktop" ] && rm -f "$HOME/.config/autostart/wob.desktop" && ok "wob autostart retire"
# ── Règle sudoers — profil énergie ──────────────────────────────────────────────
section "Sudoers — profil énergie ACPI"
SUDOERS_FILE="/etc/sudoers.d/waybar-power-profile"
SUDOERS_FILE="/etc/sudoers.d/vc-power-profile"
SUDOERS_RULE="$USER ALL=(ALL) NOPASSWD: /usr/bin/tee /sys/firmware/acpi/platform_profile"
if [ -f "$SUDOERS_FILE" ]; then
if [ -f "$SUDOERS_FILE" ] || [ -f "/etc/sudoers.d/waybar-power-profile" ]; then
ok "Règle sudoers déjà présente"
else
step "Création de la règle sudoers (mot de passe sudo requis)..."
echo "$SUDOERS_RULE" > /tmp/waybar-pp-sudoers
if sudo cp /tmp/waybar-pp-sudoers "$SUDOERS_FILE" && sudo chmod 440 "$SUDOERS_FILE"; then
rm -f /tmp/waybar-pp-sudoers
echo "$SUDOERS_RULE" > /tmp/vc-pp-sudoers
if sudo cp /tmp/vc-pp-sudoers "$SUDOERS_FILE" && sudo chmod 440 "$SUDOERS_FILE"; then
rm -f /tmp/vc-pp-sudoers
ok "Règle sudoers créée"
else
rm -f /tmp/waybar-pp-sudoers
rm -f /tmp/vc-pp-sudoers
warn "Échec sudoers — changement de profil énergie nécessitera sudo"
fi
fi
# ── Règle udev — permissions platform_profile ────────────────────────────────
section "udev — platform_profile accessible au groupe video"
UDEV_FILE="/etc/udev/rules.d/90-platform-profile.rules"
if [ -f "$UDEV_FILE" ]; then
ok "Règle udev déjà présente"
else
step "Création de la règle udev (mot de passe sudo requis)..."
echo 'ACTION=="add|change", KERNEL=="platform_profile", SUBSYSTEM=="acpi", RUN+="/bin/chmod g+w /sys/firmware/acpi/platform_profile", RUN+="/bin/chgrp video /sys/firmware/acpi/platform_profile"' \
> /tmp/90-platform-profile.rules
if sudo cp /tmp/90-platform-profile.rules "$UDEV_FILE" && sudo chmod 644 "$UDEV_FILE"; then
rm -f /tmp/90-platform-profile.rules
sudo chmod g+w /sys/firmware/acpi/platform_profile 2>/dev/null
sudo chgrp video /sys/firmware/acpi/platform_profile 2>/dev/null
ok "Règle udev créée"
else
rm -f /tmp/90-platform-profile.rules
warn "Échec udev — redémarrage requis pour les permissions platform_profile"
fi
fi
# ── Wofi — launcher + power menu ────────────────────────────────────────────────
section "Wofi — launcher violet-chaton"
ensure_dir "$HOME/.config/wofi"
deploy_file "$CONFIGS/wofi/config" "$HOME/.config/wofi/config"
deploy_file "$THEMES/violet-chaton-wofi.css" "$HOME/.config/wofi/style.css"
deploy_file "$THEMES/violet-chaton-wofi-power.css" "$HOME/.config/wofi/power-style.css"
# ── Rofi ────────────────────────────────────────────────────────────────────────
section "Rofi — thème violet-chaton"
# ── Rofi — backup launcher (AGS launcher = principal) ──────────────────────────
section "Rofi — thème violet-chaton (backup launcher)"
ensure_dir "$HOME/.config/rofi"
deploy_file "$CONFIGS/rofi/config.rasi" "$HOME/.config/rofi/config.rasi"
deploy_file "$THEMES/violet-chaton-rofi.rasi" "$HOME/.config/rofi/violet-chaton.rasi"
# ── wob ─────────────────────────────────────────────────────────────────────────
section "wob — overlay volume/luminosité"
deploy_file "$CONFIGS/wob/wob.ini" "$HOME/.config/wob.ini"
# ── Désactiver cosmic-osd (remplacé par wob) ─────────────────────────────────
section "cosmic-osd — désactivation (wob le remplace)"
if [ -f /usr/bin/cosmic-osd.real ]; then
ok "cosmic-osd déjà désactivé via dpkg-divert"
elif [ -f /usr/bin/cosmic-osd ]; then
step "Divert de cosmic-osd (mot de passe sudo requis)..."
if sudo dpkg-divert --add --rename --divert /usr/bin/cosmic-osd.real /usr/bin/cosmic-osd; then
printf '#!/usr/bin/env bash\nexec sleep infinity\n' > /tmp/cosmic-osd-fake
chmod +x /tmp/cosmic-osd-fake
sudo cp /tmp/cosmic-osd-fake /usr/bin/cosmic-osd
rm -f /tmp/cosmic-osd-fake
pkill -x cosmic-osd 2>/dev/null
ok "cosmic-osd désactivé — wob gère les overlays"
else
warn "dpkg-divert échoué — cosmic-osd reste actif"
fi
else
warn "cosmic-osd introuvable — rien à faire"
fi
# ── Logo fastfetch ─────────────────────────────────────────────────────────────
section "Logo fastfetch"
if [ -f "$SCRIPT_DIR/assets/violet-chaton-logo.png" ]; then

View File

@@ -1,16 +1,23 @@
#!/bin/bash
# ── violet-chaton : fonctions partagées ───────────────────────────────────────
PINK='\033[38;2;255;121;198m'
PURPLE='\033[38;2;231;156;254m'
CYAN='\033[38;2;139;233;253m'
GREEN='\033[38;2;166;227;161m'
YELLOW='\033[38;2;249;226;175m'
RED='\033[38;2;243;139;168m'
MUTED='\033[38;2;108;112;134m'
TEXT='\033[38;2;248;248;242m'
BOLD='\033[1m'
RESET='\033[0m'
# ── Palette violet-chaton v2 (source de verite : themes/palette.sh) ──────────
_LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
_PALETTE="$_LIB_DIR/../themes/palette.sh"
if [ -f "$_PALETTE" ]; then
source "$_PALETTE"
fi
PINK="${VC_ANSI_MAGENTA:-\033[38;2;255;77;166m}"
PURPLE="${VC_ANSI_LILAC:-\033[38;2;201;160;255m}"
CYAN="${VC_ANSI_LAVANDE:-\033[38;2;164;180;255m}"
GREEN="${VC_ANSI_MITSURI:-\033[38;2;154;219;168m}"
YELLOW="${VC_ANSI_CHAMPAGNE:-\033[38;2;232;200;122m}"
RED="${VC_ANSI_DANGER:-\033[38;2;242;92;122m}"
MUTED="${VC_ANSI_MUTED:-\033[38;2;113;102;134m}"
TEXT="${VC_ANSI_TEXT:-\033[38;2;240;234;248m}"
BOLD="${VC_ANSI_BOLD:-\033[1m}"
RESET="${VC_ANSI_RESET:-\033[0m}"
# ── Log ────────────────────────────────────────────────────────────────────────
# INSTALL_LOG peut être pré-exporté par install.sh pour que tous les sous-scripts