first commit
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# optimize-desktop.sh - Desactiver les composants desktop inutiles en mode kiosk
|
||||
# =============================================================================
|
||||
# Usage: bash optimize-desktop.sh
|
||||
# Gain estime: ~200 Mo de RAM
|
||||
#
|
||||
# Ce script configure labwc pour ne lancer QUE Chromium en mode kiosk,
|
||||
# sans barre de taches, gestionnaire de fichiers, portails desktop, etc.
|
||||
#
|
||||
# REVERSIBLE: un fichier de backup est cree, et on peut restaurer avec:
|
||||
# bash optimize-desktop.sh --restore
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
REAL_USER="${SUDO_USER:-$(logname 2>/dev/null || whoami)}"
|
||||
USER_HOME=$(eval echo "~$REAL_USER")
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Mode restauration
|
||||
# -------------------------------------------------------------------
|
||||
if [ "${1:-}" = "--restore" ]; then
|
||||
log_info "Restauration du desktop original..."
|
||||
|
||||
if [ -f "$USER_HOME/.config/labwc/autostart.backup" ]; then
|
||||
cp "$USER_HOME/.config/labwc/autostart.backup" "$USER_HOME/.config/labwc/autostart"
|
||||
log_info "autostart restaure"
|
||||
fi
|
||||
|
||||
# Reactiver les services
|
||||
XDG_RUNTIME_DIR="/run/user/$(id -u "$REAL_USER")"
|
||||
DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
|
||||
for service in xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-wlr; do
|
||||
runuser -u "$REAL_USER" -- env \
|
||||
XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
|
||||
DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
|
||||
systemctl --user unmask "$service" 2>/dev/null || true
|
||||
done
|
||||
|
||||
log_info "Restauration terminee. Redemarrer pour appliquer."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "============================================="
|
||||
echo " Optimisation desktop pour mode kiosk"
|
||||
echo " Gain estime: ~200 Mo de RAM"
|
||||
echo "============================================="
|
||||
echo ""
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# 1. LABWC AUTOSTART - Ne lancer que Chromium
|
||||
# -------------------------------------------------------------------
|
||||
log_info "Configuration de labwc autostart..."
|
||||
|
||||
LABWC_DIR="$USER_HOME/.config/labwc"
|
||||
mkdir -p "$LABWC_DIR"
|
||||
|
||||
# Backup de l'autostart original
|
||||
if [ -f "$LABWC_DIR/autostart" ] && [ ! -f "$LABWC_DIR/autostart.backup" ]; then
|
||||
cp "$LABWC_DIR/autostart" "$LABWC_DIR/autostart.backup"
|
||||
log_info "Backup cree: $LABWC_DIR/autostart.backup"
|
||||
fi
|
||||
|
||||
# Creer un autostart minimal pour le mode kiosk
|
||||
cat > "$LABWC_DIR/autostart" << 'EOF'
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# labwc autostart - Mode kiosk photomaton
|
||||
# =============================================================================
|
||||
# Ne lance que le strict necessaire:
|
||||
# - pipewire (audio, requis par certains composants)
|
||||
# - Chromium en mode kiosk
|
||||
#
|
||||
# Composants DESACTIVES (gain ~200 Mo RAM):
|
||||
# - pcmanfm (gestionnaire fichiers desktop)
|
||||
# - wf-panel-pi (barre de taches)
|
||||
# - xdg-desktop-portal* (portails desktop)
|
||||
# - polkit-mate-authentication-agent
|
||||
# - gvfsd (systeme fichiers virtuels)
|
||||
# =============================================================================
|
||||
|
||||
# Desactiver le screen blanking / DPMS via wlr-randr si disponible
|
||||
if command -v wlr-randr &>/dev/null; then
|
||||
wlr-randr --output HDMI-A-1 --on 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Demarrer pipewire (necessaire pour certains composants systeme)
|
||||
/usr/bin/pipewire &
|
||||
sleep 1
|
||||
/usr/bin/pipewire -c filter-chain.conf &
|
||||
/usr/bin/wireplumber &
|
||||
/usr/bin/pipewire-pulse &
|
||||
|
||||
# Attendre que photobooth-app soit pret
|
||||
MAX_WAIT=60
|
||||
WAITED=0
|
||||
while ! curl -s -o /dev/null --max-time 2 http://127.0.0.1:8083/ 2>/dev/null; do
|
||||
sleep 2
|
||||
WAITED=$((WAITED + 2))
|
||||
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Lancer Chromium en mode kiosk
|
||||
chromium \
|
||||
--kiosk \
|
||||
--accept-lang=fr-FR \
|
||||
--incognito \
|
||||
--password-store=basic \
|
||||
--ozone-platform=wayland \
|
||||
--enable-features=OverlayScrollbar \
|
||||
--disable-features=Translate,OverscrollHistoryNavigation \
|
||||
--noerrdialogs \
|
||||
--disable-infobars \
|
||||
--disable-session-crashed-bubble \
|
||||
--disable-component-update \
|
||||
--disable-background-networking \
|
||||
--disable-sync \
|
||||
--disable-extensions \
|
||||
--disable-dev-shm-usage \
|
||||
--no-first-run \
|
||||
--start-maximized \
|
||||
--process-per-site \
|
||||
--js-flags="--max-old-space-size=128" \
|
||||
--renderer-process-limit=1 \
|
||||
"http://127.0.0.1:8083/" &
|
||||
|
||||
EOF
|
||||
|
||||
chmod +x "$LABWC_DIR/autostart"
|
||||
chown "$REAL_USER:$REAL_USER" "$LABWC_DIR/autostart"
|
||||
log_info "labwc autostart kiosk cree"
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# 2. DESACTIVER LES PORTAILS DESKTOP (services utilisateur)
|
||||
# -------------------------------------------------------------------
|
||||
log_info "Desactivation des portails desktop..."
|
||||
|
||||
# Ces services sont lances automatiquement par D-Bus
|
||||
# On les masque pour qu'ils ne demarrent plus
|
||||
# Utiliser machinectl ou runuser pour eviter les demandes de mot de passe
|
||||
# quand le script est lance avec sudo
|
||||
XDG_RUNTIME_DIR="/run/user/$(id -u "$REAL_USER")"
|
||||
DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
|
||||
|
||||
for portal_svc in xdg-desktop-portal.service xdg-desktop-portal-gtk.service xdg-desktop-portal-wlr.service; do
|
||||
runuser -u "$REAL_USER" -- env \
|
||||
XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
|
||||
DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
|
||||
systemctl --user mask "$portal_svc" 2>/dev/null || true
|
||||
runuser -u "$REAL_USER" -- env \
|
||||
XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
|
||||
DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
|
||||
systemctl --user stop "$portal_svc" 2>/dev/null || true
|
||||
done
|
||||
|
||||
log_info "Portails desktop desactives"
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# 3. DESACTIVER LES SERVICES SYSTEME INUTILES
|
||||
# -------------------------------------------------------------------
|
||||
log_info "Desactivation des services systeme inutiles..."
|
||||
|
||||
SERVICES_TO_DISABLE=(
|
||||
# ModemManager - pas de modem
|
||||
"ModemManager.service"
|
||||
# accounts-daemon - gestion comptes, inutile en kiosk
|
||||
"accounts-daemon.service"
|
||||
# colord - gestion couleurs, inutile
|
||||
"colord.service"
|
||||
# rpcbind - NFS/RPC, inutile
|
||||
"rpcbind.service"
|
||||
"rpcbind.socket"
|
||||
# udisks2 - gestion disques amovibles, inutile en kiosk
|
||||
# "udisks2.service" # Garder si on branche des cles USB
|
||||
# upower - gestion alimentation, inutile sur Pi fixe
|
||||
"upower.service"
|
||||
)
|
||||
|
||||
for service in "${SERVICES_TO_DISABLE[@]}"; do
|
||||
if systemctl is-enabled "$service" &>/dev/null 2>&1; then
|
||||
systemctl disable "$service" 2>/dev/null || true
|
||||
systemctl stop "$service" 2>/dev/null || true
|
||||
log_info " Desactive: $service"
|
||||
elif systemctl is-active "$service" &>/dev/null 2>&1; then
|
||||
systemctl stop "$service" 2>/dev/null || true
|
||||
log_info " Arrete: $service"
|
||||
fi
|
||||
done
|
||||
|
||||
# blkmapd - NFS block mapping, inutile
|
||||
systemctl disable blkmapd.service 2>/dev/null || true
|
||||
systemctl stop blkmapd.service 2>/dev/null || true
|
||||
|
||||
log_info "Services systeme inutiles desactives"
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# 4. DESACTIVER PHP-FPM SI RASPAP N'EN A PAS BESOIN IMMEDIAT
|
||||
# -------------------------------------------------------------------
|
||||
# Note: RaspAP utilise php-fpm via lighttpd
|
||||
# On le garde car RaspAP en a besoin pour l'interface admin
|
||||
# Mais on peut reduire les workers
|
||||
if [ -f /etc/php/8.4/fpm/pool.d/www.conf ]; then
|
||||
log_info "Optimisation php-fpm (reduction des workers)..."
|
||||
sed -i 's/^pm.max_children = .*/pm.max_children = 2/' /etc/php/8.4/fpm/pool.d/www.conf 2>/dev/null || true
|
||||
sed -i 's/^pm.start_servers = .*/pm.start_servers = 1/' /etc/php/8.4/fpm/pool.d/www.conf 2>/dev/null || true
|
||||
sed -i 's/^pm.min_spare_servers = .*/pm.min_spare_servers = 1/' /etc/php/8.4/fpm/pool.d/www.conf 2>/dev/null || true
|
||||
sed -i 's/^pm.max_spare_servers = .*/pm.max_spare_servers = 1/' /etc/php/8.4/fpm/pool.d/www.conf 2>/dev/null || true
|
||||
systemctl restart php8.4-fpm 2>/dev/null || true
|
||||
log_info "php-fpm optimise (max 2 workers)"
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# RESUME
|
||||
# -------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "============================================="
|
||||
echo " Optimisation desktop terminee !"
|
||||
echo "============================================="
|
||||
echo ""
|
||||
echo "Composants desactives:"
|
||||
echo " - pcmanfm (gestionnaire fichiers) ~38 Mo"
|
||||
echo " - wf-panel-pi (barre de taches) ~37 Mo"
|
||||
echo " - xdg-desktop-portal* (portails) ~77 Mo"
|
||||
echo " - polkit-mate-auth-agent ~13 Mo"
|
||||
echo " - gvfsd + volume monitors ~30 Mo"
|
||||
echo " - ModemManager ~6 Mo"
|
||||
echo " - accounts-daemon ~7 Mo"
|
||||
echo " - colord ~10 Mo"
|
||||
echo " - rpcbind + blkmapd ~4 Mo"
|
||||
echo " - upower ~9 Mo"
|
||||
echo " ----------------------------------------"
|
||||
echo " Total estime: ~231 Mo"
|
||||
echo ""
|
||||
echo -e "${YELLOW}IMPORTANT: Redemarrer pour appliquer les changements${NC}"
|
||||
echo " sudo reboot"
|
||||
echo ""
|
||||
echo "Pour restaurer le desktop original:"
|
||||
echo " bash $0 --restore"
|
||||
echo " sudo reboot"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user