macbook-setup/setup-desktop.sh
rene 1f530674be Split setup.sh in chroot-sicheren und Desktop-Teil
setup.sh rief bisher alles in einem Skript auf, was in der
Autoinstall-ISO (curtin in-target/chroot) teilweise fehlschlaegt:
xfconf-query, npm, oh-my-zsh, PrusaSlicer brauchen eine laufende
Desktop-Session.

Neuer Aufbau:
- setup-base.sh: Pakete, Configs, Locale, Services (laeuft in chroot)
- setup-desktop.sh: oh-my-zsh, Claude Code, PrusaSlicer, Dotfiles,
  XFCE-Einstellungen (laeuft beim ersten Desktop-Login)
- setup.sh: Wrapper fuer Option A (manuelles curl | bash nach Install)

user-data ruft jetzt setup-base.sh in late-commands auf und richtet
einen XFCE-Autostart fuer setup-desktop.sh beim ersten Login ein.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:41:22 +01:00

103 lines
5.6 KiB
Bash

#!/bin/bash
# macbook-setup/setup-desktop.sh
# Desktop-Setup: oh-my-zsh, Claude Code, PrusaSlicer, Dotfiles, XFCE-Einstellungen
# Braucht eine laufende Desktop-Session (XFCE) — NICHT in chroot ausführen!
# Verwendung: bash setup-desktop.sh
# Wird automatisch beim ersten Login gestartet (via Autostart)
set -e
FORGEJO="https://git.motocamp.de"
DOTFILES_REPO="$FORGEJO/rene/dotfiles-rene.git"
# ── Farben ──────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok() { echo -e "${GREEN}$*${NC}"; }
warn() { echo -e "${YELLOW}$*${NC}"; }
err() { echo -e "${RED}$*${NC}"; exit 1; }
# ── Root-Check ───────────────────────────────────────────────────────────
[[ $EUID -eq 0 ]] && err "Nicht als root ausführen!"
echo ""
echo "════════════════════════════════════════════"
echo " setup-desktop.sh startet"
echo "════════════════════════════════════════════"
# ── 1. oh-my-zsh ────────────────────────────────────────────────────────
echo -e "\n=== 1/5 oh-my-zsh ==="
if [[ ! -d ~/.oh-my-zsh ]]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi
ok "oh-my-zsh installiert"
# ── 2. npm global + Claude Code ─────────────────────────────────────────
echo -e "\n=== 2/5 Claude Code ==="
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH="$HOME/.npm-global/bin:$PATH"
npm install -g @anthropic-ai/claude-code
ok "Claude Code installiert"
# ── 3. PrusaSlicer ──────────────────────────────────────────────────────
echo -e "\n=== 3/5 PrusaSlicer AppImage ==="
mkdir -p ~/Applications
PRUSA_URL="https://github.com/prusa3d/PrusaSlicer/releases/download/version_2.8.1/PrusaSlicer-2.8.1+linux-x64-GTK3-202410181354.AppImage"
if [[ ! -f ~/Applications/PrusaSlicer.AppImage ]]; then
wget -q --show-progress -O ~/Applications/PrusaSlicer.AppImage "$PRUSA_URL"
chmod +x ~/Applications/PrusaSlicer.AppImage
fi
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/prusaslicer.desktop <<EOF
[Desktop Entry]
Name=PrusaSlicer
Exec=$HOME/Applications/PrusaSlicer.AppImage
Icon=prusaslicer
Type=Application
Categories=Graphics;
EOF
ok "PrusaSlicer installiert"
# ── 4. Dot-Files ────────────────────────────────────────────────────────
echo -e "\n=== 4/5 Dot-Files ==="
if [[ ! -d ~/dotfiles ]]; then
git clone "$DOTFILES_REPO" ~/dotfiles
fi
cd ~/dotfiles
for pkg in zsh nvim git ssh; do
[[ -d "$pkg" ]] && stow "$pkg" && ok "Dot-Files: $pkg"
done
cd ~
# ── 5. XFCE Energieeinstellungen ────────────────────────────────────────
echo -e "\n=== 5/5 XFCE Energieeinstellungen ==="
if command -v xfconf-query &>/dev/null; then
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-ac-off -s 0 --create -t int
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-ac-sleep -s 0 --create -t int
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-ac -s 0 --create -t int
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-battery-off -s 10 --create -t int
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-battery-sleep -s 10 --create -t int
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-battery -s 10 --create -t int
ok "XFCE Power Manager konfiguriert"
else
warn "xfconf-query nicht gefunden — XFCE Energieeinstellungen übersprungen"
fi
# ── Autostart entfernen ─────────────────────────────────────────────────
AUTOSTART_FILE="$HOME/.config/autostart/macbook-setup-desktop.desktop"
if [[ -f "$AUTOSTART_FILE" ]]; then
rm "$AUTOSTART_FILE"
ok "Firstboot-Autostart entfernt"
fi
# ── Zusammenfassung ──────────────────────────────────────────────────────
echo ""
echo "════════════════════════════════════════════"
echo -e " ${GREEN}Desktop-Setup abgeschlossen!${NC}"
echo "════════════════════════════════════════════"
echo ""
warn "Noch manuell erledigen:"
echo " 1. WireGuard-Config einspielen:"
echo " sudo cp wg0.conf /etc/wireguard/ && sudo systemctl enable --now wg-quick@wg0"
echo " 2. Synology Drive Client installieren (.deb von synology.com)"
echo " 3. Thunderbird starten → Profil aus Synology Drive einbinden"
echo " 4. Brave starten → Synchronisation einrichten"