#!/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 ""