mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 21:35:16 +00:00
implementacion de script
This commit is contained in:
44
Readme.md
44
Readme.md
@@ -32,8 +32,9 @@ omarchy_zsh_setup/
|
|||||||
│ ├── docker.sh # Docker y Portainer
|
│ ├── docker.sh # Docker y Portainer
|
||||||
│ ├── zerotier.sh # ZeroTier VPN
|
│ ├── zerotier.sh # ZeroTier VPN
|
||||||
│ ├── printer.sh # Configuración de impresoras (CUPS)
|
│ ├── printer.sh # Configuración de impresoras (CUPS)
|
||||||
|
│ ├── mouse_cursor.sh # Tema de cursor Bibata
|
||||||
|
│ ├── icon_manager.sh # Gestor de temas de iconos
|
||||||
│ ├── davinci-resolve.sh # DaVinci Resolve (Intel Edition)
|
│ ├── davinci-resolve.sh # DaVinci Resolve (Intel Edition)
|
||||||
│ └── mouse_cursor.sh # Tema de cursor Bibata
|
|
||||||
└── Readme.md
|
└── Readme.md
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -63,18 +64,10 @@ Selecciona las opciones que deseas instalar:
|
|||||||
## 📋 Módulos Disponibles
|
## 📋 Módulos Disponibles
|
||||||
|
|
||||||
### 1. 📦 Aplicaciones (`apps.sh`)
|
### 1. 📦 Aplicaciones (`apps.sh`)
|
||||||
- Herramientas base (git, curl, wget, etc.)
|
- Editores como VS Code y Cursor (desde AUR)
|
||||||
- VS Code
|
|
||||||
- Cursor (desde AUR)
|
|
||||||
- VLC y plugins multimedia
|
|
||||||
- Herramientas de desarrollo
|
|
||||||
- Configuración de VLC como reproductor predeterminado
|
|
||||||
|
|
||||||
### 2. 🐚 Zsh (`zsh-config.sh`)
|
### 2. 🐚 Zsh (`zsh-config.sh`)
|
||||||
- Instalación de Zsh y plugins
|
- Modifica `.bashrc` para lanzar Zsh automáticamente
|
||||||
- Descarga de configuración `.zshrc` desde GitHub
|
|
||||||
- Configuración como shell predeterminada
|
|
||||||
- Plugins: syntax-highlighting, autosuggestions
|
|
||||||
|
|
||||||
### 3. 🐳 Docker (`docker.sh`)
|
### 3. 🐳 Docker (`docker.sh`)
|
||||||
- Instalación de Docker y Docker Compose
|
- Instalación de Docker y Docker Compose
|
||||||
@@ -90,13 +83,15 @@ Selecciona las opciones que deseas instalar:
|
|||||||
### 5. 🖨️ Impresoras (`printer.sh`)
|
### 5. 🖨️ Impresoras (`printer.sh`)
|
||||||
- Instalación de CUPS
|
- Instalación de CUPS
|
||||||
- Drivers comunes de impresora
|
- Drivers comunes de impresora
|
||||||
- Configuración de servicios
|
|
||||||
- Interfaz web en http://localhost:631
|
|
||||||
|
|
||||||
### 6. 🎬 DaVinci Resolve (`davinci-resolve.sh`)
|
### 6. 🖱️ Tema de Cursor (`mouse_cursor.sh`)
|
||||||
- Instalación de DaVinci Resolve para Intel GPU
|
- Instala el tema de cursor `Bibata-Modern-Ice`.
|
||||||
- Configuración de OpenCL
|
- Configura el cursor para Hyprland y aplicaciones GTK.
|
||||||
- Requiere ZIP de instalación en `~/Downloads`
|
|
||||||
|
### 7. 🎨 Gestor de Iconos (`icon_manager.sh`)
|
||||||
|
- Menú interactivo para instalar y cambiar entre temas de iconos como Papirus, Tela y Candy.
|
||||||
|
|
||||||
|
### 8. 🎬 DaVinci Resolve (`davinci-resolve.sh`)
|
||||||
- Configuración de librerías y wrapper
|
- Configuración de librerías y wrapper
|
||||||
|
|
||||||
## 🔧 Ejecutar Módulos Individualmente
|
## 🔧 Ejecutar Módulos Individualmente
|
||||||
@@ -160,12 +155,9 @@ cd omarchy_setup
|
|||||||
- intel-compute-runtime (OpenCL para Intel)
|
- intel-compute-runtime (OpenCL para Intel)
|
||||||
|
|
||||||
### 🐚 Zsh
|
### 🐚 Zsh
|
||||||
- Shell Zsh con plugins (syntax-highlighting, autosuggestions)
|
- Modifica `.bashrc` para lanzar Zsh automáticamente
|
||||||
- Configuración personalizada desde GitHub
|
|
||||||
- Configuración como shell predeterminada
|
|
||||||
|
|
||||||
### 🐳 Docker
|
### 🐳 Docker
|
||||||
- Docker y Docker Compose
|
|
||||||
- Portainer (interfaz web de gestión)
|
- Portainer (interfaz web de gestión)
|
||||||
- Usuario agregado al grupo docker
|
- Usuario agregado al grupo docker
|
||||||
- Servicios habilitados y configurados
|
- Servicios habilitados y configurados
|
||||||
@@ -662,9 +654,9 @@ X)
|
|||||||
- Docker y Portainer (docker.sh)
|
- Docker y Portainer (docker.sh)
|
||||||
- ZeroTier (zerotier.sh)
|
- ZeroTier (zerotier.sh)
|
||||||
- Impresoras CUPS (printer.sh)
|
- Impresoras CUPS (printer.sh)
|
||||||
|
- Tema de Cursor (mouse_cursor.sh)
|
||||||
- DaVinci Resolve (davinci-resolve.sh)
|
- DaVinci Resolve (davinci-resolve.sh)
|
||||||
- 🔧 **Fácil de extender**: Agrega nuevos módulos fácilmente
|
- Gestor de Iconos (icon_manager.sh)
|
||||||
- 🧹 **Limpieza**: Eliminado archivo duplicado davinci_resolve_intel.sh
|
|
||||||
|
|
||||||
### v2.8.1 (2025-11-02)
|
### v2.8.1 (2025-11-02)
|
||||||
- Versión unificada con estética Catppuccin
|
- Versión unificada con estética Catppuccin
|
||||||
@@ -696,11 +688,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/marcogll/scripts_mg/main/oma
|
|||||||
|
|
||||||
## 📝 Notas importantes
|
## 📝 Notas importantes
|
||||||
|
|
||||||
- **Módulos locales requeridos**: El script requiere que los módulos estén presentes localmente. Clona el repositorio completo.
|
- **Shell por defecto**: El módulo de Zsh modifica `.bashrc` para que las terminales nuevas usen Zsh.
|
||||||
- **Permisos sudo**: El script requiere permisos de sudo para instalar paquetes y configurar servicios.
|
|
||||||
- **Reinicio recomendado**: Después de instalar servicios (Docker, ZeroTier, CUPS), se recomienda reiniciar o al menos cerrar sesión para aplicar cambios de grupos.
|
|
||||||
- **Shell por defecto**: El módulo de Zsh verificará y cambiará el shell predeterminado si es necesario.
|
|
||||||
- **DaVinci Resolve**: Requiere el ZIP de instalación en `~/Downloads` antes de ejecutar el módulo.
|
|
||||||
|
|
||||||
## 🚀 Próximos Pasos
|
## 🚀 Próximos Pasos
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,29 @@
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "${SCRIPT_DIR}/common.sh"
|
source "${SCRIPT_DIR}/common.sh"
|
||||||
|
|
||||||
|
# Función para mostrar una barra de progreso
|
||||||
|
# Uso: show_progress TOTAL_ITEMS CURRENT_ITEM "Mensaje"
|
||||||
|
show_progress() {
|
||||||
|
local total=$1
|
||||||
|
local current=$2
|
||||||
|
local msg=$3
|
||||||
|
local percent=$((current * 100 / total))
|
||||||
|
local completed_len=$((percent / 2))
|
||||||
|
local bar=""
|
||||||
|
for ((i=0; i<completed_len; i++)); do bar+="="; done
|
||||||
|
local empty_len=$((50 - completed_len))
|
||||||
|
for ((i=0; i<empty_len; i++)); do bar+=" "; done
|
||||||
|
|
||||||
|
# Asegurarse de que el cursor esté al principio de la línea y la limpie
|
||||||
|
echo -ne "\r\033[K"
|
||||||
|
# Imprimir la barra de progreso
|
||||||
|
echo -ne " ${GREEN}[${bar}]${NC} ${percent}% - ${msg} (${current}/${total})"
|
||||||
|
|
||||||
|
if [[ $current -eq $total ]]; then
|
||||||
|
echo "" # Nueva línea al final
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
install_davinci_resolve() {
|
install_davinci_resolve() {
|
||||||
log_step "Instalación de DaVinci Resolve (Intel Edition)"
|
log_step "Instalación de DaVinci Resolve (Intel Edition)"
|
||||||
|
|
||||||
@@ -23,12 +46,13 @@ install_davinci_resolve() {
|
|||||||
|
|
||||||
log_info "Usando ZIP: ${RESOLVE_ZIP}"
|
log_info "Usando ZIP: ${RESOLVE_ZIP}"
|
||||||
|
|
||||||
|
start_spinner "Instalando dependencias básicas..."
|
||||||
# Instalación de paquetes básicos
|
# Instalación de paquetes básicos
|
||||||
log_info "Instalando paquetes básicos..."
|
|
||||||
sudo pacman -S --needed --noconfirm \
|
sudo pacman -S --needed --noconfirm \
|
||||||
unzip patchelf libarchive xdg-user-dirs desktop-file-utils \
|
unzip patchelf libarchive xdg-user-dirs desktop-file-utils \
|
||||||
file gtk-update-icon-cache rsync clinfo qt5-base qt5-svg qt5-x11extras \
|
file gtk-update-icon-cache rsync clinfo qt5-base qt5-svg qt5-x11extras \
|
||||||
libpng libtiff libcurl || true
|
libpng libtiff libcurl &> /dev/null
|
||||||
|
stop_spinner $? "Dependencias básicas instaladas."
|
||||||
|
|
||||||
# Configurar OpenCL / Intel GPU
|
# Configurar OpenCL / Intel GPU
|
||||||
log_info "Configurando runtime OpenCL de Intel y drivers de video..."
|
log_info "Configurando runtime OpenCL de Intel y drivers de video..."
|
||||||
@@ -39,15 +63,18 @@ install_davinci_resolve() {
|
|||||||
sudo pacman -Rns --noconfirm nvidia nvidia-utils nvidia-settings opencl-nvidia || true
|
sudo pacman -Rns --noconfirm nvidia nvidia-utils nvidia-settings opencl-nvidia || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
start_spinner "Instalando headers del kernel (si es necesario)..."
|
||||||
# Instalar headers del kernel si son necesarios
|
# Instalar headers del kernel si son necesarios
|
||||||
KVER="$(uname -r)"
|
KVER="$(uname -r)"
|
||||||
if [[ ! -d "/usr/lib/modules/${KVER}/build" ]]; then
|
if [[ ! -d "/usr/lib/modules/${KVER}/build" ]]; then
|
||||||
log_info "Instalando headers de kernel..."
|
log_info "Instalando headers de kernel..."
|
||||||
sudo pacman -S --needed --noconfirm linux-headers linux-zen-headers || true
|
sudo pacman -S --needed --noconfirm linux-headers linux-zen-headers &> /dev/null
|
||||||
fi
|
fi
|
||||||
|
stop_spinner $? "Headers del kernel verificados."
|
||||||
|
|
||||||
# Instalar runtime OpenCL (compute runtime), desde AUR si es necesario
|
# Instalar runtime OpenCL (compute runtime), desde AUR si es necesario
|
||||||
if ! pacman -Qi intel-compute-runtime &>/dev/null; then
|
if ! pacman -Qi intel-compute-runtime &>/dev/null; then
|
||||||
|
start_spinner "Instalando intel-compute-runtime desde AUR..."
|
||||||
log_info "Instalando intel-compute-runtime (puede venir del AUR)..."
|
log_info "Instalando intel-compute-runtime (puede venir del AUR)..."
|
||||||
AUR_HELPER=$(ensure_aur_helper)
|
AUR_HELPER=$(ensure_aur_helper)
|
||||||
if [ "$AUR_HELPER" = "yay" ]; then
|
if [ "$AUR_HELPER" = "yay" ]; then
|
||||||
@@ -67,10 +94,11 @@ install_davinci_resolve() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
stop_spinner $? "intel-compute-runtime instalado."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
start_spinner "Instalando paquetes de video y OpenCL..."
|
||||||
# Instalar otros paquetes Intel / VA-API / OpenCL
|
# Instalar otros paquetes Intel / VA-API / OpenCL
|
||||||
log_info "Instalando paquetes Intel / VA-API / OpenCL..."
|
|
||||||
sudo pacman -S --needed --noconfirm \
|
sudo pacman -S --needed --noconfirm \
|
||||||
intel-media-driver \
|
intel-media-driver \
|
||||||
ocl-icd \
|
ocl-icd \
|
||||||
@@ -79,7 +107,8 @@ install_davinci_resolve() {
|
|||||||
glu \
|
glu \
|
||||||
gtk2 \
|
gtk2 \
|
||||||
fuse2 \
|
fuse2 \
|
||||||
libva-utils libvdpau-va-gl || true
|
libva-utils libvdpau-va-gl &> /dev/null
|
||||||
|
stop_spinner $? "Paquetes de video instalados."
|
||||||
|
|
||||||
# Asegurar el archivo ICD para OpenCL de Intel
|
# Asegurar el archivo ICD para OpenCL de Intel
|
||||||
if [[ ! -f /etc/OpenCL/vendors/intel.icd ]]; then
|
if [[ ! -f /etc/OpenCL/vendors/intel.icd ]]; then
|
||||||
@@ -104,8 +133,7 @@ install_davinci_resolve() {
|
|||||||
log_info "Verificando soporte de decodificación VA-API para H264 / HEVC..."
|
log_info "Verificando soporte de decodificación VA-API para H264 / HEVC..."
|
||||||
vainfo | grep -E "H264|HEVC" || true
|
vainfo | grep -E "H264|HEVC" || true
|
||||||
|
|
||||||
# Extraer DaVinci Resolve
|
start_spinner "Extrayendo DaVinci Resolve del ZIP (puede tardar)..."
|
||||||
log_info "Extrayendo DaVinci Resolve del ZIP..."
|
|
||||||
NEEDED_GB=10
|
NEEDED_GB=10
|
||||||
FREE_KB=$(df --output=avail -k "${ZIP_DIR}" | tail -n1)
|
FREE_KB=$(df --output=avail -k "${ZIP_DIR}" | tail -n1)
|
||||||
FREE_GB=$((FREE_KB / 1024 / 1024))
|
FREE_GB=$((FREE_KB / 1024 / 1024))
|
||||||
@@ -116,7 +144,8 @@ install_davinci_resolve() {
|
|||||||
|
|
||||||
WORKDIR="$(mktemp -d -p "${ZIP_DIR}" .resolve-extract-XXXXXXXX)"
|
WORKDIR="$(mktemp -d -p "${ZIP_DIR}" .resolve-extract-XXXXXXXX)"
|
||||||
trap 'rm -rf "${WORKDIR}"' EXIT
|
trap 'rm -rf "${WORKDIR}"' EXIT
|
||||||
unzip -q "${RESOLVE_ZIP}" -d "${WORKDIR}"
|
unzip -q "${RESOLVE_ZIP}" -d "${WORKDIR}"
|
||||||
|
stop_spinner $? "ZIP extraído."
|
||||||
|
|
||||||
RUN_FILE="$(find "${WORKDIR}" -maxdepth 2 -type f -name 'DaVinci_Resolve_*_Linux.run' | head -n1 || true)"
|
RUN_FILE="$(find "${WORKDIR}" -maxdepth 2 -type f -name 'DaVinci_Resolve_*_Linux.run' | head -n1 || true)"
|
||||||
if [[ -z "${RUN_FILE}" ]]; then
|
if [[ -z "${RUN_FILE}" ]]; then
|
||||||
@@ -125,8 +154,10 @@ install_davinci_resolve() {
|
|||||||
fi
|
fi
|
||||||
chmod +x "${RUN_FILE}"
|
chmod +x "${RUN_FILE}"
|
||||||
|
|
||||||
|
start_spinner "Extrayendo AppImage..."
|
||||||
EX_DIR="$(dirname "${RUN_FILE}")"
|
EX_DIR="$(dirname "${RUN_FILE}")"
|
||||||
( cd "${EX_DIR}" && "./$(basename "${RUN_FILE}")" --appimage-extract >/dev/null )
|
( cd "${EX_DIR}" && "./$(basename "${RUN_FILE}")" --appimage-extract >/dev/null )
|
||||||
|
stop_spinner $? "AppImage extraído."
|
||||||
|
|
||||||
APPDIR="${EX_DIR}/squashfs-root"
|
APPDIR="${EX_DIR}/squashfs-root"
|
||||||
if [[ ! -d "${APPDIR}" ]]; then
|
if [[ ! -d "${APPDIR}" ]]; then
|
||||||
@@ -149,8 +180,7 @@ install_davinci_resolve() {
|
|||||||
ln -sf /usr/lib/libgmodule-2.0.so.0 libs/libgmodule-2.0.so.0
|
ln -sf /usr/lib/libgmodule-2.0.so.0 libs/libgmodule-2.0.so.0
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|
||||||
# Aplicar RPATH
|
log_info "Aplicando RPATH con patchelf (esto puede tardar)..."
|
||||||
log_info "Aplicando RPATH con patchelf..."
|
|
||||||
RPATH_DIRS=(
|
RPATH_DIRS=(
|
||||||
"libs"
|
"libs"
|
||||||
"libs/plugins/sqldrivers"
|
"libs/plugins/sqldrivers"
|
||||||
@@ -167,17 +197,27 @@ install_davinci_resolve() {
|
|||||||
done
|
done
|
||||||
RPATH_ABS+="\$ORIGIN"
|
RPATH_ABS+="\$ORIGIN"
|
||||||
|
|
||||||
|
# Usar barra de progreso para patchelf
|
||||||
if command -v patchelf &>/dev/null; then
|
if command -v patchelf &>/dev/null; then
|
||||||
find "${APPDIR}" -type f -exec bash -c '
|
local files_to_patch
|
||||||
file -b "$1" | grep -q ELF && sudo patchelf --set-rpath "'"${RPATH_ABS}"'" "$1"
|
files_to_patch=$(find "${APPDIR}" -type f -exec file {} + | grep "ELF" | cut -d: -f1)
|
||||||
' _ {} \; || true
|
local total_files=$(echo "$files_to_patch" | wc -l)
|
||||||
|
local current_file=0
|
||||||
|
|
||||||
|
echo "$files_to_patch" | while read -r file; do
|
||||||
|
current_file=$((current_file + 1))
|
||||||
|
show_progress "$total_files" "$current_file" "Aplicando RPATH..."
|
||||||
|
sudo patchelf --set-rpath "${RPATH_ABS}" "$file" &>/dev/null
|
||||||
|
done
|
||||||
|
log_success "RPATH aplicado a $total_files archivos."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Instalar en /opt/resolve
|
start_spinner "Copiando archivos a /opt/resolve..."
|
||||||
log_info "Instalando DaVinci Resolve en /opt/resolve..."
|
|
||||||
sudo rm -rf /opt/resolve
|
sudo rm -rf /opt/resolve
|
||||||
sudo mkdir -p /opt/resolve
|
sudo mkdir -p /opt/resolve
|
||||||
sudo rsync -a --delete "${APPDIR}/" /opt/resolve/
|
sudo rsync -a --delete "${APPDIR}/" /opt/resolve/
|
||||||
|
stop_spinner $? "Archivos copiados a /opt/resolve."
|
||||||
|
|
||||||
sudo mkdir -p /opt/resolve/.license
|
sudo mkdir -p /opt/resolve/.license
|
||||||
|
|
||||||
# Enlazar libcrypt legado si es necesario
|
# Enlazar libcrypt legado si es necesario
|
||||||
@@ -230,4 +270,3 @@ EOF
|
|||||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||||
install_davinci_resolve "$@"
|
install_davinci_resolve "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -47,12 +47,14 @@ install_zsh() {
|
|||||||
|
|
||||||
# Instalar Zsh y plugins
|
# Instalar Zsh y plugins
|
||||||
log_info "Instalando Zsh y complementos..."
|
log_info "Instalando Zsh y complementos..."
|
||||||
|
# El spinner se inicia desde el script principal, aquí solo ejecutamos el comando
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
zsh zsh-completions zsh-syntax-highlighting zsh-autosuggestions || {
|
zsh zsh-completions zsh-syntax-highlighting zsh-autosuggestions || {
|
||||||
log_error "Error al instalar Zsh"
|
log_error "Error al instalar Zsh"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# No es necesario un spinner aquí, es muy rápido
|
||||||
# Descargar configuración personalizada
|
# Descargar configuración personalizada
|
||||||
log_info "Descargando configuración de Zsh desde GitHub..."
|
log_info "Descargando configuración de Zsh desde GitHub..."
|
||||||
if curl -fsSL "${REPO_BASE}/.zshrc" -o ~/.zshrc; then
|
if curl -fsSL "${REPO_BASE}/.zshrc" -o ~/.zshrc; then
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# 🌀 Omarchy Setup Script — Configuración modular para Arch Linux
|
# 🌀 Omarchy Setup Script — Configuración modular para Arch Linux
|
||||||
# ===============================================================
|
# ===============================================================
|
||||||
|
|
||||||
set -uo pipefail
|
set -u
|
||||||
|
|
||||||
# Directorio del script
|
# Directorio del script
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
@@ -31,6 +31,52 @@ source "${MODULES_DIR}/common.sh"
|
|||||||
log_info "Verificando permisos de los módulos..."
|
log_info "Verificando permisos de los módulos..."
|
||||||
chmod +x "${MODULES_DIR}"/*.sh 2>/dev/null || true
|
chmod +x "${MODULES_DIR}"/*.sh 2>/dev/null || true
|
||||||
|
|
||||||
|
# --- Funciones de UI Mejorada (Spinner y Barra de Progreso) ---
|
||||||
|
|
||||||
|
SPINNER_PID=
|
||||||
|
|
||||||
|
# Inicia una animación de spinner en segundo plano
|
||||||
|
# Uso: start_spinner "Mensaje..."
|
||||||
|
start_spinner() {
|
||||||
|
(
|
||||||
|
local chars="⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"
|
||||||
|
while :; do
|
||||||
|
for (( i=0; i<${#chars}; i++ )); do
|
||||||
|
echo -ne "${CYAN}${chars:$i:1}${NC} $1\r"
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
done
|
||||||
|
) &
|
||||||
|
SPINNER_PID=$!
|
||||||
|
# Ocultar cursor
|
||||||
|
tput civis
|
||||||
|
}
|
||||||
|
|
||||||
|
# Detiene el spinner y muestra un mensaje de finalización
|
||||||
|
# Uso: stop_spinner $? "Mensaje de éxito" "Mensaje de error"
|
||||||
|
stop_spinner() {
|
||||||
|
local exit_code=$1
|
||||||
|
local success_msg=$2
|
||||||
|
local error_msg=${3:-"Ocurrió un error"}
|
||||||
|
|
||||||
|
if [[ -n "$SPINNER_PID" ]] && kill -0 "$SPINNER_PID" 2>/dev/null; then
|
||||||
|
kill "$SPINNER_PID" &>/dev/null
|
||||||
|
wait "$SPINNER_PID" &>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Limpiar la línea del spinner
|
||||||
|
echo -ne "\r\033[K"
|
||||||
|
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
log_success "$success_msg"
|
||||||
|
else
|
||||||
|
log_error "$error_msg"
|
||||||
|
fi
|
||||||
|
# Restaurar cursor
|
||||||
|
tput cnorm
|
||||||
|
SPINNER_PID=
|
||||||
|
}
|
||||||
|
|
||||||
# Función para mostrar el menú
|
# Función para mostrar el menú
|
||||||
show_menu() {
|
show_menu() {
|
||||||
clear
|
clear
|
||||||
@@ -40,15 +86,16 @@ show_menu() {
|
|||||||
echo ""
|
echo ""
|
||||||
echo -e "${BOLD}Selecciona las opciones que deseas instalar:${NC}"
|
echo -e "${BOLD}Selecciona las opciones que deseas instalar:${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${GREEN}1)${NC} 📦 Instalar Aplicaciones (VS Code, Cursor, VLC, herramientas)"
|
echo -e " ${GREEN}1)${NC} 📦 Instalar Aplicaciones (VS Code, VLC, drivers, etc.)"
|
||||||
echo -e " ${GREEN}2)${NC} 🐚 Configurar Zsh (shell, plugins, configuración personalizada)"
|
echo -e " ${GREEN}2)${NC} 🐚 Configurar Zsh (shell, plugins, config)"
|
||||||
echo -e " ${GREEN}3)${NC} 🐳 Instalar Docker y Portainer"
|
echo -e " ${GREEN}3)${NC} 🐳 Instalar Docker y Portainer"
|
||||||
echo -e " ${GREEN}4)${NC} 🌐 Instalar ZeroTier"
|
echo -e " ${GREEN}4)${NC} 🌐 Instalar ZeroTier"
|
||||||
echo -e " ${GREEN}5)${NC} 🖨️ Configurar Impresoras (CUPS)"
|
echo -e " ${GREEN}5)${NC} 🖨️ Configurar Impresoras (CUPS)"
|
||||||
echo -e " ${GREEN}6)${NC} 🖱️ Instalar Tema de Cursor (Bibata)"
|
echo -e " ${GREEN}6)${NC} 🖱️ Instalar Tema de Cursor (Bibata)"
|
||||||
echo -e " ${GREEN}7)${NC} 🎬 Instalar DaVinci Resolve (Intel Edition)"
|
echo -e " ${GREEN}7)${NC} 🎨 Gestionar Temas de Iconos (Papirus, Tela, etc.)"
|
||||||
echo -e " ${GREEN}8)${NC} 🔄 Actualizar Sistema"
|
echo -e " ${GREEN}8)${NC} 🎬 Instalar DaVinci Resolve (Intel Edition)"
|
||||||
echo -e " ${GREEN}9)${NC} 🧹 Limpiar Paquetes Huérfanos"
|
echo -e " ${GREEN}9)${NC} 🔄 Actualizar Sistema"
|
||||||
|
echo -e " ${GREEN}C)${NC} 🧹 Limpiar Paquetes Huérfanos"
|
||||||
echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (opciones 1-6)"
|
echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (opciones 1-6)"
|
||||||
echo -e " ${GREEN}0)${NC} 🚪 Salir"
|
echo -e " ${GREEN}0)${NC} 🚪 Salir"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -94,6 +141,9 @@ run_module() {
|
|||||||
"davinci-resolve")
|
"davinci-resolve")
|
||||||
install_davinci_resolve
|
install_davinci_resolve
|
||||||
;;
|
;;
|
||||||
|
"icon_manager")
|
||||||
|
bash "${module_file}"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
log_error "Función no definida para el módulo ${module_name}"
|
log_error "Función no definida para el módulo ${module_name}"
|
||||||
return 1
|
return 1
|
||||||
@@ -148,6 +198,10 @@ main() {
|
|||||||
done 2>/dev/null) &
|
done 2>/dev/null) &
|
||||||
|
|
||||||
# Bucle principal del menú
|
# Bucle principal del menú
|
||||||
|
# Exportar funciones para que los submódulos las puedan usar
|
||||||
|
export -f start_spinner
|
||||||
|
export -f stop_spinner
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
show_menu
|
show_menu
|
||||||
read -r choice
|
read -r choice
|
||||||
@@ -155,45 +209,59 @@ main() {
|
|||||||
|
|
||||||
case "${choice}" in
|
case "${choice}" in
|
||||||
1)
|
1)
|
||||||
|
start_spinner "Instalando aplicaciones..."
|
||||||
run_module "apps"
|
run_module "apps"
|
||||||
|
stop_spinner $? "Módulo de aplicaciones finalizado."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
|
start_spinner "Configurando Zsh..."
|
||||||
run_module "zsh-config"
|
run_module "zsh-config"
|
||||||
|
stop_spinner $? "Configuración de Zsh finalizada."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
|
start_spinner "Instalando Docker..."
|
||||||
run_module "docker"
|
run_module "docker"
|
||||||
|
stop_spinner $? "Instalación de Docker finalizada."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
|
start_spinner "Instalando ZeroTier..."
|
||||||
run_module "zerotier"
|
run_module "zerotier"
|
||||||
|
stop_spinner $? "Instalación de ZeroTier finalizada."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
|
start_spinner "Configurando impresoras..."
|
||||||
run_module "printer"
|
run_module "printer"
|
||||||
|
stop_spinner $? "Configuración de impresoras finalizada."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
6)
|
6)
|
||||||
|
start_spinner "Instalando tema de cursor..."
|
||||||
run_module "mouse_cursor"
|
run_module "mouse_cursor"
|
||||||
|
stop_spinner $? "Tema de cursor instalado."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
7)
|
7)
|
||||||
run_module "mouse_cursor"
|
# Este módulo es interactivo, no usamos spinner aquí
|
||||||
|
run_module "icon_manager"
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
7)
|
8)
|
||||||
log_warning "DaVinci Resolve requiere el ZIP de instalación en ~/Downloads"
|
log_warning "DaVinci Resolve requiere el ZIP de instalación en ~/Downloads/"
|
||||||
echo -ne "${BOLD}¿Continuar con la instalación? [s/N]: ${NC}"
|
echo -ne "${BOLD}¿Continuar con la instalación? [s/N]: ${NC} "
|
||||||
read -r confirm
|
read -r confirm
|
||||||
if [[ "${confirm}" =~ ^[SsYy]$ ]]; then
|
if [[ "${confirm}" =~ ^[SsYy]$ ]]; then
|
||||||
|
# El spinner se maneja dentro del módulo de DaVinci
|
||||||
run_module "davinci-resolve"
|
run_module "davinci-resolve"
|
||||||
else
|
else
|
||||||
log_info "Instalación cancelada"
|
log_info "Instalación cancelada"
|
||||||
@@ -201,18 +269,22 @@ main() {
|
|||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
8)
|
9)
|
||||||
|
start_spinner "Actualizando el sistema..."
|
||||||
update_system
|
update_system
|
||||||
|
stop_spinner $? "Sistema actualizado."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
9)
|
C)
|
||||||
|
start_spinner "Limpiando paquetes huérfanos..."
|
||||||
cleanup_orphans
|
cleanup_orphans
|
||||||
|
stop_spinner $? "Limpieza finalizada."
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
A)
|
A)
|
||||||
echo -ne "${BOLD}¿Instalar todas las opciones (1-5)? [s/N]: ${NC}"
|
echo -ne "${BOLD}¿Instalar todas las opciones (1-6)? [s/N]: ${NC} "
|
||||||
read -r confirm
|
read -r confirm
|
||||||
if [[ "${confirm}" =~ ^[Ss]$ ]]; then
|
if [[ "${confirm}" =~ ^[Ss]$ ]]; then
|
||||||
install_all
|
install_all
|
||||||
|
|||||||
Reference in New Issue
Block a user