diff --git a/DOCUMENTACION.md b/DOCUMENTACION.md index 0462d0e..0daf742 100644 --- a/DOCUMENTACION.md +++ b/DOCUMENTACION.md @@ -68,17 +68,7 @@ Configura un entorno de desarrollo basado en contenedores. - **Permisos:** Agrega el usuario actual al grupo `docker`, permitiéndole ejecutar comandos de Docker sin necesidad de `sudo`. - **Portainer (Opcional):** Pregunta al usuario si desea instalar Portainer, una interfaz gráfica web para gestionar contenedores, imágenes y volúmenes de Docker. -### 2.5. `davinci-resolve.sh` - -Módulo especializado para la instalación del software de edición de vídeo DaVinci Resolve. - -- **Función Principal:** Automatizar la compleja instalación de DaVinci Resolve en Arch Linux. -- **Acciones Realizadas:** - - **Dependencias:** Instala una larga lista de librerías y dependencias que no vienen por defecto en Arch Linux pero que son requeridas por el software. - - **Instalador:** Requiere que el usuario haya descargado previamente el archivo `.zip` oficial de DaVinci Resolve en su carpeta de `~/Downloads`. El script lo descomprime y ejecuta el instalador. - - **Post-Instalación:** Realiza ajustes en el sistema para asegurar que el programa pueda ejecutarse correctamente. - -### 2.6. `disk-format.sh` +### 2.5. `disk-format.sh` Añade soporte para sistemas de archivos comunes. @@ -88,7 +78,7 @@ Añade soporte para sistemas de archivos comunes. - `exfatprogs`: Para particiones exFAT, comunes en tarjetas SD y unidades USB. - `e2fsprogs`: Herramientas para el sistema de archivos nativo de Linux (ext4). -### 2.7. `hyprland-config.sh` +### 2.6. `hyprland-config.sh` Configura un entorno de escritorio basado en el gestor de ventanas Hyprland. @@ -96,7 +86,7 @@ Configura un entorno de escritorio basado en el gestor de ventanas Hyprland. - **Software Adicional:** Instala componentes como `waybar` (barra de estado), `wofi` (lanzador de aplicaciones), `swaylock` (bloqueo de pantalla), y `kitty` (emulador de terminal). - **Configuración:** Despliega una estructura de archivos de configuración predefinida para todos estos componentes. -### 2.8. `icon_manager.sh` +### 2.7. `icon_manager.sh` Permite personalizar la apariencia del sistema. @@ -104,14 +94,14 @@ Permite personalizar la apariencia del sistema. - **Temas Disponibles:** Ofrece una selección de temas populares como Papirus y Tela, instalándolos desde los repositorios de Arch o AUR. - **Aplicación:** Utiliza `gsettings` para cambiar el tema de iconos activo en el entorno de escritorio. -### 2.9. `mouse_cursor.sh` +### 2.8. `mouse_cursor.sh` Mejora la apariencia del cursor del ratón. - **Función Principal:** Instalar y configurar el tema de cursores Bibata. - **Acciones Realizadas:** Descarga e instala el tema, y luego lo establece como el predeterminado para las aplicaciones GTK y el servidor gráfico X11. -### 2.10. `printer.sh` +### 2.9. `printer.sh` Configura el sistema para poder utilizar impresoras. @@ -122,7 +112,7 @@ Configura el sistema para poder utilizar impresoras. - **Servicios:** Habilita los servicios de `cups` y `avahi` (para la detección de impresoras en red). - **Permisos:** Añade al usuario al grupo `lp` para permitirle administrar impresoras. -### 2.11. `ssh-keyring.sh` +### 2.10. `ssh-keyring.sh` Mejora la gestión de claves SSH. @@ -133,7 +123,7 @@ Mejora la gestión de claves SSH. 3. Utiliza `ssh-add` para añadir cada clave al agente. La primera vez que se use cada clave, GNOME Keyring pedirá la contraseña y la almacenará de forma segura. En usos posteriores, la desbloqueará automáticamente. - **Importancia:** Evita tener que escribir la contraseña de la clave SSH cada vez que se establece una conexión. -### 2.12. `zerotier.sh` +### 2.11. `zerotier.sh` Instala una herramienta de VPN. diff --git a/Readme.md b/Readme.md index 2c0296b..62509d2 100644 --- a/Readme.md +++ b/Readme.md @@ -8,7 +8,6 @@ Script de configuración **modular** y **personalizado** para **Arch Linux / Oma - **🔗 Integración con Dotfiles**: Vincula automáticamente configuraciones de Zsh y Hyprland desde el repositorio [mg_dotfiles](https://github.com/marcogll/mg_dotfiles). - **🎨 Menú Interactivo**: Selecciona exactamente qué componentes deseas configurar. - **🔐 Seguridad y Persistencia**: Gestión de sudo optimizada y sincronización con GNOME Keyring. -- **🎬 Soporte DaVinci Resolve**: Instalador especializado para GPUs Intel Iris Xe. ## 🚀 Instalación Rápida @@ -49,7 +48,6 @@ omarchy_setup/ | **2** | **Zsh Config** | Requiere `mg_dotfiles` | | **3** | **Docker** | Docker + Portainer (Web UI) | | **H** | **Hyprland** | Requiere `mg_dotfiles` | -| **R** | **DaVinci** | Requiere ZIP en `~/Downloads` | | **K** | **SSH Keyring** | Sincroniza llaves con GNOME | | **A** | **Instalar Todo** | Ejecuta la mayoría de los módulos | diff --git a/install.md b/install.md index f93962e..fffc5c3 100644 --- a/install.md +++ b/install.md @@ -43,11 +43,10 @@ Al ejecutar `./omarchy-setup.sh`, verás un menú interactivo: 7. **Iconos:** Gestor de temas de iconos (Tela, Papirus, Candy). * **K:** Sincronizar claves SSH con GNOME Keyring. * **F:** Soporte para formatos de disco (NTFS, exFAT, etc.). - * **R:** DaVinci Resolve (Intel) - *Requiere ZIP en ~/Downloads*. * **H:** Configuración de Hyprland (enlaza desde `mg_dotfiles`). * **T:** Plantillas de documentos. -* **A) Instalar Todo:** Ejecuta la mayoría de los módulos automáticamente (excluye DaVinci Resolve). +* **A) Instalar Todo:** Ejecuta la mayoría de los módulos automáticamente. ## 📝 Notas Importantes diff --git a/modules/davinci-resolve.sh b/modules/davinci-resolve.sh deleted file mode 100755 index 94e35c8..0000000 --- a/modules/davinci-resolve.sh +++ /dev/null @@ -1,299 +0,0 @@ -#!/usr/bin/env bash -# =============================================================== -# davinci-resolve.sh - Instalador de DaVinci Resolve (Intel Edition) -# =============================================================== - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "${SCRIPT_DIR}/common.sh" - -# --- Definición de Dependencias --- -# Paquetes de los repositorios oficiales de Arch -PACMAN_DEPS=( - # Herramientas básicas - unzip patchelf libarchive xdg-user-dirs desktop-file-utils file rsync - # Dependencias de Resolve - libpng libtiff libcurl ocl-icd libxcrypt-compat ffmpeg glu gtk2 fuse2 - # Dependencias de Qt - qt5-base qt5-svg qt5-x11extras - # Drivers y herramientas Intel - intel-media-driver libva-utils libvdpau-va-gl clinfo -) - -# Paquetes del AUR -AUR_DEPS=( - "intel-compute-runtime" # Runtime OpenCL para GPUs Intel -) - -# Directorio de descargas y nombre del ejecutable -DOWNLOADS_DIR="${HOME}/Downloads" -INSTALL_DIR="/opt/resolve" -WRAPPER_PATH="/usr/local/bin/resolve-intel" - -# 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 last_percent=${4:-"-1"} # Nuevo: Almacena el último porcentaje mostrado - local percent=$((current * 100 / total)) - - # Solo actualizar la barra si el porcentaje ha cambiado - if [[ "$percent" -gt "$last_percent" ]]; then - local completed_len=$((percent / 2)) - local bar="" - for ((i=0; i/dev/null; then - log_warning "Se detectaron paquetes de NVIDIA. Resolve para Intel puede tener conflictos." - read -p "¿Deseas intentar desinstalar los paquetes de NVIDIA? [s/N]: " confirm - if [[ "${confirm}" =~ ^[Ss]$ ]]; then - start_spinner "Desinstalando paquetes de NVIDIA..." - sudo pacman -Rns --noconfirm nvidia nvidia-utils nvidia-settings opencl-nvidia &> /dev/null - stop_spinner $? "Paquetes de NVIDIA desinstalados." - else - log_info "Continuando sin desinstalar los paquetes de NVIDIA. La instalación podría fallar." - fi - fi - - # --- 2. Instalación de Dependencias --- - log_info "Instalando dependencias necesarias..." - - # Instalar headers del kernel correspondiente - local KERNEL_VERSION - KERNEL_VERSION=$(uname -r) - local KERNEL_PKG - # Extrae el nombre base del kernel (ej. 'linux', 'linux-zen', 'linux-lts') - KERNEL_PKG=$(pacman -Qo "/boot/vmlinuz-${KERNEL_VERSION%%-*}" | awk '{print $1}') - if [[ -n "$KERNEL_PKG" && ! -d "/usr/lib/modules/${KERNEL_VERSION}/build" ]]; then - log_info "Instalando headers para el kernel actual (${KERNEL_PKG}-headers)..." - sudo pacman -S --needed --noconfirm "${KERNEL_PKG}-headers" || log_warning "No se pudieron instalar los headers del kernel." - fi - - # Instalar dependencias de Pacman - start_spinner "Instalando dependencias de Pacman..." - sudo pacman -S --needed --noconfirm "${PACMAN_DEPS[@]}" &> /dev/null - stop_spinner $? "Dependencias de Pacman instaladas." - - # Instalar dependencias de AUR - start_spinner "Instalando dependencias de AUR..." - if aur_install_packages "${AUR_DEPS[@]}"; then - stop_spinner 0 "Dependencias de AUR instaladas." - else - stop_spinner 1 "Falló la instalación de dependencias de AUR." - log_error "No se pudieron instalar paquetes como 'intel-compute-runtime' desde AUR." - return 1 - fi - - # --- 3. Configuración del Entorno --- - log_info "Configurando el entorno para OpenCL..." - - # Asegurar el archivo ICD para OpenCL de Intel - if [[ ! -f /etc/OpenCL/vendors/intel.icd ]]; then - log_info "Creando vendor file de OpenCL para Intel..." - sudo mkdir -p /etc/OpenCL/vendors - echo "/usr/lib/intel-opencl/libigdrcl.so" | sudo tee /etc/OpenCL/vendors/intel.icd >/dev/null - fi - - # Crear enlace /etc/pki/tls si es necesario - if [[ ! -e /etc/pki/tls ]]; then - log_info "Creando enlace /etc/pki/tls → /etc/ssl" - sudo mkdir -p /etc/pki - sudo ln -sf /etc/ssl /etc/pki/tls - fi - - sudo ldconfig || true - - # Verificaciones - log_info "Verificando OpenCL instalado..." - clinfo | grep -E "Platform Name|Device Name" || true - - log_info "Verificando soporte de decodificación VA-API para H264 / HEVC..." - vainfo | grep -E "H264|HEVC" || true - - # --- 4. Extracción e Instalación de DaVinci Resolve --- - start_spinner "Extrayendo DaVinci Resolve del ZIP (puede tardar)..." - local WORKDIR - WORKDIR="$(mktemp -d -p "${DOWNLOADS_DIR}" .resolve-extract-XXXXXXXX)" - trap 'rm -rf "${WORKDIR}"' EXIT - unzip -q "${RESOLVE_ZIP}" -d "${WORKDIR}" - stop_spinner $? "ZIP extraído." - - local RUN_FILE - RUN_FILE="$(find "${WORKDIR}" -maxdepth 2 -type f -name 'DaVinci_Resolve_*_Linux.run' -print -quit)" - if [[ -z "${RUN_FILE}" ]]; then - log_error "No se encontró el archivo .run dentro del ZIP." - return 1 - fi - chmod +x "${RUN_FILE}" - - start_spinner "Extrayendo AppImage..." - local EX_DIR - EX_DIR="$(dirname "${RUN_FILE}")" - ( cd "${EX_DIR}" && "./$(basename "${RUN_FILE}")" --appimage-extract >/dev/null ) - stop_spinner $? "AppImage extraído." - - local APPDIR="${EX_DIR}/squashfs-root" - if [[ ! -d "${APPDIR}" ]]; then - log_error "No se extrajo correctamente la carpeta squashfs-root." - return 1 - fi - - chmod -R u+rwX,go+rX,go-w "${APPDIR}" - if [[ ! -x "${APPDIR}/bin/resolve" ]]; then - log_error "El binario resolve no existe o está vacío." - return 1 - fi - - # Reemplazar librerías glib/gio/gmodule - log_info "Ajustando bibliotecas glib/gio/gmodule para usar las del sistema..." - pushd "${APPDIR}" >/dev/null - rm -f libs/libglib-2.0.so.0 libs/libgio-2.0.so.0 libs/libgmodule-2.0.so.0 || true - ln -sf /usr/lib/libglib-2.0.so.0 libs/libglib-2.0.so.0 - ln -sf /usr/lib/libgio-2.0.so.0 libs/libgio-2.0.so.0 - ln -sf /usr/lib/libgmodule-2.0.so.0 libs/libgmodule-2.0.so.0 - popd >/dev/null - - # --- 5. Aplicar Patches y Copiar Archivos --- - log_info "Aplicando RPATH con patchelf (esto puede tardar)..." - RPATH_DIRS=( - "libs" - "libs/plugins/sqldrivers" - "libs/plugins/xcbglintegrations" - "libs/plugins/imageformats" - "libs/plugins/platforms" - "libs/Fusion" - "plugins" - "bin" - ) - RPATH_ABS="" - for p in "${RPATH_DIRS[@]}"; do - RPATH_ABS+="${INSTALL_DIR}/${p}:" - done - RPATH_ABS+="\$ORIGIN" - - # Usar barra de progreso para patchelf - if ! command_exists patchelf; then - log_warning "El comando 'patchelf' no está instalado. Es necesario para ajustar las librerías." - start_spinner "Instalando patchelf..." - sudo pacman -S --noconfirm --needed patchelf &> /dev/null - stop_spinner $? "patchelf instalado." - fi - - if command_exists patchelf; then - local files_to_patch - files_to_patch=$(find "${APPDIR}" -type f -exec file {} + | grep "ELF" | cut -d: -f1) - local total_files=$(echo "$files_to_patch" | wc -l) - local current_file=0 - local last_percent=-1 - - echo "$files_to_patch" | while read -r file; do - current_file=$((current_file + 1)) - sudo patchelf --set-rpath "${RPATH_ABS}" "$file" &>/dev/null - last_percent=$(show_progress "$total_files" "$current_file" "Aplicando RPATH..." "$last_percent") - done - log_success "RPATH aplicado a $total_files archivos." - fi - - start_spinner "Copiando archivos a /opt/resolve..." - sudo rm -rf "${INSTALL_DIR}" - sudo mkdir -p "${INSTALL_DIR}" - sudo rsync -a --delete "${APPDIR}/" "${INSTALL_DIR}/" - stop_spinner $? "Archivos copiados a ${INSTALL_DIR}." - - sudo mkdir -p "${INSTALL_DIR}/.license" - - # Enlazar libcrypt legado si es necesario - sudo ldconfig || true - if [[ -e /usr/lib/libcrypt.so.1 ]]; then - sudo ln -sf /usr/lib/libcrypt.so.1 "${INSTALL_DIR}/libs/libcrypt.so.1" - fi - - # --- 6. Crear Wrapper y Acceso Directo --- - # Crear wrapper + acceso en escritorio - log_info "Creando wrapper y acceso para DaVinci Resolve..." - cat << EOF | sudo tee "${WRAPPER_PATH}" >/dev/null -#!/usr/bin/env bash -set -euo pipefail -find /tmp -maxdepth 1 -type f -name "qtsingleapp-DaVinci*lockfile" -delete 2>/dev/null || true -export QT_QPA_PLATFORM=xcb -export QT_AUTO_SCREEN_SCALE_FACTOR=1 -export OCL_ICD_VENDORS=/etc/OpenCL/vendors -exec ${INSTALL_DIR}/bin/resolve "\$@" -EOF - - sudo chmod +x "${WRAPPER_PATH}" - - mkdir -p "${HOME}/.local/share/applications" - cat > "${HOME}/.local/share/applications/davinci-resolve-wrapper.desktop" << EOF -[Desktop Entry] -Type=Application -Name=DaVinci Resolve (Intel) -Comment=DaVinci Resolve usando OpenCL de Intel -Exec=${WRAPPER_PATH} %U -TryExec=${WRAPPER_PATH} -Terminal=false -Icon=davinci-resolve -Categories=AudioVideo;Video;Graphics; -StartupWMClass=resolve -X-GNOME-UsesNotifications=true -EOF - - update-desktop-database "${HOME}/.local/share/applications" >/dev/null 2>&1 || true - sudo gtk-update-icon-cache -f /usr/share/icons/hicolor >/dev/null 2>&1 || true - - log_success "DaVinci Resolve (Intel Edition) instalado en ${INSTALL_DIR}" - log_info "Usa '${WRAPPER_PATH##*/}' para lanzar la aplicación" - log_info "Para verificar OpenCL: clinfo | grep -E 'Platform Name|Device Name'" - - return 0 -} - -# Ejecutar si se llama directamente -if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then - install_davinci_resolve "$@" -fi diff --git a/omarchy-setup.sh b/omarchy-setup.sh index 52316ec..0d89532 100755 --- a/omarchy-setup.sh +++ b/omarchy-setup.sh @@ -134,20 +134,16 @@ MODULES=( ["7D"]="icon_manager;set_default_icon_theme;🎨 Instalar Tema de Iconos por Defecto;bg" ["K"]="ssh-keyring;sync_ssh_keyring;🔐 Sincronizar claves SSH con GNOME Keyring;fg" ["F"]="disk-format;run_module_main;💾 Habilitar Formatos FAT/exFAT/NTFS/ext4;bg" - ["R"]="davinci-resolve;install_davinci_resolve;🎬 Instalar DaVinci Resolve (Intel Edition);fg" ["H"]="hyprland-config;run_module_main;🎨 Instalar Configuración de Hyprland;bg" ["T"]="doc_templates;install_doc_templates;📄 Copiar Plantillas de Documentos a ~/Templates;bg" ) -# Módulos a excluir de la opción "Instalar Todo" -EXCLUDED_FROM_ALL=("R") - # Generar dinámicamente la lista de módulos para "Instalar Todo" get_install_all_choices() { local choices=() for key in $(printf '%s\n' "${!MODULES[@]}" | sort -V); do - # Excluir módulos no deseados y el módulo interactivo de iconos - if [[ " ${EXCLUDED_FROM_ALL[*]} " =~ " ${key} " || "$key" == "7" ]]; then + # Excluir el módulo interactivo de iconos (7) + if [[ "$key" == "7" ]]; then continue fi # Si el módulo 7D existe, añadirlo en lugar del 7 @@ -183,7 +179,7 @@ show_menu() { done local install_all_keys=$(IFS=,; echo "${INSTALL_ALL_CHOICES[*]}") - echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (${install_all_keys//,/, }) (excluye DaVinci)" + echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (${install_all_keys//,/, })" echo -e " ${GREEN}0)${NC} 🚪 Salir" echo "" echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" @@ -375,18 +371,6 @@ main() { if [[ -v "MODULES[$choice]" ]]; then IFS=';' read -r _ _ description type <<< "${MODULES[$choice]}" - # Manejo especial para DaVinci Resolve - if [[ "$choice" == "R" ]]; then - log_warning "DaVinci Resolve requiere el ZIP de instalación en ~/Downloads/" - echo -ne "${BOLD}¿Continuar con la instalación? [s/N]: ${NC} " - read -r confirm - if ! [[ "${confirm}" =~ ^[SsYy]$ ]]; then - log_info "Instalación cancelada" - read -p "Presiona Enter para continuar..." - continue - fi - fi - if ! ensure_sudo_session; then read -p "Presiona Enter para continuar..." continue @@ -414,7 +398,6 @@ main() { elif [[ "$choice" == "A" ]]; then local modules_to_install=$(IFS=,; echo "${INSTALL_ALL_CHOICES[*]}") log_warning "La opción 'Instalar Todo' ejecutará los módulos: ${modules_to_install//,/, }." - log_info "Los módulos excluidos (como DaVinci Resolve) deben instalarse por separado." echo -ne "${BOLD}¿Confirmas que deseas instalar todas las opciones ahora? [s/N]: ${NC}" read -r confirm if [[ "${confirm}" =~ ^[SsYy]$ ]]; then