176 lines
5.3 KiB
Bash
Executable File

#! /bin/bash
##################
# GNOME #
##################
# Définir la variable DBUS_SESSION_BUS_ADDRESS si elle n'existe pas
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
fi
# Lancer dbus-launch si nécessaire
if ! dbus-launch --sh-syntax >/dev/null 2>&1; then
eval $(dbus-launch --sh-syntax)
fi
# Installation des paquets
sudo apt update
sudo apt install -y \
gir1.2-gmenu-3.0 \
pipx \
libgnome-menu-3-0 \
gnome-shell-extensions \
dconf-cli \
dbus-x11
# Configuration utilisateur
echo "🔧 Configuration des paramètres GNOME pour l'utilisateur actuel..."
gsettings set org.gnome.desktop.wm.preferences button-layout 'appmenu:minimize,maximize,close'
gsettings set org.gnome.shell favorite-apps "['firefox-esr.desktop', 'org.gnome.Nautilus.desktop', 'libreoffice-startcenter.desktop', 'org.gnome.Software.desktop']"
sudo mkdir -p /usr/share/wallpapers/GN
sudo cp -r files/wallpapers/* /usr/share/wallpapers/GN/
gsettings set org.gnome.desktop.background picture-uri "file:///usr/share/wallpapers/GN/clouds.png"
# Configuration système
echo "Application des paramètres par défaut pour tous les utilisateurs..."
sudo mkdir -p /etc/dconf/db/local.d/ && sudo cp files/00-defaults $_
sudo cp files/user /etc/dconf/profile/user
sudo dconf update
########################
## EXTENSIONS GNOME ##
# Installation via pipx > gnome-extensions-cli/gext
# Paramétrage
########################
# Extensions à installer (IDs officiels)
EXTENSIONS=(
"dash-to-panel@jderose9.github.com"
"arcmenu@arcmenu.com"
)
# S'assurer que pipx est installé
if ! command -v pipx &>/dev/null; then
echo "pipx n'est pas installé. Installation..."
sudo apt install pipx -y
pipx ensurepath
export PATH="$HOME/.local/bin:$PATH"
hash -r
fi
# Installation de gnome-extensions-cli (gext)
pipx install gnome-extensions-cli --system-site-packages --force
export PATH="$HOME/.local/bin:$PATH"
hash -r
# Paramétrage des extensions
sudo cp files/logo_icon_gn.png /usr/share/icons/
echo "Importation des préférences de dash-to-panel..."
dconf load /org/gnome/shell/extensions/dash-to-panel/ < files/dconf/dash-to-panel.conf
sudo dconf update
# Vérification de la version de GNOME Shell
GNOME_SHELL_VERSION=$(gnome-shell --version | cut -d' ' -f3)
echo "Version de GNOME Shell détectée : $GNOME_SHELL_VERSION"
# Installation et activation des extensions
echo "Installation et activation des extensions GNOME..."
for ext in "${EXTENSIONS[@]}"; do
echo "Installation de l'extension $ext..."
if ! gext install "$ext" ; then
echo "Échec de l'installation de $ext. Vérifiez votre connexion internet ou l'ID de l'extension."
else
echo "Activation de l'extension $ext..."
gnome-extensions enable "$ext"
fi
done
echo "Installation terminée. Redémarrez GNOME Shell (Alt+F2 puis 'r') pour appliquer les changements."
##################
# GNOME - Mise en place pour les nouveaux utilisateurs
##################
echo "🔧 Mise en place des paramètres de Gnome pour les (futurs) nouveaux utilisateurs."
mkdir -p tmp
dconf dump /org/gnome/shell/ > tmp/gnome-extensions.conf
sudo mkdir -p /etc/skel/.config/dconf/ && sudo cp tmp/gnome-extensions.conf $_
# Copie des extensions dans /usr/share
sudo cp -r ~/.local/share/gnome-shell/extensions/* /usr/share/gnome-shell/extensions/
# Modification des droits sur le fichier 'metadata.json' de chaque extension
for ext in "${EXTENSIONS[@]}"; do
metadata_path="/usr/share/gnome-shell/extensions/$ext/metadata.json"
if [ -f "$metadata_path" ]; then
echo "Modification des droits sur $metadata_path"
sudo chmod 644 "$metadata_path"
else
echo "⚠️ Fichier $metadata_path introuvable, extension peut-être non copiée correctement."
fi
done
# Création du script de post-login GNOME qui active les extensions
sudo tee /usr/local/bin/activate-gnome-extensions.sh > /dev/null << 'EOF'
#!/bin/bash
exec >> ~/.config/gnome-extensions-activate.log 2>&1
set -e
# Fonction pour activer une extension et vérifier son succès
activate_extension() {
local ext="$1"
if gnome-extensions info "$ext" >/dev/null 2>&1; then
echo "[+] Activation de l'extension : $ext"
gnome-extensions enable "$ext"
else
echo "[!] Extension introuvable : $ext"
return 1
fi
}
echo "[*] Chargement des paramètres GNOME..."
dconf load /org/gnome/shell/ < ~/.config/dconf/gnome-extensions.conf
# Liste des extensions
EXTENSIONS=(
"dash-to-panel@jderose9.github.com"
"arcmenu@arcmenu.com"
)
# Activation des extensions
for ext in "${EXTENSIONS[@]}"; do
activate_extension "$ext"
done
# Suppression du .desktop uniquement si tout a réussi
echo "[✓] Toutes les opérations ont réussi. Suppression du .desktop."
rm -f ~/.config/autostart/gnome-extensions-activate.desktop
EOF
# Rendre le script exécutable
sudo chmod +x /usr/local/bin/activate-gnome-extensions.sh
# Création du fichier .desktop pour autostart dans /etc/skel
sudo mkdir -p /etc/skel/.config/autostart
sudo tee /etc/skel/.config/autostart/gnome-extensions-activate.desktop > /dev/null << 'EOF'
[Desktop Entry]
Type=Application
Name=GNOME Extensions Auto-Activate
Exec=/usr/local/bin/activate-gnome-extensions.sh
X-GNOME-Autostart-enabled=true
NoDisplay=true
EOF
# Modification du pack d'icônes
#bash change-icons.sh