Brave auf apt, Kitty, FaceTime-Webcam, WireGuard wg-quick, SSH-Setup, HiDPI-Verbesserungen

- Brave Browser: von Flatpak auf apt mit offiziellem Repo umgestellt
- Kitty Terminal: Installation (apt) + Konfiguration in setup-desktop.sh
- FaceTime HD Webcam: Firmware + DKMS-Treiber (bcwc_pcie)
- WireGuard: von NetworkManager auf wg-quick umgestellt, DNS fuer m13
- SSH-Key-Generierung + automatische HTTPS→SSH Umstellung der Repos
- Thunderbird: von apt auf Snap (wegen .deb-Bug)
- XFCE HiDPI: Noto Sans 10pt, Panel 28px, fuer beide MBPs vereinheitlicht
- Tastatur: ctrl:swap_lwin_lctl fuer Mac-like Cmd+C/V
- Standard-Apps: Brave (Browser), Thunderbird (Mail)
- CLAUDE.md: Doku aktualisiert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rene 2026-03-31 12:43:24 +02:00
parent 273978b78f
commit aa24f89511
4 changed files with 234 additions and 92 deletions

View file

@ -36,17 +36,17 @@ die Setup-Skripte nicht heruntergeladen werden.
- Wenn Befehle auf dem MacBook noetig sind: per `ssh rene@<ip>` verbinden und dort ausfuehren (statt den User bitten, Befehle abzutippen) - Wenn Befehle auf dem MacBook noetig sind: per `ssh rene@<ip>` verbinden und dort ausfuehren (statt den User bitten, Befehle abzutippen)
## Paketquellen-Zuordnung ## Paketquellen-Zuordnung
- **apt:** System-Pakete, xubuntu-desktop, Thunderbird, KeePassXC, default-jre etc. - **apt:** System-Pakete, xubuntu-desktop, KeePassXC, Kitty, Brave Browser, default-jre etc.
- **Snap:** FreeCAD, LibreOffice (wegen "benutzerdefinierte Installation nicht abgeschlossen" Bug bei .deb), Bitwarden - **Snap:** FreeCAD, LibreOffice (wegen "benutzerdefinierte Installation nicht abgeschlossen" Bug bei .deb), Bitwarden, Thunderbird
- **Flatpak:** Brave Browser (wegen SIGTRAP/int3 Crash bei .deb auf aelterer HW), PrusaSlicer - **Flatpak:** PrusaSlicer
- flatpak muss in setup-base.sh (root) installiert werden, nicht in setup-desktop.sh (user) - flatpak muss in setup-base.sh (root) installiert werden, nicht in setup-desktop.sh (user)
## Geloeste Probleme (Lessons Learned) ## Geloeste Probleme (Lessons Learned)
### Brave Browser ### Brave Browser
- .deb Version crasht mit SIGTRAP (int3) auf aelterer Hardware - .deb Version crashte frueher mit SIGTRAP (int3) auf aelterer Hardware
- AppArmor `apparmor_restrict_unprivileged_userns=1` war NICHT die Ursache - Inzwischen funktioniert .deb/apt mit offiziellem Brave-Repo
- Loesung: Flatpak verwenden - Loesung: apt mit Brave-Repo (in setup-base.sh)
### LibreOffice ### LibreOffice
- .deb Version zeigt "benutzerdefinierte Installation nicht abgeschlossen" - .deb Version zeigt "benutzerdefinierte Installation nicht abgeschlossen"
@ -56,15 +56,37 @@ die Setup-Skripte nicht heruntergeladen werden.
### HiDPI / Retina Display ### HiDPI / Retina Display
- GDK WindowScalingFactor=2 + DPI=96 (NICHT 128!) - GDK WindowScalingFactor=2 + DPI=96 (NICHT 128!)
- Cursor-Groesse: 48 - Cursor-Groesse: 48
- GTK-Schrift: Noto Sans 10, Titelschrift: Noto Sans Bold 10
- Panel-Hoehe: 28px (passend zur Schriftgroesse bei 2x-Skalierung)
- Referenz-Schriftgroesse: Kitty 18pt MesloLGS NF — Systemschriften sollen visuell dazu passen
- xfwm4: Default-xhdpi Theme - xfwm4: Default-xhdpi Theme
- XFCE Compositor deaktivieren - XFCE Compositor deaktivieren
- xfce4-display-settings deaktivieren (verursacht Endlosschleife) - xfce4-display-settings deaktivieren (verursacht Endlosschleife)
### FaceTime HD Webcam
- Broadcom 1570, haengt am PCIe-Bus (nicht USB) — kein Treiber im Kernel
- Firmware: github.com/patjak/facetimehd-firmware (extrahiert aus macOS-Treiber)
- Treiber: github.com/patjak/bcwc_pcie, installiert via DKMS (automatischer Rebuild bei Kernel-Updates)
- Modul: facetimehd, autoload via /etc/modules-load.d/facetimehd.conf
### Tastatur ### Tastatur
- iso_layout=1 + de (mit Dead Keys, NICHT nodeadkeys) + lv3:lalt_switch - iso_layout=1 + de (mit Dead Keys, NICHT nodeadkeys) + lv3:lalt_switch + ctrl:swap_lwin_lctl
- nodeadkeys verhindert Akzent-Kombination (´e statt é) - nodeadkeys verhindert Akzent-Kombination (´e statt é)
- ctrl:swap_lwin_lctl tauscht Cmd und Ctrl (Mac-like Copy/Paste mit Cmd+C/V)
- XFCE Keyboard-Override deaktivieren (XkbDisable) - XFCE Keyboard-Override deaktivieren (XkbDisable)
### Terminal
- Kitty als Standard-Terminal (statt xfce4-terminal)
- xfce4-terminal bleibt installiert als Fallback
- Kitty Config: MesloLGS NF 18pt, copy_or_interrupt fuer Cmd+C (kopiert bei Selektion, sonst SIGINT)
- xfce4-terminal unterstuetzt kein Remapping von Ctrl+C/V auf Copy/Paste
### Git / SSH
- SSH-Key (ed25519) wird in setup-desktop.sh generiert
- Forgejo SSH laeuft auf dsm.motocamp.de:2222 (nicht git.motocamp.de, nicht Port 22)
- Alle Repos werden automatisch von HTTPS auf SSH umgestellt
- git credential.helper store als Fallback bis SSH-Key in Forgejo hinterlegt ist
### Netzwerk & WLAN ### Netzwerk & WLAN
- NetworkManager statt netplan fuer WLAN - NetworkManager statt netplan fuer WLAN
- WLAN-Config beim netplan-zu-NM Umstieg erhalten - WLAN-Config beim netplan-zu-NM Umstieg erhalten
@ -73,8 +95,9 @@ die Setup-Skripte nicht heruntergeladen werden.
- /etc/hosts: dsm.motocamp.de → 10.47.11.10 (Synology direkt), git.motocamp.de → 10.47.11.23 (NPM/macvlan, da Gitea hinter Reverse Proxy) - /etc/hosts: dsm.motocamp.de → 10.47.11.10 (Synology direkt), git.motocamp.de → 10.47.11.23 (NPM/macvlan, da Gitea hinter Reverse Proxy)
### WireGuard VPN ### WireGuard VPN
- Konfiguration via NetworkManager .nmconnection (nicht wg-quick) - Konfiguration via wg-quick (Config in /etc/wireguard/wg-vps.conf)
- DNS + dns-search direkt im NM-Profil - DNS = 10.47.11.20 (Pihole) direkt in der WireGuard-Config
- Autostart via systemctl enable wg-quick@wg-vps
- **Key-Verwechslung:** m16/m13 hatten eigenen PublicKey als Peer-PublicKey eingetragen. NM zeigt keinen Fehler, wg show zeigt einfach keine Peers. Immer pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein. - **Key-Verwechslung:** m16/m13 hatten eigenen PublicKey als Peer-PublicKey eingetragen. NM zeigt keinen Fehler, wg show zeigt einfach keine Peers. Immer pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein.
- Server-PublicKey gegen funktionierende Clients verifizieren - Server-PublicKey gegen funktionierende Clients verifizieren

