Environnement terminal complet aux couleurs violet-chaton pour Pop!_OS / Ubuntu avec COSMIC Desktop. Inclut scripts d'installation, configs shell, thèmes et support COSMIC/Vivaldi/Vesktop.
242 lines
12 KiB
Bash
Executable File
242 lines
12 KiB
Bash
Executable File
#!/bin/bash
|
|
# ── violet-chaton : déploiement des configs et thèmes ─────────────────────────
|
|
source "$(dirname "$0")/lib.sh"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
THEMES="$SCRIPT_DIR/themes"
|
|
CONFIGS="$SCRIPT_DIR/configs"
|
|
BACKUP_DIR="$HOME/.config/violet-chaton-backups/$(date +%Y%m%d-%H%M%S)"
|
|
|
|
deploy_file() {
|
|
local src="$1"
|
|
local dst="$2"
|
|
ensure_dir "$(dirname "$dst")"
|
|
if [ -f "$dst" ]; then
|
|
local rel="${dst#"$HOME/"}"
|
|
ensure_dir "$BACKUP_DIR/$(dirname "$rel")"
|
|
cp "$dst" "$BACKUP_DIR/$rel" 2>/dev/null
|
|
fi
|
|
if cp "$src" "$dst" 2>/dev/null; then
|
|
ok "$(basename "$dst")"
|
|
else
|
|
fail "$(basename "$dst")"
|
|
fi
|
|
}
|
|
|
|
# ── Configs shell ──────────────────────────────────────────────────────────────
|
|
section "Configs shell"
|
|
deploy_file "$CONFIGS/zshrc" "$HOME/.zshrc"
|
|
deploy_file "$CONFIGS/bashrc" "$HOME/.bashrc"
|
|
|
|
# Préserver user.name et user.email avant d'écraser le gitconfig
|
|
_GIT_NAME=$(git config --global user.name 2>/dev/null)
|
|
_GIT_EMAIL=$(git config --global user.email 2>/dev/null)
|
|
deploy_file "$CONFIGS/gitconfig" "$HOME/.gitconfig"
|
|
if [ -n "$_GIT_NAME" ]; then
|
|
git config --global user.name "$_GIT_NAME"
|
|
ok "user.name restauré : $_GIT_NAME"
|
|
fi
|
|
if [ -n "$_GIT_EMAIL" ]; then
|
|
git config --global user.email "$_GIT_EMAIL"
|
|
ok "user.email restauré : $_GIT_EMAIL"
|
|
fi
|
|
|
|
# ── Configs outils ─────────────────────────────────────────────────────────────
|
|
section "Configs outils"
|
|
deploy_file "$CONFIGS/starship.toml" "$HOME/.config/starship.toml"
|
|
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"
|
|
deploy_file "$CONFIGS/atuin.toml" "$HOME/.config/atuin/config.toml"
|
|
deploy_file "$CONFIGS/lazygit.yml" "$HOME/.config/lazygit/config.yml"
|
|
deploy_file "$CONFIGS/yazi.toml" "$HOME/.config/yazi/yazi.toml"
|
|
deploy_file "$CONFIGS/glow.yml" "$HOME/.config/glow/glow.yml"
|
|
|
|
# ── Thèmes CLI ─────────────────────────────────────────────────────────────────
|
|
section "Thèmes violet-chaton (CLI)"
|
|
deploy_file "$THEMES/violet-chaton.theme.css" \
|
|
"$HOME/.config/vesktop/themes/violet-chaton.theme.css"
|
|
# Flatpak — uniquement si Vesktop flatpak est déjà installé
|
|
if [ -d "$HOME/.var/app/dev.vencord.Vesktop" ]; then
|
|
deploy_file "$THEMES/violet-chaton.theme.css" \
|
|
"$HOME/.var/app/dev.vencord.Vesktop/config/vesktop/themes/violet-chaton.theme.css"
|
|
fi
|
|
deploy_file "$THEMES/violet-chaton-bat.tmTheme" "$HOME/.config/bat/themes/violet-chaton.tmTheme"
|
|
deploy_file "$THEMES/violet-chaton-btop.theme" "$HOME/.config/btop/themes/violet-chaton.theme"
|
|
deploy_file "$THEMES/violet-chaton-atuin.toml" "$HOME/.config/atuin/themes/violet-chaton.toml"
|
|
deploy_file "$THEMES/violet-chaton-cava.conf" "$HOME/.config/cava/config"
|
|
deploy_file "$THEMES/violet-chaton-yazi.toml" "$HOME/.config/yazi/theme.toml"
|
|
deploy_file "$THEMES/violet-chaton-ls-colors.sh" "$HOME/.local/share/violet-chaton/violet-chaton-ls-colors.sh"
|
|
|
|
# ── COSMIC Desktop ─────────────────────────────────────────────────────────────
|
|
section "COSMIC — thème, terminal et toolkit"
|
|
COSMIC_SRC="$THEMES/cosmic"
|
|
COSMIC_DST="$HOME/.config/cosmic"
|
|
|
|
step "COSMIC Theme Dark..."
|
|
backup_dir "$COSMIC_DST/com.system76.CosmicTheme.Dark/v1"
|
|
ensure_dir "$COSMIC_DST/com.system76.CosmicTheme.Dark/v1"
|
|
if cp "$COSMIC_SRC/com.system76.CosmicTheme.Dark/v1/"* "$COSMIC_DST/com.system76.CosmicTheme.Dark/v1/" 2>/dev/null; then
|
|
ok "CosmicTheme.Dark"
|
|
else
|
|
fail "CosmicTheme.Dark"
|
|
fi
|
|
|
|
step "COSMIC Theme Mode (dark)..."
|
|
backup_dir "$COSMIC_DST/com.system76.CosmicTheme.Mode/v1"
|
|
ensure_dir "$COSMIC_DST/com.system76.CosmicTheme.Mode/v1"
|
|
if cp "$COSMIC_SRC/com.system76.CosmicTheme.Mode/v1/is_dark" "$COSMIC_DST/com.system76.CosmicTheme.Mode/v1/" 2>/dev/null; then
|
|
ok "CosmicTheme.Mode"
|
|
else
|
|
fail "CosmicTheme.Mode"
|
|
fi
|
|
|
|
step "COSMIC Terminal..."
|
|
backup_dir "$COSMIC_DST/com.system76.CosmicTerm/v1"
|
|
ensure_dir "$COSMIC_DST/com.system76.CosmicTerm/v1"
|
|
if cp "$COSMIC_SRC/com.system76.CosmicTerm/v1/"* "$COSMIC_DST/com.system76.CosmicTerm/v1/" 2>/dev/null; then
|
|
ok "CosmicTerm"
|
|
else
|
|
fail "CosmicTerm"
|
|
fi
|
|
|
|
# ── GTK3 — thème violet-chaton ─────────────────────────────────────────────
|
|
section "GTK3 — thème violet-chaton"
|
|
ensure_dir "$HOME/.config/gtk-3.0"
|
|
deploy_file "$THEMES/violet-chaton-gtk.css" "$HOME/.config/gtk-3.0/gtk.css"
|
|
|
|
# ── Nemo — gestionnaire de fichiers ────────────────────────────────────────
|
|
section "Nemo — configuration et thème"
|
|
|
|
step "Nemo comme gestionnaire de fichiers par défaut..."
|
|
if has_cmd xdg-mime; then
|
|
xdg-mime default nemo.desktop inode/directory 2>/dev/null && \
|
|
xdg-mime default nemo.desktop application/x-gnome-saved-search 2>/dev/null && \
|
|
ok "Nemo défini par défaut" || warn "xdg-mime Nemo échoué"
|
|
else
|
|
warn "xdg-mime non disponible — à faire manuellement"
|
|
fi
|
|
|
|
step "Préférences Nemo (gsettings)..."
|
|
if has_cmd gsettings; then
|
|
gsettings set org.nemo.preferences default-folder-viewer 'icon-view' 2>/dev/null
|
|
gsettings set org.nemo.preferences show-hidden-files false 2>/dev/null
|
|
gsettings set org.nemo.preferences show-image-thumbnails 'always' 2>/dev/null
|
|
gsettings set org.nemo.icon-view default-zoom-level 'standard' 2>/dev/null
|
|
gsettings set org.nemo.list-view default-zoom-level 'small' 2>/dev/null
|
|
ok "Préférences Nemo appliquées"
|
|
else
|
|
warn "gsettings non disponible — préférences Nemo à configurer manuellement"
|
|
fi
|
|
|
|
step "Application du thème d'icônes candy-icons (GTK)..."
|
|
if has_cmd gsettings; then
|
|
gsettings set org.gnome.desktop.interface icon-theme 'candy-icons-master' 2>/dev/null && \
|
|
ok "icon-theme candy-icons-master (gsettings)" || warn "gsettings icon-theme échoué"
|
|
else
|
|
warn "gsettings non disponible — thème d'icônes GTK à appliquer manuellement"
|
|
fi
|
|
|
|
step "COSMIC Toolkit (polices, icônes)..."
|
|
backup_dir "$COSMIC_DST/com.system76.CosmicTk/v1"
|
|
ensure_dir "$COSMIC_DST/com.system76.CosmicTk/v1"
|
|
if cp "$COSMIC_SRC/com.system76.CosmicTk/v1/"* "$COSMIC_DST/com.system76.CosmicTk/v1/" 2>/dev/null; then
|
|
ok "CosmicTk"
|
|
else
|
|
fail "CosmicTk"
|
|
fi
|
|
|
|
# ── Vivaldi ─────────────────────────────────────────────────────────────────────
|
|
section "Vivaldi — thème Rice Violet-Chaton"
|
|
VIVALDI_PREFS="$HOME/.config/vivaldi/Default/Preferences"
|
|
|
|
if [ ! -f "$VIVALDI_PREFS" ]; then
|
|
echo ""
|
|
echo -e "${PINK}${BOLD} ┌──────────────────────────────────────────────────────────┐${RESET}"
|
|
echo -e "${PINK}${BOLD} │ Vivaldi n'a pas encore été lancé. │${RESET}"
|
|
echo -e "${PINK} │ ${TEXT}Lance Vivaldi maintenant, attends qu'il démarre,${PINK} │${RESET}"
|
|
echo -e "${PINK} │ ${TEXT}puis ferme-le et appuie sur Entrée pour continuer.${PINK} │${RESET}"
|
|
echo -e "${PINK}${BOLD} └──────────────────────────────────────────────────────────┘${RESET}"
|
|
echo ""
|
|
read -rp " → Appuie sur Entrée une fois Vivaldi fermé..." _
|
|
echo ""
|
|
fi
|
|
|
|
if [ ! -f "$VIVALDI_PREFS" ]; then
|
|
warn "Preferences Vivaldi toujours introuvable — thème non injecté"
|
|
else
|
|
step "Injection du thème Rice Violet-Chaton..."
|
|
python3 - "$VIVALDI_PREFS" "$THEMES/violet-chaton-vivaldi.json" <<'PYEOF'
|
|
import json, sys
|
|
|
|
prefs_path = sys.argv[1]
|
|
theme_path = sys.argv[2]
|
|
|
|
with open(prefs_path, 'r') as f:
|
|
prefs = json.load(f)
|
|
|
|
with open(theme_path, 'r') as f:
|
|
new_themes = json.load(f)
|
|
|
|
theme = new_themes[0]
|
|
theme_id = theme['id']
|
|
|
|
# Injecter dans vivaldi.themes.user (dédoublonner par id)
|
|
user_themes = prefs.setdefault('vivaldi', {}).setdefault('themes', {}).setdefault('user', [])
|
|
user_themes = [t for t in user_themes if t.get('id') != theme_id]
|
|
user_themes.append(theme)
|
|
prefs['vivaldi']['themes']['user'] = user_themes
|
|
|
|
# Activer le thème (dark et light schedule)
|
|
prefs.setdefault('vivaldi', {}).setdefault('theme', {}).setdefault('schedule', {}).setdefault('o_s', {})
|
|
prefs['vivaldi']['theme']['schedule']['o_s']['light'] = theme_id
|
|
prefs['vivaldi']['theme']['schedule']['o_s']['dark'] = theme_id
|
|
|
|
with open(prefs_path, 'w') as f:
|
|
json.dump(prefs, f, separators=(',', ':'))
|
|
|
|
print("ok")
|
|
PYEOF
|
|
if [ $? -eq 0 ]; then
|
|
ok "Vivaldi thème injecté"
|
|
info "→ Redémarre Vivaldi pour appliquer le thème"
|
|
else
|
|
fail "Vivaldi injection échouée"
|
|
fi
|
|
fi
|
|
|
|
# ── Logo fastfetch ─────────────────────────────────────────────────────────────
|
|
section "Logo fastfetch"
|
|
if [ -f "$SCRIPT_DIR/assets/violet-chaton-logo.png" ]; then
|
|
deploy_file "$SCRIPT_DIR/assets/violet-chaton-logo.png" "$HOME/.config/fastfetch/violet-chaton-logo.png"
|
|
else
|
|
warn "Logo non trouvé dans assets/ — fastfetch démarrera sans logo"
|
|
fi
|
|
|
|
# ── Rebuild caches ─────────────────────────────────────────────────────────────
|
|
section "Rebuild des caches"
|
|
|
|
step "Cache bat (thème violet-chaton)..."
|
|
if has_cmd batcat; then
|
|
batcat cache --build &>/dev/null && ok "bat cache" || fail "bat cache"
|
|
fi
|
|
|
|
step "PATH ~/.local/bin..."
|
|
export PATH="$HOME/.local/bin:$PATH"
|
|
|
|
# ── Étapes manuelles ───────────────────────────────────────────────────────────
|
|
echo ""
|
|
echo -e "${YELLOW}${BOLD} ╔══════════════════════════════════════════════════════════╗${RESET}"
|
|
echo -e "${YELLOW}${BOLD} ║ Étapes manuelles requises après install ║${RESET}"
|
|
echo -e "${YELLOW}${BOLD} ╠══════════════════════════════════════════════════════════╣${RESET}"
|
|
echo -e "${YELLOW} ║ ${TEXT}1. Vivaldi : lance le navigateur une fois avant install${YELLOW} ║${RESET}"
|
|
echo -e "${YELLOW} ║ ${MUTED} puis relance ce script si le thème n'est pas injecté${YELLOW} ║${RESET}"
|
|
echo -e "${YELLOW}${BOLD} ╚══════════════════════════════════════════════════════════╝${RESET}"
|
|
echo ""
|
|
|
|
if [ -d "$BACKUP_DIR" ]; then
|
|
echo -e " ${MUTED}Configs précédentes sauvegardées dans :${RESET}"
|
|
echo -e " ${TEXT}$BACKUP_DIR${RESET}"
|
|
echo ""
|
|
fi
|