Tras iterar en la VM, se hornea en el instalador: - AUR: kvantum-theme-catppuccin, catppuccin-cursors-mocha, catppuccin-konsole, papirus-folders-catppuccin, catppuccin-sddm-theme-mocha (+ kvantum del repo). - Root (chroot): tema SDDM catppuccin-mocha-blue y recoloreo de carpetas Papirus. - Oneshot primer login: cursor Catppuccin, estilo Qt=Kvantum (Catppuccin Mocha Blue), perfil Konsole Catppuccin, botones de ventana a la izquierda (macOS), y layout macOS por Plasma scripting (barra superior con menú global + dock inferior flotante con apps clavadas). Sustituye el hack del pin de Discover. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
187 lines
8.6 KiB
Bash
Executable File
187 lines
8.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Instalación + configuración de Arch con KDE Plasma en UN comando desde el live.
|
|
#
|
|
# ./kde/setup.sh
|
|
#
|
|
# Misma estructura de 2 fases que gnome/setup.sh (ver ese fichero para detalle).
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
DE="kde"
|
|
SETUP_PHASE="${SETUP_PHASE:-host}"
|
|
GITEA="https://gitea.josevi.ovh/josevi"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# FASE 1 (USB live): archinstall + chroot
|
|
# ---------------------------------------------------------------------------
|
|
if [[ "$SETUP_PHASE" == "host" ]]; then
|
|
[[ $EUID -eq 0 ]] || { echo "Ejecuta como root desde el live ISO."; exit 1; }
|
|
|
|
read -rp "Usuario a crear: " INSTALL_USER
|
|
read -rsp "Token de Gitea (repo arch-configs privado, Enter si es público): " GITEA_TOKEN; echo
|
|
read -rp "Nombre para git [$INSTALL_USER]: " GIT_NAME; GIT_NAME="${GIT_NAME:-$INSTALL_USER}"
|
|
read -rp "Email para git [josevisw@gmail.com]: " GIT_EMAIL; GIT_EMAIL="${GIT_EMAIL:-josevisw@gmail.com}"
|
|
|
|
echo ">> Generando disk_config dimensionado a los discos reales..."
|
|
# archinstall 4.x quitó "Percent": el layout se calcula aquí (ver shared/gen-disk-config.py)
|
|
python3 "$REPO_DIR/shared/gen-disk-config.py" "$REPO_DIR/$DE/archinstall-config.json" >/tmp/archinstall-merged.json
|
|
|
|
echo ">> Lanzando archinstall (instala base + KDE en /mnt)..."
|
|
archinstall --config /tmp/archinstall-merged.json --silent
|
|
|
|
echo ">> Copiando arch-setup al sistema nuevo y entrando en chroot..."
|
|
cp -r "$REPO_DIR" /mnt/root/arch-setup
|
|
arch-chroot /mnt env \
|
|
SETUP_PHASE=chroot INSTALL_USER="$INSTALL_USER" GITEA_TOKEN="$GITEA_TOKEN" \
|
|
GIT_NAME="$GIT_NAME" GIT_EMAIL="$GIT_EMAIL" \
|
|
bash "/root/arch-setup/$DE/setup.sh"
|
|
|
|
echo ">> Listo. Quita el USB y reinicia: reboot"
|
|
exit 0
|
|
fi
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# FASE 2 (dentro del chroot)
|
|
# ---------------------------------------------------------------------------
|
|
: "${INSTALL_USER:?falta INSTALL_USER}"
|
|
source "$(dirname "${BASH_SOURCE[0]}")/../shared/packages-common.sh"
|
|
|
|
echo ">> Creando usuario $INSTALL_USER..."
|
|
id "$INSTALL_USER" &>/dev/null || useradd -m -G wheel -s /bin/zsh "$INSTALL_USER"
|
|
echo "Contraseña para $INSTALL_USER:"; passwd "$INSTALL_USER"
|
|
echo '%wheel ALL=(ALL:ALL) ALL' >/etc/sudoers.d/10-wheel
|
|
echo "$INSTALL_USER ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/99-setup-nopasswd
|
|
|
|
echo ">> KDE Plasma mínimo + apps oficiales (pacman)..."
|
|
# Plasma curado en vez del grupo 'plasma' completo (que mete discover, kwrited,
|
|
# khelpcenter, plasma-systemmonitor, drkonqi, juegos kde, etc.). archinstall solo
|
|
# instala la base; el escritorio y los drivers gráficos open-source van aquí.
|
|
install_pacman "${PACMAN_COMMON[@]}" \
|
|
plasma-desktop sddm plasma-pa plasma-nm powerdevil kscreen systemsettings \
|
|
kwallet-pam xdg-desktop-portal-kde breeze-gtk kde-gtk-config kvantum \
|
|
konsole dolphin kate ark spectacle kcalc gwenview okular \
|
|
mesa vulkan-icd-loader vulkan-radeon vulkan-intel intel-media-driver
|
|
|
|
echo ">> Bootloader (GRUB)..."
|
|
install_bootloader
|
|
|
|
echo ">> Bootstrapeando paru y paquetes AUR..."
|
|
bootstrap_paru
|
|
install_aur "${AUR_COMMON[@]}" catppuccin-gtk-theme-mocha \
|
|
kvantum-theme-catppuccin-git catppuccin-cursors-mocha \
|
|
catppuccin-konsole-theme-git papirus-folders-catppuccin-git \
|
|
catppuccin-sddm-theme-mocha
|
|
install_helpwire
|
|
|
|
echo ">> Tema de login (SDDM) y carpetas Papirus en azul Catppuccin..."
|
|
mkdir -p /etc/sddm.conf.d
|
|
cat >/etc/sddm.conf.d/theme.conf <<SDDM
|
|
[Theme]
|
|
Current=catppuccin-mocha-blue
|
|
SDDM
|
|
papirus-folders -C cat-mocha-blue --theme Papirus-Dark 2>/dev/null || true
|
|
|
|
echo ">> Servicios..."
|
|
systemctl enable sddm
|
|
systemctl enable NetworkManager
|
|
systemctl enable "syncthing@$INSTALL_USER.service"
|
|
|
|
# --- Aspecto: se aplica en el PRIMER login gráfico ------------------------
|
|
# ponytail: el global theme de Plasma necesita sesión; lo aplica un oneshot
|
|
# de autostart. Base Breeze Dark + esquema de color Catppuccin Mocha + Papirus.
|
|
# upgrade path: layer del look-and-feel completo de catppuccin/kde si lo quieres.
|
|
USER_HOME="/home/$INSTALL_USER"
|
|
install -d -o "$INSTALL_USER" -g "$INSTALL_USER" \
|
|
"$USER_HOME/.local/bin" "$USER_HOME/.config/autostart" \
|
|
"$USER_HOME/.local/share/color-schemes"
|
|
|
|
cat >"$USER_HOME/.local/bin/firstboot-theme.sh" <<'EOS'
|
|
#!/usr/bin/env bash
|
|
set -e
|
|
# El esquema CatppuccinMochaBlue.colors lo provee chezmoi (~/.local/share/color-schemes)
|
|
# Teclado: US internacional con teclas muertas
|
|
kwriteconfig6 --file kxkbrc --group Layout --key LayoutList "us"
|
|
kwriteconfig6 --file kxkbrc --group Layout --key VariantList "intl"
|
|
kwriteconfig6 --file kxkbrc --group Layout --key Use "true"
|
|
# Color, decoración, iconos, cursor; estilo Qt = Kvantum (Catppuccin)
|
|
plasma-apply-colorscheme CatppuccinMochaBlue 2>/dev/null || true
|
|
plasma-apply-desktoptheme breeze-dark 2>/dev/null || true
|
|
plasma-changeicons Papirus-Dark 2>/dev/null || true
|
|
plasma-apply-cursortheme catppuccin-mocha-dark-cursors 2>/dev/null || true
|
|
kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle kvantum
|
|
mkdir -p "$HOME/.config/Kvantum"
|
|
kwriteconfig6 --file Kvantum/kvantum.kvconfig --group General --key theme catppuccin-mocha-blue
|
|
# Konsole: perfil con esquema Catppuccin por defecto
|
|
mkdir -p "$HOME/.local/share/konsole"
|
|
cat >"$HOME/.local/share/konsole/Catppuccin.profile" <<PRO
|
|
[Appearance]
|
|
ColorScheme=catppuccin-mocha
|
|
[General]
|
|
Name=Catppuccin
|
|
Parent=FALLBACK/
|
|
PRO
|
|
kwriteconfig6 --file konsolerc --group "Desktop Entry" --key DefaultProfile Catppuccin.profile
|
|
# Apps GTK (GIMP, etc.) con tema Catppuccin + iconos Papirus
|
|
for v in 3.0 4.0; do
|
|
mkdir -p "$HOME/.config/gtk-$v"
|
|
cat >"$HOME/.config/gtk-$v/settings.ini" <<INI
|
|
[Settings]
|
|
gtk-theme-name=catppuccin-mocha-blue-standard+default
|
|
gtk-icon-theme-name=Papirus-Dark
|
|
gtk-application-prefer-dark-theme=true
|
|
INI
|
|
done
|
|
# Fuentes
|
|
kwriteconfig6 --file kdeglobals --group General --key font "JetBrains Mono Nerd Font,11,-1,5,50,0,0,0,0,0"
|
|
kwriteconfig6 --file kdeglobals --group General --key fixed "JetBrains Mono Nerd Font Mono,12,-1,5,50,0,0,0,0,0"
|
|
# Botones de ventana estilo macOS (cerrar/min/max a la izquierda)
|
|
kwriteconfig6 --file kwinrc --group org.kde.kdecoration2 --key ButtonsOnLeft "XIA"
|
|
kwriteconfig6 --file kwinrc --group org.kde.kdecoration2 --key ButtonsOnRight ""
|
|
# Layout macOS: barra superior (menú global) + dock inferior flotante.
|
|
# Sustituye el panel por defecto (que además clavaba Discover -> icono roto).
|
|
cat >"$HOME/.local/bin/kde-layout.js" <<'JS'
|
|
var all = panels();
|
|
for (var i = 0; i < all.length; i++) { all[i].remove(); }
|
|
var top = new Panel;
|
|
top.location = "top"; top.floating = false; top.height = 28;
|
|
top.addWidget("org.kde.plasma.kickoff");
|
|
top.addWidget("org.kde.plasma.appmenu");
|
|
top.addWidget("org.kde.plasma.panelspacer");
|
|
top.addWidget("org.kde.plasma.systemtray");
|
|
top.addWidget("org.kde.plasma.digitalclock");
|
|
var dock = new Panel;
|
|
dock.location = "bottom"; dock.floating = true; dock.height = 56;
|
|
dock.lengthMode = "fit"; dock.alignment = "center";
|
|
var tasks = dock.addWidget("org.kde.plasma.icontasks");
|
|
tasks.currentConfigGroup = ["General"];
|
|
tasks.writeConfig("launchers", "applications:zen.desktop,applications:org.kde.dolphin.desktop,applications:org.kde.konsole.desktop,applications:code.desktop,applications:obsidian.desktop,applications:spotify.desktop,applications:eu.betterbird.Betterbird.desktop,applications:systemsettings.desktop");
|
|
tasks.writeConfig("showOnlyCurrentDesktop", false);
|
|
tasks.reloadConfig();
|
|
JS
|
|
# esperar a que plasmashell exponga su API (evita carrera en el primer login)
|
|
for i in $(seq 1 30); do qdbus6 org.kde.plasmashell >/dev/null 2>&1 && break; sleep 1; done
|
|
qdbus6 org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "$(cat "$HOME/.local/bin/kde-layout.js")" 2>/dev/null || true
|
|
qdbus6 org.kde.KWin /KWin reconfigure 2>/dev/null || true
|
|
rm -f "$HOME/.config/autostart/firstboot-theme.desktop"
|
|
EOS
|
|
chmod +x "$USER_HOME/.local/bin/firstboot-theme.sh"
|
|
|
|
cat >"$USER_HOME/.config/autostart/firstboot-theme.desktop" <<EOS
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=First boot theme (KDE)
|
|
Exec=$USER_HOME/.local/bin/firstboot-theme.sh
|
|
EOS
|
|
chown -R "$INSTALL_USER:$INSTALL_USER" "$USER_HOME/.local" "$USER_HOME/.config"
|
|
|
|
# --- chezmoi: dotfiles personales (repo arch-configs) --------------------------
|
|
echo ">> chezmoi init --apply (repo arch-configs)..."
|
|
install_aur chezmoi
|
|
REMOTE="$GITEA/arch-configs.git"
|
|
[[ -n "${GITEA_TOKEN:-}" ]] && REMOTE="https://$INSTALL_USER:$GITEA_TOKEN@gitea.josevi.ovh/josevi/arch-configs.git"
|
|
as_user "export GIT_NAME='$GIT_NAME' GIT_EMAIL='$GIT_EMAIL'; \
|
|
chezmoi init --apply '$REMOTE'"
|
|
|
|
rm -f /etc/sudoers.d/99-setup-nopasswd
|
|
echo ">> Configuración de KDE completada."
|