View file

@ -41,7 +41,7 @@ echo " setup-base.sh für MBP $MODEL\" startet"
echo "════════════════════════════════════════════" echo "════════════════════════════════════════════"
# ── 0. sudoers reparieren (macOS-Installer hinterlässt macOS-sudoers) ────── # ── 0. sudoers reparieren (macOS-Installer hinterlässt macOS-sudoers) ──────
echo -e "\n=== 0/11 sudoers ===" echo -e "\n=== 0/12 sudoers ==="
cat > /etc/sudoers <<'SUDOEOF' cat > /etc/sudoers <<'SUDOEOF'
Defaults env_reset Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
@ -58,7 +58,7 @@ chmod 440 /etc/sudoers.d/rene
ok "sudoers: Linux-Standard + NOPASSWD fuer rene" ok "sudoers: Linux-Standard + NOPASSWD fuer rene"
# ── 1. Kritische Hardware-Fixes ZUERST (vor allem anderen) ─────────────── # ── 1. Kritische Hardware-Fixes ZUERST (vor allem anderen) ───────────────
echo -e "\n=== 1/11 Hardware-Fixes ===" echo -e "\n=== 1/12 Hardware-Fixes ==="
# GPU: AMD Radeon blacklisten (MBP 16") # GPU: AMD Radeon blacklisten (MBP 16")
if [[ "$MODEL" == "16" ]]; then if [[ "$MODEL" == "16" ]]; then
@ -89,7 +89,7 @@ cat > /etc/default/keyboard <<EOF
XKBMODEL="macbook79" XKBMODEL="macbook79"
XKBLAYOUT="de" XKBLAYOUT="de"
XKBVARIANT="" XKBVARIANT=""
XKBOPTIONS="lv3:lalt_switch,terminate:ctrl_alt_bksp" XKBOPTIONS="lv3:lalt_switch,terminate:ctrl_alt_bksp,ctrl:swap_lwin_lctl"
EOF EOF
dpkg-reconfigure -f noninteractive keyboard-configuration 2>/dev/null || true dpkg-reconfigure -f noninteractive keyboard-configuration 2>/dev/null || true
ok "Tastatur: mac_deadkeys" ok "Tastatur: mac_deadkeys"
@ -105,23 +105,23 @@ update-initramfs -u 2>/dev/null || true
ok "initramfs aktualisiert" ok "initramfs aktualisiert"
# ── 2. Sleep/Suspend verhindern während Installation ───────────────────── # ── 2. Sleep/Suspend verhindern während Installation ─────────────────────
echo -e "\n=== 2/11 Sleep verhindern ===" echo -e "\n=== 2/12 Sleep verhindern ==="
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true
ok "Sleep/Suspend deaktiviert (für Installation)" ok "Sleep/Suspend deaktiviert (für Installation)"
# ── 3. Eventuelle unterbrochene Installationen reparieren ──────────────── # ── 3. Eventuelle unterbrochene Installationen reparieren ────────────────
echo -e "\n=== 3/11 dpkg reparieren ===" echo -e "\n=== 3/12 dpkg reparieren ==="
dpkg --configure -a 2>/dev/null || true dpkg --configure -a 2>/dev/null || true
apt install -f -y 2>/dev/null || true apt install -f -y 2>/dev/null || true
ok "dpkg/apt repariert" ok "dpkg/apt repariert"
# ── 4. System aktualisieren ────────────────────────────────────────────── # ── 4. System aktualisieren ──────────────────────────────────────────────
echo -e "\n=== 4/11 System aktualisieren ===" echo -e "\n=== 4/12 System aktualisieren ==="
apt update && apt upgrade -y || warn "apt upgrade hatte Probleme" apt update && apt upgrade -y || warn "apt upgrade hatte Probleme"
ok "System aktuell" ok "System aktuell"
# ── 5. Pakete installieren ─────────────────────────────────────────────── # ── 5. Pakete installieren ───────────────────────────────────────────────
echo -e "\n=== 5/11 Pakete installieren ===" echo -e "\n=== 5/12 Pakete installieren ==="
apt install -y \ apt install -y \
xubuntu-core \ xubuntu-core \
bcmwl-kernel-source \ bcmwl-kernel-source \
@ -130,7 +130,7 @@ apt install -y \
tlp tlp-rdw \ tlp tlp-rdw \
git curl wget stow \ git curl wget stow \
zsh neovim \ zsh neovim \
build-essential \ build-essential dkms \
python3 python3-pip python3-venv \ python3 python3-pip python3-venv \
nodejs npm \ nodejs npm \
wireguard wireguard-tools \ wireguard wireguard-tools \
@ -140,8 +140,8 @@ apt install -y \
zoxide \ zoxide \
micro \ micro \
flatpak \ flatpak \
thunderbird thunderbird-locale-de \
keepassxc \ keepassxc \
kitty \
htop btop cmatrix libcurses-perl cowsay fortune-mod fortunes-de \ htop btop cmatrix libcurses-perl cowsay fortune-mod fortunes-de \
bat eza fd-find fzf ripgrep tldr ncdu duf \ bat eza fd-find fzf ripgrep tldr ncdu duf \
timeshift \ timeshift \
@ -194,13 +194,62 @@ fi
snap install freecad 2>/dev/null || warn "FreeCAD Snap uebersprungen" snap install freecad 2>/dev/null || warn "FreeCAD Snap uebersprungen"
snap install libreoffice 2>/dev/null || warn "LibreOffice Snap uebersprungen" snap install libreoffice 2>/dev/null || warn "LibreOffice Snap uebersprungen"
snap install bitwarden 2>/dev/null || warn "Bitwarden Snap uebersprungen" snap install bitwarden 2>/dev/null || warn "Bitwarden Snap uebersprungen"
snap install thunderbird 2>/dev/null || warn "Thunderbird Snap uebersprungen"
# ── 6. Brave Browser (wird in setup-desktop.sh als Flatpak installiert) ── # ── 6. FaceTime HD Webcam (Broadcom 1570, PCIe) ─────────────────────────
echo -e "\n=== 6/11 Brave Browser ===" echo -e "\n=== 6/12 FaceTime HD Webcam ==="
ok "Brave wird als Flatpak in setup-desktop.sh installiert" if lspci | grep -qi "facetime"; then
if ! dkms status 2>/dev/null | grep -q "facetimehd"; then
# Firmware extrahieren
FTMP=$(mktemp -d)
git clone --depth 1 https://github.com/patjak/facetimehd-firmware.git "$FTMP/fw" \
&& make -C "$FTMP/fw" \
&& make -C "$FTMP/fw" install \
&& ok "facetimehd Firmware installiert" \
|| warn "facetimehd Firmware fehlgeschlagen"
# Treiber bauen und via DKMS installieren
git clone --depth 1 https://github.com/patjak/bcwc_pcie.git /usr/src/facetimehd-1.0 \
&& cat > /usr/src/facetimehd-1.0/dkms.conf <<'DKMSEOF'
PACKAGE_NAME="facetimehd"
PACKAGE_VERSION="1.0"
MAKE[0]="make -C /lib/modules/${kernelver}/build M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules"
CLEAN="make -C /lib/modules/${kernelver}/build M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"
BUILT_MODULE_NAME[0]="facetimehd"
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"
DKMSEOF
dkms add facetimehd/1.0 \
&& dkms build facetimehd/1.0 \
&& dkms install facetimehd/1.0 \
&& ok "facetimehd DKMS-Treiber installiert" \
|| warn "facetimehd DKMS fehlgeschlagen"
rm -rf "$FTMP"
else
ok "facetimehd bereits via DKMS installiert"
fi
# Modul beim Boot laden
echo "facetimehd" > /etc/modules-load.d/facetimehd.conf
# Modul jetzt laden (falls nicht in chroot)
if [[ "$(stat -c %d:%i /)" == "$(stat -c %d:%i /proc/1/root/.)" ]] 2>/dev/null; then
modprobe facetimehd 2>/dev/null || true
fi
else
ok "Keine FaceTime-Kamera erkannt — uebersprungen"
fi
# ── 7. Systemkonfigurationen ───────────────────────────────────────────── # ── 7. Brave Browser (apt-Repo) ──────────────────────────────────────────
echo -e "\n=== 7/11 Systemkonfigurationen ===" echo -e "\n=== 7/12 Brave Browser ==="
if ! command -v brave-browser &>/dev/null; then
curl -fsSLo /tmp/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
install -o root -g root -m 644 /tmp/brave-browser-archive-keyring.gpg /usr/share/keyrings/brave-browser-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" > /etc/apt/sources.list.d/brave-browser-release.list
apt update -qq && apt install -y brave-browser
rm -f /tmp/brave-browser-archive-keyring.gpg
fi
ok "Brave Browser installiert (apt)"
# ── 8. Systemkonfigurationen ─────────────────────────────────────────────
echo -e "\n=== 8/12 Systemkonfigurationen ==="
# mbpfan (modellabhängig) # mbpfan (modellabhängig)
if [[ -n "$REPO_DIR" && -f "$REPO_DIR/mbpfan-${MODEL}.conf" ]]; then if [[ -n "$REPO_DIR" && -f "$REPO_DIR/mbpfan-${MODEL}.conf" ]]; then
@ -220,55 +269,23 @@ else
chmod +x /usr/local/bin/temp-watch.sh || warn "temp-watch.sh Download fehlgeschlagen" chmod +x /usr/local/bin/temp-watch.sh || warn "temp-watch.sh Download fehlgeschlagen"
fi fi
# WireGuard via NetworkManager (.nmconnection direkt schreiben, kein nmcli noetig) # WireGuard via wg-quick (einfacher als NetworkManager, Config 1:1 verwendbar)
WG_CONF="$REPO_DIR/wireguard/m${MODEL}.conf" WG_CONF="$REPO_DIR/wireguard/m${MODEL}.conf"
if [[ -n "$REPO_DIR" && -f "$WG_CONF" ]]; then if [[ -n "$REPO_DIR" && -f "$WG_CONF" ]]; then
# Alte wg-quick-Config entfernen falls vorhanden # Alte NM-WireGuard-Verbindung entfernen falls vorhanden
systemctl disable --now wg-quick@wg0 2>/dev/null || true nmcli connection delete wg0 2>/dev/null || true
# Werte aus der WireGuard-Conf lesen rm -f /etc/NetworkManager/system-connections/wg0.nmconnection
WG_PRIVKEY=$(grep -oP 'PrivateKey\s*=\s*\K.*' "$WG_CONF") # wg-quick Config installieren (Dateiname = Interface-Name)
WG_LISTEN=$(grep -oP 'ListenPort\s*=\s*\K.*' "$WG_CONF") WG_NAME="wg-vps"
WG_ADDR=$(grep -oP 'Address\s*=\s*\K.*' "$WG_CONF") cp "$WG_CONF" "/etc/wireguard/${WG_NAME}.conf"
WG_PUBKEY=$(grep -oP 'PublicKey\s*=\s*\K.*' "$WG_CONF") chmod 600 "/etc/wireguard/${WG_NAME}.conf"
WG_PSK=$(grep -oP 'PresharedKey\s*=\s*\K.*' "$WG_CONF") # Service aktivieren (startet automatisch beim Boot)
WG_ALLOWED=$(grep -oP 'AllowedIPs\s*=\s*\K.*' "$WG_CONF" | tr -d ' ' | tr ',' ';') systemctl enable wg-quick@${WG_NAME} 2>/dev/null || true
WG_ENDPOINT=$(grep -oP 'Endpoint\s*=\s*\K.*' "$WG_CONF") # Starten falls nicht in chroot
WG_KEEPALIVE=$(grep -oP 'PersistentKeepalive\s*=\s*\K.*' "$WG_CONF") if [[ "$(stat -c %d:%i /)" == "$(stat -c %d:%i /proc/1/root/.)" ]] 2>/dev/null; then
# NM-Verbindungsdatei direkt schreiben (laeuft als root, Keys persistent) wg-quick up "$WG_NAME" 2>/dev/null || true
NM_CONN_DIR="/etc/NetworkManager/system-connections" fi
mkdir -p "$NM_CONN_DIR" ok "WireGuard ${WG_NAME} installiert (wg-quick, DNS: Pihole, autostart)"
cat > "$NM_CONN_DIR/wg0.nmconnection" <<WGEOF
[connection]
id=wg0
type=wireguard
interface-name=wg0
autoconnect=true
[wireguard]
listen-port=$WG_LISTEN
private-key=$WG_PRIVKEY
private-key-flags=0
[wireguard-peer.${WG_PUBKEY}]
preshared-key=$WG_PSK
preshared-key-flags=0
allowed-ips=$WG_ALLOWED;
endpoint=$WG_ENDPOINT
persistent-keepalive=$WG_KEEPALIVE
[ipv4]
method=manual
address1=$WG_ADDR
dns=10.47.11.20;10.47.11.1;
dns-search=~.;
[ipv6]
method=ignore
WGEOF
chmod 600 "$NM_CONN_DIR/wg0.nmconnection"
nmcli connection reload 2>/dev/null || true
nmcli connection up wg0 2>/dev/null || true
ok "WireGuard wg0.nmconnection geschrieben (DNS: 10.47.11.20, 10.47.11.1, autoconnect)"
else else
warn "WireGuard: keine lokale Config gefunden — manuell einrichten" warn "WireGuard: keine lokale Config gefunden — manuell einrichten"
fi fi
@ -276,7 +293,7 @@ fi
ok "Systemkonfigurationen gesetzt" ok "Systemkonfigurationen gesetzt"
# ── 8. XFCE-Konfiguration (beide MBPs haben Retina-Displays) ───────────── # ── 8. XFCE-Konfiguration (beide MBPs haben Retina-Displays) ─────────────
echo -e "\n=== 8/11 XFCE-Konfiguration (HiDPI) ===" echo -e "\n=== 8/12 XFCE-Konfiguration (HiDPI) ==="
XFCE_XML_DIR="/home/rene/.config/xfce4/xfconf/xfce-perchannel-xml" XFCE_XML_DIR="/home/rene/.config/xfce4/xfconf/xfce-perchannel-xml"
mkdir -p "$XFCE_XML_DIR" mkdir -p "$XFCE_XML_DIR"
@ -287,7 +304,7 @@ cat > "$XFCE_XML_DIR/xfwm4.xml" <<XFEOF
<property name="general" type="empty"> <property name="general" type="empty">
<property name="use_compositing" type="bool" value="false"/> <property name="use_compositing" type="bool" value="false"/>
<property name="theme" type="string" value="Default-xhdpi"/> <property name="theme" type="string" value="Default-xhdpi"/>
<property name="title_font" type="string" value="Sans Bold 9"/> <property name="title_font" type="string" value="Noto Sans Bold 10"/>
</property> </property>
</channel> </channel>
XFEOF XFEOF
@ -304,6 +321,7 @@ cat > "$XFCE_XML_DIR/xsettings.xml" <<XSEOF
</property> </property>
<property name="Gtk" type="empty"> <property name="Gtk" type="empty">
<property name="CursorThemeSize" type="int" value="48"/> <property name="CursorThemeSize" type="int" value="48"/>
<property name="FontName" type="string" value="Noto Sans 10"/>
</property> </property>
</channel> </channel>
XSEOF XSEOF
@ -312,11 +330,27 @@ XSEOF
dpkg-divert --local --rename --divert /usr/bin/xfce4-display-settings.real /usr/bin/xfce4-display-settings 2>/dev/null || true dpkg-divert --local --rename --divert /usr/bin/xfce4-display-settings.real /usr/bin/xfce4-display-settings 2>/dev/null || true
ln -sf /usr/bin/true /usr/bin/xfce4-display-settings ln -sf /usr/bin/true /usr/bin/xfce4-display-settings
chown -R 1000:1000 /home/rene/.config/xfce4 # Panel-Konfiguration (Höhe passend zur Schriftgröße)
ok "XFCE: Compositor aus, Retina-Skalierung, Display-Settings deaktiviert" PANEL_XML="$XFCE_XML_DIR/xfce4-panel.xml"
if [[ ! -f "$PANEL_XML" ]]; then
cat > "$PANEL_XML" <<PEOF
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-panel" version="1.0">
<property name="panels" type="array">
<value type="int" value="1"/>
<property name="panel-1" type="empty">
<property name="size" type="uint" value="28"/>
</property>
</property>
</channel>
PEOF
fi
# ── 9. Netzwerk: NetworkManager statt netplan ───────────────────────────── chown -R 1000:1000 /home/rene/.config/xfce4
echo -e "\n=== 9/11 Netzwerk ===" ok "XFCE: Compositor aus, Retina-Skalierung, Schriften 10pt, Panel 28px, Display-Settings deaktiviert"
# ── 10. Netzwerk: NetworkManager statt netplan ────────────────────────────
echo -e "\n=== 10/12 Netzwerk ==="
# WLAN-Zugangsdaten aus bestehender netplan-Config übernehmen (falls vorhanden) # WLAN-Zugangsdaten aus bestehender netplan-Config übernehmen (falls vorhanden)
WLAN_SSID="" WLAN_SSID=""
@ -361,8 +395,8 @@ if [ -f "$EFI_VAR" ]; then
ok "auto-boot deaktiviert (kein Start beim Netzteil-Anstecken)" ok "auto-boot deaktiviert (kein Start beim Netzteil-Anstecken)"
fi fi
# ── 10. Energieeinstellungen & Lokalisierung ───────────────────────────── # ── 11. Energieeinstellungen & Lokalisierung ─────────────────────────────
echo -e "\n=== 10/11 Energie & Lokalisierung ===" echo -e "\n=== 11/12 Energie & Lokalisierung ==="
tee /etc/systemd/sleep.conf > /dev/null <<EOF tee /etc/systemd/sleep.conf > /dev/null <<EOF
[Sleep] [Sleep]
@ -379,8 +413,8 @@ update-locale LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8
timedatectl set-timezone Europe/Berlin 2>/dev/null || ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime timedatectl set-timezone Europe/Berlin 2>/dev/null || ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ok "Energie & Lokalisierung gesetzt" ok "Energie & Lokalisierung gesetzt"
# ── 11. Services aktivieren ────────────────────────────────────────────── # ── 12. Services aktivieren ──────────────────────────────────────────────
echo -e "\n=== 11/11 Services & Shell ===" echo -e "\n=== 12/12 Services & Shell ==="
systemctl enable mbpfan 2>/dev/null || true systemctl enable mbpfan 2>/dev/null || true
systemctl enable thermald 2>/dev/null || true systemctl enable thermald 2>/dev/null || true
systemctl enable tlp 2>/dev/null || true systemctl enable tlp 2>/dev/null || true

