dotfiles/scripts/install-sway.sh

219 lines
7.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# install-sway.sh — Installation de Sway (Wayland) sur Debian 13
# =============================================================================
# Usage :
# chmod +x install-sway.sh
# ./install-sway.sh
#
# Ce script installe :
# - sway : gestionnaire de fenêtres en tuiles (Wayland)
# - swaybar : barre de statut (inclus avec sway)
# - swaybg : fond d'écran Wayland
# - swaylock : verrouillage d'écran Wayland
# - swayidle : gestion de la mise en veille
# - waybar : barre de statut avancée (alternative à swaybar)
# - wofi : lanceur d'applications Wayland (remplace rofi/dmenu)
# - foot : terminal léger natif Wayland
# - mako : notifications Wayland
# - wl-clipboard : copier/coller en ligne de commande sous Wayland
# - grim + slurp : capture d'écran Wayland
# - brightnessctl : contrôle de la luminosité
# - playerctl : contrôle multimédia (play/pause/next)
# - kanshi : gestion dynamique des moniteurs (optionnel)
# - polkit-gnome : agent d'authentification graphique
# =============================================================================
set -euo pipefail
# --- Couleurs pour l'affichage ---
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
log() { echo -e "${GREEN}[✓]${NC} $*"; }
info() { echo -e "${BLUE}[i]${NC} $*"; }
warn() { echo -e "${YELLOW}[!]${NC} $*"; }
err() { echo -e "${RED}[✗]${NC} $*" >&2; exit 1; }
# --- Vérification des droits ---
if [[ "$EUID" -eq 0 ]]; then
err "Ne pas lancer ce script en root. Utilisez un utilisateur normal (sudo sera demandé si nécessaire)."
fi
info "Démarrage de l'installation de Sway sur Debian 13..."
echo ""
# --- Mise à jour des paquets ---
info "Mise à jour de la liste des paquets..."
sudo apt-get update -qq
log "Liste des paquets mise à jour."
# --- Installation des paquets principaux ---
info "Installation de Sway et des outils Wayland..."
sudo apt-get install -y \
sway \
swaybg \
swaylock \
swayidle \
waybar \
wofi \
foot \
mako-notifier \
wl-clipboard \
grim \
slurp \
brightnessctl \
playerctl \
kanshi \
policykit-1-gnome \
xdg-user-dirs \
xdg-desktop-portal-wlr \
fonts-font-awesome \
fonts-noto \
pulseaudio \
pavucontrol \
nwg-displays \
xdg-desktop-portal-wlr \
network-manager-gnome
log "Paquets installés avec succès."
# --- Création des répertoires de configuration ---
info "Création des répertoires de configuration..."
mkdir -p "$HOME/.config/sway"
mkdir -p "$HOME/.config/waybar"
mkdir -p "$HOME/.config/foot"
mkdir -p "$HOME/.config/mako"
mkdir -p "$HOME/.config/wofi"
mkdir -p "$HOME/.config/kanshi"
log "Répertoires créés."
# --- Copie du fichier de configuration Sway ---
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SWAY_CONFIG_SRC="$SCRIPT_DIR/sway-config"
SWAY_CONFIG_DEST="$HOME/.config/sway/config"
if [[ -f "$SWAY_CONFIG_SRC" ]]; then
if [[ -f "$SWAY_CONFIG_DEST" ]]; then
warn "Un fichier de configuration Sway existe déjà. Sauvegarde dans config.bak"
cp "$SWAY_CONFIG_DEST" "$SWAY_CONFIG_DEST.bak"
fi
cp "$SWAY_CONFIG_SRC" "$SWAY_CONFIG_DEST"
log "Configuration Sway copiée vers $SWAY_CONFIG_DEST"
else
warn "Fichier 'sway-config' introuvable à côté du script. Placez-le dans : $SCRIPT_DIR/"
warn "La configuration par défaut de Sway sera utilisée au premier lancement."
fi
# --- Configuration minimale de foot (terminal) ---
info "Génération d'une configuration de base pour foot..."
cat > "$HOME/.config/foot/foot.ini" << 'EOF'
# Configuration du terminal Foot
# Documentation : https://codeberg.org/dnkl/foot/src/branch/master/doc/foot.ini.5.scd
[main]
# Police et taille (modifiez selon vos préférences)
font=monospace:size=11
[colors]
# Thème sombre simple
background=1e1e2e
foreground=cdd6f4
EOF
log "Configuration foot créée."
# --- Configuration minimale de mako (notifications) ---
info "Génération d'une configuration de base pour mako..."
cat > "$HOME/.config/mako/config" << 'EOF'
# Configuration des notifications Mako
# Documentation : man mako
# Position des notifications
anchor=top-right
margin=10
# Apparence
background-color=#1e1e2edd
text-color=#cdd6f4
border-color=#89b4fadd
border-radius=8
border-size=2
# Durée d'affichage (en millisecondes)
default-timeout=5000
# Police
font=sans 10
EOF
log "Configuration mako créée."
# --- Configuration de wofi (lanceur d'apps) ---
info "Génération d'une configuration de base pour wofi..."
cat > "$HOME/.config/wofi/style.css" << 'EOF'
/* Style de Wofi - lanceur d'applications */
window {
background-color: #1e1e2e;
border: 2px solid #89b4fa;
border-radius: 10px;
}
#input {
background-color: #313244;
color: #cdd6f4;
border: none;
border-radius: 6px;
padding: 8px;
margin: 6px;
}
#outer-box { padding: 6px; }
#entry { padding: 6px; border-radius: 6px; }
#entry:selected { background-color: #45475a; }
#text { color: #cdd6f4; }
EOF
log "Style wofi créé."
# --- Ajout de l'utilisateur aux groupes nécessaires ---
info "Ajout de l'utilisateur aux groupes video et input (pour luminosité et entrées)..."
sudo usermod -aG video,input "$USER" 2>/dev/null || warn "Impossible d'ajouter aux groupes (peut-être déjà membre)."
log "Groupes configurés."
# --- Création d'une entrée de session Wayland (si nécessaire) ---
SESSION_FILE="/usr/share/wayland-sessions/sway.desktop"
if [[ ! -f "$SESSION_FILE" ]]; then
info "Création de l'entrée de session Sway pour le gestionnaire de connexion..."
sudo bash -c "cat > $SESSION_FILE" << 'EOF'
[Desktop Entry]
Name=Sway
Comment=Sway - Compositeur Wayland en tuiles (i3-compatible)
Exec=sway
Type=Application
EOF
log "Entrée de session créée."
else
log "Entrée de session Sway déjà présente."
fi
# --- Récapitulatif ---
echo ""
echo -e "${GREEN}════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN} Installation terminée !${NC}"
echo -e "${GREEN}════════════════════════════════════════════════════════${NC}"
echo ""
echo -e " Prochaine étape :"
echo -e " 1. Assurez-vous que le fichier ${YELLOW}sway-config${NC} est copié dans :"
echo -e " ${BLUE}~/.config/sway/config${NC}"
echo -e " 2. ${YELLOW}Déconnectez-vous${NC} de votre session actuelle."
echo -e " 3. Choisissez ${BLUE}Sway${NC} comme session dans votre gestionnaire de connexion."
echo -e " (ou lancez ${BLUE}sway${NC} depuis un TTY)"
echo ""
echo -e " Raccourcis essentiels (voir le fichier de config pour tout) :"
echo -e " ${BLUE}Super + Entrée${NC} → Terminal (foot)"
echo -e " ${BLUE}Super + Espace${NC} → Lanceur d'apps (wofi)"
echo -e " ${BLUE}Super + Q${NC} → Fermer la fenêtre active"
echo -e " ${BLUE}Super + [1-9]${NC} → Aller à l'espace de travail numéroté"
echo ""
warn "Reconnectez-vous pour que les changements de groupes (video/input) prennent effet."
echo ""