219 lines
7.1 KiB
Bash
Executable File
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 ""
|