View file

@ -71,16 +71,14 @@ export PATH="$HOME/.npm-global/bin:$PATH"
npm install -g @anthropic-ai/claude-code npm install -g @anthropic-ai/claude-code
ok "Claude Code installiert" ok "Claude Code installiert"
# ── 5. Flatpak-Apps (PrusaSlicer + Brave) ────────────────────────────── # ── 5. Flatpak-Apps (PrusaSlicer) ──────────────────────────────────────
echo -e "\n=== 5/8 Flatpak-Apps ===" echo -e "\n=== 5/10 Flatpak-Apps ==="
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub com.prusa3d.PrusaSlicer flatpak install --user -y flathub com.prusa3d.PrusaSlicer
ok "PrusaSlicer installiert (Flatpak)" ok "PrusaSlicer installiert (Flatpak)"
flatpak install --user -y flathub com.brave.Browser
ok "Brave Browser installiert (Flatpak)"
# ── 6. PlatformIO (pipx) ──────────────────────────────────────────────── # ── 6. PlatformIO (pipx) ────────────────────────────────────────────────
echo -e "\n=== 6/8 PlatformIO ===" echo -e "\n=== 6/10 PlatformIO ==="
if ! command -v pio &>/dev/null; then if ! command -v pio &>/dev/null; then
pipx install platformio pipx install platformio
pipx ensurepath pipx ensurepath
@ -88,7 +86,7 @@ fi
ok "PlatformIO installiert (pipx)" ok "PlatformIO installiert (pipx)"
# ── 7. Dot-Files ──────────────────────────────────────────────────────── # ── 7. Dot-Files ────────────────────────────────────────────────────────
echo -e "\n=== 7/8 Dot-Files ===" echo -e "\n=== 7/10 Dot-Files ==="
DOTFILES_DIR="$HOME/git-projekte/dotfiles-rene" DOTFILES_DIR="$HOME/git-projekte/dotfiles-rene"
if [[ ! -d "$DOTFILES_DIR" ]]; then if [[ ! -d "$DOTFILES_DIR" ]]; then
mkdir -p "$HOME/git-projekte" mkdir -p "$HOME/git-projekte"
@ -146,8 +144,87 @@ else
warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren" warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren"
fi fi
# ── 8. XFCE-Einstellungen ─────────────────────────────────────────────── # ── 8. Kitty Terminal ──────────────────────────────────────────────────
echo -e "\n=== 8/8 XFCE-Einstellungen ===" echo -e "\n=== 8/10 Kitty Terminal ==="
KITTY_CONF_DIR="$HOME/.config/kitty"
mkdir -p "$KITTY_CONF_DIR"
cat > "$KITTY_CONF_DIR/kitty.conf" <<'KITTYEOF'
# Font
font_family MesloLGS NF
font_size 18.0
# Fenster
initial_window_width 120c
initial_window_height 35c
# Scrollback
scrollback_lines 10000
# Kein Glockenspiel
enable_audio_bell no
# Copy/Paste mit Ctrl+C/V (= Cmd auf Mac-Keyboard nach Swap)
map ctrl+c copy_or_interrupt
map ctrl+v paste_from_clipboard
# Tab-Verwaltung
map ctrl+t new_tab
map ctrl+w close_tab
map ctrl+shift+left previous_tab
map ctrl+shift+right next_tab
# Scrolling
map ctrl+shift+up scroll_line_up
map ctrl+shift+down scroll_line_down
map ctrl+shift+page_up scroll_page_up
map ctrl+shift+page_down scroll_page_down
# Keine Scrollbar
scrollback_indicator_color none
KITTYEOF
ok "Kitty Terminal konfiguriert"
# Kitty als Standard-Terminal
sudo update-alternatives --set x-terminal-emulator /usr/bin/kitty 2>/dev/null || true
ok "Kitty als Standard-Terminal"
# ── 9. SSH-Key + Git auf SSH umstellen ────────────────────────────────
echo -e "\n=== 9/10 SSH-Key + Git ==="
SSH_KEY="$HOME/.ssh/id_ed25519"
if [[ ! -f "$SSH_KEY" ]]; then
ssh-keygen -t ed25519 -C "rene@$(hostname)" -f "$SSH_KEY" -N ""
ok "SSH-Key erstellt"
echo ""
warn "SSH Public Key in Forgejo hinterlegen:"
echo " https://git.motocamp.de/user/settings/keys"
echo ""
cat "${SSH_KEY}.pub"
echo ""
else
ok "SSH-Key vorhanden"
fi
# Forgejo SSH Host-Key akzeptieren
ssh-keyscan -p 2222 dsm.motocamp.de >> ~/.ssh/known_hosts 2>/dev/null
ok "Forgejo Host-Key akzeptiert"
# Git Remotes auf SSH umstellen
GIT_BASE="$HOME/git-projekte"
for repo in "$GIT_BASE"/*/; do
[[ -d "$repo/.git" ]] || continue
old_url=$(git -C "$repo" remote get-url origin 2>/dev/null)
if [[ "$old_url" == https://git.motocamp.de/rene/* ]]; then
name=$(basename "$old_url" .git)
git -C "$repo" remote set-url origin "ssh://git@dsm.motocamp.de:2222/rene/${name}.git"
ok "SSH: $(basename "$repo")"
fi
done
# Git Credential-Store (Fallback falls SSH-Key noch nicht in Forgejo)
git config --global credential.helper store
# ── 10. XFCE-Einstellungen ──────────────────────────────────────────────
echo -e "\n=== 10/10 XFCE-Einstellungen ==="
# Keyboard: XFCE soll /etc/default/keyboard respektieren (nicht eigenes Layout erzwingen) # Keyboard: XFCE soll /etc/default/keyboard respektieren (nicht eigenes Layout erzwingen)
if command -v xfconf-query &>/dev/null; then if command -v xfconf-query &>/dev/null; then
@ -208,6 +285,12 @@ else
fi fi
ok "WezTerm: XFCE Standard-Terminal gesetzt" ok "WezTerm: XFCE Standard-Terminal gesetzt"
# Standard-Apps: Brave als Browser, Thunderbird als Mail
xdg-settings set default-web-browser brave-browser.desktop 2>/dev/null || true
xdg-mime default thunderbird.desktop x-scheme-handler/mailto 2>/dev/null || true
xdg-mime default thunderbird.desktop message/rfc822 2>/dev/null || true
ok "Standard-Apps: Brave (Browser), Thunderbird (Mail)"
# ── Autostart entfernen ───────────────────────────────────────────────── # ── Autostart entfernen ─────────────────────────────────────────────────
AUTOSTART_FILE="$HOME/.config/autostart/macbook-setup-desktop.desktop" AUTOSTART_FILE="$HOME/.config/autostart/macbook-setup-desktop.desktop"
if [[ -f "$AUTOSTART_FILE" ]]; then if [[ -f "$AUTOSTART_FILE" ]]; then
@ -222,7 +305,8 @@ echo -e " ${GREEN}Desktop-Setup abgeschlossen!${NC}"
echo "============================================" echo "============================================"
echo "" echo ""
warn "Noch manuell erledigen:" warn "Noch manuell erledigen:"
echo " 1. Synology Drive Client installieren (.deb von synology.com)" echo " 1. SSH Public Key in Forgejo hinterlegen (falls noch nicht geschehen)"
echo " 2. Thunderbird starten → Profil aus Synology Drive einbinden" echo " 2. Synology Drive Client installieren (.deb von synology.com)"
echo " 3. Brave starten → Synchronisation einrichten" echo " 3. Thunderbird starten → Profil aus Synology Drive einbinden"
echo " 4. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen" echo " 4. Brave starten → Synchronisation einrichten"
echo " 5. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen"

View file

@ -2,6 +2,7 @@
PrivateKey = sIxh2D50+9bpWe6O6ezrfybW9Iy6QKcrwr9hmFpuGn0= PrivateKey = sIxh2D50+9bpWe6O6ezrfybW9Iy6QKcrwr9hmFpuGn0=
ListenPort = 51820 ListenPort = 51820
Address = 10.13.13.8/24 Address = 10.13.13.8/24
DNS = 10.47.11.20
[Peer] [Peer]
PublicKey = mp0YKEjsUbnld3aTAnF6cSzTfixhZETQCoKiFHIcF30= PublicKey = mp0YKEjsUbnld3aTAnF6cSzTfixhZETQCoKiFHIcF30=