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
|
|
|
#!/bin/bash
|
|
|
|
|
# macbook-setup/setup-desktop.sh
|
2026-03-09 19:55:58 +01:00
|
|
|
# Desktop-Setup: oh-my-zsh, Zsh-Tooling, Claude Code, PrusaSlicer, Dotfiles, XFCE
|
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
|
|
|
# Braucht eine laufende Desktop-Session (XFCE) — NICHT in chroot ausführen!
|
|
|
|
|
# Verwendung: bash setup-desktop.sh
|
|
|
|
|
# Wird automatisch beim ersten Login gestartet (via Autostart)
|
|
|
|
|
|
2026-03-10 19:28:16 +01:00
|
|
|
export LANG=en_US.UTF-8
|
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
|
|
|
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'
|
2026-03-10 19:28:16 +01:00
|
|
|
ok() { echo -e "${GREEN}[OK] $*${NC}"; }
|
|
|
|
|
warn() { echo -e "${YELLOW}[!!] $*${NC}"; }
|
|
|
|
|
fail() { echo -e "${RED}[FAIL] $*${NC}"; }
|
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
|
|
|
|
|
|
|
|
# ── Root-Check ───────────────────────────────────────────────────────────
|
2026-03-10 19:28:16 +01:00
|
|
|
[[ $EUID -eq 0 ]] && { fail "Nicht als root ausführen!"; exit 1; }
|
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
|
|
|
|
|
|
|
|
echo ""
|
2026-03-10 19:28:16 +01:00
|
|
|
echo "============================================"
|
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
|
|
|
echo " setup-desktop.sh startet"
|
2026-03-10 19:28:16 +01:00
|
|
|
echo "============================================"
|
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
|
|
|
|
|
|
|
|
# ── 1. oh-my-zsh ────────────────────────────────────────────────────────
|
2026-03-09 19:55:58 +01:00
|
|
|
echo -e "\n=== 1/8 oh-my-zsh ==="
|
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
|
|
|
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"
|
|
|
|
|
|
2026-03-09 19:55:58 +01:00
|
|
|
# ── 2. Zsh-Plugins & Powerlevel10k ──────────────────────────────────────
|
|
|
|
|
echo -e "\n=== 2/8 Zsh-Plugins & Powerlevel10k ==="
|
|
|
|
|
|
|
|
|
|
# zsh-syntax-highlighting (Submodule im Dotfiles-Repo ist leer)
|
|
|
|
|
ZSH_SHL_DIR="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
|
|
|
|
|
if [[ ! -d "$ZSH_SHL_DIR/.git" ]]; then
|
|
|
|
|
rm -rf "$ZSH_SHL_DIR"
|
|
|
|
|
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_SHL_DIR"
|
|
|
|
|
fi
|
|
|
|
|
ok "zsh-syntax-highlighting"
|
|
|
|
|
|
|
|
|
|
# Powerlevel10k (Submodule im Dotfiles-Repo ist leer)
|
|
|
|
|
P10K_DIR="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
|
|
|
|
|
if [[ ! -d "$P10K_DIR/.git" ]]; then
|
|
|
|
|
rm -rf "$P10K_DIR"
|
|
|
|
|
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "$P10K_DIR"
|
|
|
|
|
fi
|
|
|
|
|
ok "Powerlevel10k"
|
|
|
|
|
|
|
|
|
|
# ── 3. MesloLGS NF Font (Powerlevel10k-Icons) ───────────────────────────
|
|
|
|
|
echo -e "\n=== 3/8 MesloLGS NF Font ==="
|
|
|
|
|
FONT_DIR="$HOME/.local/share/fonts"
|
|
|
|
|
mkdir -p "$FONT_DIR"
|
|
|
|
|
FONT_BASE="https://github.com/romkatv/powerlevel10k-media/raw/master"
|
|
|
|
|
for font in "MesloLGS NF Regular.ttf" "MesloLGS NF Bold.ttf" \
|
|
|
|
|
"MesloLGS NF Italic.ttf" "MesloLGS NF Bold Italic.ttf"; do
|
|
|
|
|
if [[ ! -f "$FONT_DIR/$font" ]]; then
|
|
|
|
|
curl -fsSL -o "$FONT_DIR/$font" "$FONT_BASE/${font// /%20}"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
fc-cache -f "$FONT_DIR" 2>/dev/null || true
|
|
|
|
|
ok "MesloLGS NF Fonts installiert"
|
|
|
|
|
|
|
|
|
|
# ── 4. npm global + Claude Code ─────────────────────────────────────────
|
|
|
|
|
echo -e "\n=== 4/8 Claude Code ==="
|
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
|
|
|
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"
|
|
|
|
|
|
2026-03-11 18:29:20 +01:00
|
|
|
# ── 5. Flatpak-Apps (PrusaSlicer + Brave) ──────────────────────────────
|
|
|
|
|
echo -e "\n=== 5/8 Flatpak-Apps ==="
|
2026-03-08 11:46:21 +01:00
|
|
|
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
|
|
|
flatpak install --user -y flathub com.prusa3d.PrusaSlicer
|
|
|
|
|
ok "PrusaSlicer installiert (Flatpak)"
|
2026-03-11 18:29:20 +01:00
|
|
|
flatpak install --user -y flathub com.brave.Browser
|
|
|
|
|
ok "Brave Browser installiert (Flatpak)"
|
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
|
|
|
|
2026-03-09 19:55:58 +01:00
|
|
|
# ── 6. PlatformIO (pipx) ────────────────────────────────────────────────
|
|
|
|
|
echo -e "\n=== 6/8 PlatformIO ==="
|
|
|
|
|
if ! command -v pio &>/dev/null; then
|
|
|
|
|
pipx install platformio
|
|
|
|
|
pipx ensurepath
|
|
|
|
|
fi
|
|
|
|
|
ok "PlatformIO installiert (pipx)"
|
|
|
|
|
|
|
|
|
|
# ── 7. Dot-Files ────────────────────────────────────────────────────────
|
|
|
|
|
echo -e "\n=== 7/8 Dot-Files ==="
|
2026-03-07 16:58:06 +01:00
|
|
|
DOTFILES_DIR="$HOME/git-projekte/dotfiles-rene"
|
|
|
|
|
if [[ ! -d "$DOTFILES_DIR" ]]; then
|
|
|
|
|
mkdir -p "$HOME/git-projekte"
|
|
|
|
|
git clone "$DOTFILES_REPO" "$DOTFILES_DIR"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Neovim
|
|
|
|
|
if [[ -f "$DOTFILES_DIR/nvim/install-nvim-dotfiles.sh" ]]; then
|
|
|
|
|
bash "$DOTFILES_DIR/nvim/install-nvim-dotfiles.sh"
|
|
|
|
|
ok "Dot-Files: nvim"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Micro
|
|
|
|
|
if [[ -f "$DOTFILES_DIR/micro/install-micro-dotfiles.sh" ]]; then
|
|
|
|
|
bash "$DOTFILES_DIR/micro/install-micro-dotfiles.sh"
|
|
|
|
|
ok "Dot-Files: micro"
|
|
|
|
|
fi
|
|
|
|
|
|
2026-03-09 19:55:58 +01:00
|
|
|
# oh-my-zsh custom (platformio.zsh etc.)
|
2026-03-07 16:58:06 +01:00
|
|
|
if [[ -d "$DOTFILES_DIR/oh-my-zsh/custom" ]] && [[ -d ~/.oh-my-zsh/custom ]]; then
|
|
|
|
|
for f in "$DOTFILES_DIR/oh-my-zsh/custom"/*.zsh; do
|
|
|
|
|
[[ -f "$f" ]] && ln -sf "$f" ~/.oh-my-zsh/custom/
|
|
|
|
|
done
|
|
|
|
|
ok "Dot-Files: oh-my-zsh custom"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# heic-scripts nach ~/bin
|
2026-03-09 19:55:58 +01:00
|
|
|
mkdir -p ~/bin
|
2026-03-07 16:58:06 +01:00
|
|
|
if [[ -d "$DOTFILES_DIR/heic-scripts" ]]; then
|
|
|
|
|
for script in "$DOTFILES_DIR/heic-scripts"/*; do
|
2026-03-09 19:55:58 +01:00
|
|
|
[[ -f "$script" ]] && chmod +x "$script" && ln -sf "$script" ~/bin/
|
2026-03-07 16:58:06 +01:00
|
|
|
done
|
|
|
|
|
ok "Dot-Files: heic-scripts → ~/bin"
|
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
|
|
|
fi
|
|
|
|
|
|
2026-03-09 19:55:58 +01:00
|
|
|
# git-check-all.sh + git-update-all.sh nach ~/
|
|
|
|
|
if [[ -d "$DOTFILES_DIR/bin" ]]; then
|
|
|
|
|
for script in "$DOTFILES_DIR/bin"/*; do
|
|
|
|
|
[[ -f "$script" ]] && chmod +x "$script" && ln -sf "$script" ~/
|
|
|
|
|
done
|
2026-03-14 08:29:52 +01:00
|
|
|
ok "Dot-Files: git-check-all.sh, git-update-all.sh, git-sync-all.sh → ~/"
|
2026-03-09 19:55:58 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# .zshrc (Linux-Version, ohne Conda/LM Studio/iTerm2)
|
|
|
|
|
cat > ~/.zshrc <<'ZSHEOF'
|
|
|
|
|
# ----------------------------------------------------------
|
|
|
|
|
# Zsh-Konfiguration fuer Rene (Linux / MacBook Pro)
|
|
|
|
|
# Oh My Zsh + Powerlevel10k + Micro
|
|
|
|
|
# ----------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
# 1) Powerlevel10k Instant Prompt (muss sehr weit oben stehen)
|
|
|
|
|
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
|
|
|
|
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 2) Oh My Zsh Basis
|
|
|
|
|
export ZSH="$HOME/.oh-my-zsh"
|
|
|
|
|
ZSH_THEME="powerlevel10k/powerlevel10k"
|
|
|
|
|
|
|
|
|
|
plugins=(
|
|
|
|
|
git
|
|
|
|
|
zsh-syntax-highlighting
|
|
|
|
|
zoxide
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
source "$ZSH/oh-my-zsh.sh"
|
|
|
|
|
|
|
|
|
|
# 3) Powerlevel10k-Konfiguration
|
|
|
|
|
[[ -f "$HOME/.p10k.zsh" ]] && source "$HOME/.p10k.zsh"
|
|
|
|
|
|
|
|
|
|
# 4) Standard-Editor (lokal: micro, SSH: nicht erzwingen)
|
|
|
|
|
if [[ -z "$SSH_CONNECTION" ]]; then
|
|
|
|
|
export EDITOR="micro"
|
|
|
|
|
export VISUAL="micro"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 5) Pfade
|
|
|
|
|
export PATH="$HOME/bin:$HOME/.local/bin:$HOME/.npm-global/bin:$PATH"
|
|
|
|
|
|
|
|
|
|
# 6) Aliases
|
|
|
|
|
|
|
|
|
|
# ls-Varianten
|
|
|
|
|
alias ll='ls -lha'
|
|
|
|
|
alias la='ls -A'
|
|
|
|
|
alias l='ls -lh'
|
|
|
|
|
|
|
|
|
|
# Verzeichnisse
|
|
|
|
|
alias ..='cd ..'
|
|
|
|
|
alias ...='cd ../..'
|
|
|
|
|
alias ....='cd ../../..'
|
|
|
|
|
|
|
|
|
|
# Konfigdateien
|
|
|
|
|
alias zshconfig='micro ~/.zshrc'
|
|
|
|
|
alias p10kconfig='micro ~/.p10k.zsh'
|
|
|
|
|
|
|
|
|
|
# Git-Kurzbefehle
|
|
|
|
|
alias gs='git status'
|
|
|
|
|
alias ga='git add'
|
|
|
|
|
alias gc='git commit'
|
|
|
|
|
alias gp='git push'
|
|
|
|
|
alias gl='git log --oneline --graph --decorate'
|
|
|
|
|
alias gitcheck="~/git-check-all.sh --short"
|
|
|
|
|
alias gitupdate="~/git-update-all.sh"
|
2026-03-14 08:29:52 +01:00
|
|
|
alias gitsync="~/git-sync-all.sh"
|
2026-03-09 19:55:58 +01:00
|
|
|
|
|
|
|
|
# 7) History
|
|
|
|
|
HISTFILE="$HOME/.zsh_history"
|
|
|
|
|
HISTSIZE=5000
|
|
|
|
|
SAVEHIST=5000
|
|
|
|
|
setopt HIST_IGNORE_DUPS
|
|
|
|
|
setopt HIST_IGNORE_SPACE
|
|
|
|
|
setopt SHARE_HISTORY
|
|
|
|
|
|
|
|
|
|
# 8) Zsh-Optionen
|
|
|
|
|
setopt AUTO_CD
|
|
|
|
|
|
|
|
|
|
# 9) Fenster-/Tab-Titel
|
|
|
|
|
precmd() { print -Pn "\e]0;%n@%m: %~\a" }
|
|
|
|
|
export COLORTERM=truecolor
|
|
|
|
|
ZSHEOF
|
|
|
|
|
ok "Dot-Files: .zshrc"
|
|
|
|
|
|
|
|
|
|
# .p10k.zsh (vom Mac kopieren, falls im Repo vorhanden, sonst Wizard beim ersten Start)
|
|
|
|
|
if [[ -f "$DOTFILES_DIR/.p10k.zsh" ]]; then
|
|
|
|
|
cp "$DOTFILES_DIR/.p10k.zsh" ~/.p10k.zsh
|
|
|
|
|
ok "Dot-Files: .p10k.zsh"
|
|
|
|
|
else
|
|
|
|
|
warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# ── 8. XFCE-Einstellungen ───────────────────────────────────────────────
|
|
|
|
|
echo -e "\n=== 8/8 XFCE-Einstellungen ==="
|
|
|
|
|
|
|
|
|
|
# Keyboard: XFCE soll /etc/default/keyboard respektieren (nicht eigenes Layout erzwingen)
|
|
|
|
|
if command -v xfconf-query &>/dev/null; then
|
|
|
|
|
xfconf-query -c keyboard-layout -p /Default/XkbDisable -n -t bool -s true 2>/dev/null || true
|
|
|
|
|
ok "XFCE Keyboard: System-Layout wird verwendet"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Energieeinstellungen
|
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
|
|
|
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
|
2026-03-09 19:55:58 +01:00
|
|
|
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-battery -s 5 --create -t int
|
|
|
|
|
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-battery-sleep -s 6 --create -t int
|
|
|
|
|
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-battery-off -s 7 --create -t int
|
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
|
|
|
ok "XFCE Power Manager konfiguriert"
|
|
|
|
|
else
|
|
|
|
|
warn "xfconf-query nicht gefunden — XFCE Energieeinstellungen übersprungen"
|
|
|
|
|
fi
|
|
|
|
|
|
2026-03-09 19:55:58 +01:00
|
|
|
# XFCE Terminal: MesloLGS NF als Schriftart setzen
|
|
|
|
|
XFCE_TERM_RC="$HOME/.config/xfce4/terminal/terminalrc"
|
|
|
|
|
if [[ -d "$HOME/.config/xfce4" ]]; then
|
|
|
|
|
mkdir -p "$(dirname "$XFCE_TERM_RC")"
|
|
|
|
|
if [[ -f "$XFCE_TERM_RC" ]]; then
|
|
|
|
|
sed -i 's/^FontName=.*/FontName=MesloLGS NF 11/' "$XFCE_TERM_RC" 2>/dev/null || true
|
|
|
|
|
else
|
|
|
|
|
cat > "$XFCE_TERM_RC" <<'TERMEOF'
|
|
|
|
|
[Configuration]
|
|
|
|
|
FontName=MesloLGS NF 11
|
|
|
|
|
MiscAlwaysShowTabs=FALSE
|
|
|
|
|
MiscBell=FALSE
|
|
|
|
|
MiscDefaultGeometry=120x35
|
|
|
|
|
ScrollingBar=TERMINAL_SCROLLBAR_NONE
|
|
|
|
|
TERMEOF
|
|
|
|
|
fi
|
|
|
|
|
ok "XFCE Terminal: MesloLGS NF Schriftart"
|
|
|
|
|
fi
|
|
|
|
|
|
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
|
|
|
# ── 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 ""
|
2026-03-10 19:28:16 +01:00
|
|
|
echo "============================================"
|
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
|
|
|
echo -e " ${GREEN}Desktop-Setup abgeschlossen!${NC}"
|
2026-03-10 19:28:16 +01:00
|
|
|
echo "============================================"
|
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
|
|
|
echo ""
|
|
|
|
|
warn "Noch manuell erledigen:"
|
2026-03-12 16:52:48 +01:00
|
|
|
echo " 1. Synology Drive Client installieren (.deb von synology.com)"
|
|
|
|
|
echo " 2. Thunderbird starten → Profil aus Synology Drive einbinden"
|
|
|
|
|
echo " 3. Brave starten → Synchronisation einrichten"
|
|
|
|
|
echo " 4. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen"
|