From 35606accff185205f80a4bb4127c86396d6811fc Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Fri, 14 Nov 2025 12:19:58 -0600 Subject: [PATCH] implementacion de iconos y cursor --- Readme.md | 5 +- modules/icon_manager.sh | 169 ++++++++++++++++++++++++++++++++++++++++ modules/mouse_cursor.sh | 71 +++++++++++++++++ omarchy-setup.sh | 34 +++++--- 4 files changed, 267 insertions(+), 12 deletions(-) create mode 100755 modules/icon_manager.sh create mode 100755 modules/mouse_cursor.sh diff --git a/Readme.md b/Readme.md index 72e2c5f..11b971b 100644 --- a/Readme.md +++ b/Readme.md @@ -27,12 +27,13 @@ omarchy_zsh_setup/ ├── omarchy-setup.sh # Script maestro con menú interactivo ├── modules/ │ ├── common.sh # Funciones comunes (colores, logging, etc.) -│ ├── apps.sh # Instalación de aplicaciones +│ ├── apps.sh # Instalación de aplicacionesç │ ├── zsh-config.sh # Configuración de Zsh │ ├── docker.sh # Docker y Portainer │ ├── zerotier.sh # ZeroTier VPN │ ├── printer.sh # Configuración de impresoras (CUPS) -│ └── davinci-resolve.sh # DaVinci Resolve (Intel Edition) +│ ├── davinci-resolve.sh # DaVinci Resolve (Intel Edition) +│ └── mouse_cursor.sh # Tema de cursor Bibata └── Readme.md ``` diff --git a/modules/icon_manager.sh b/modules/icon_manager.sh new file mode 100755 index 0000000..acec7f7 --- /dev/null +++ b/modules/icon_manager.sh @@ -0,0 +1,169 @@ +#!/bin/bash +# +# icon_manager.sh (v2) +# +# Un script de gestión para instalar y cambiar entre diferentes temas de iconos +# en un entorno Hyprland/Omarchy. Incluye temas base y personalizaciones. +# + +# --- Variables Globales --- +AUTOSTART_FILE="$HOME/.config/hypr/autostart.conf" +TEMP_DIR="/tmp/icon_theme_setup" +ICON_DIR_USER="$HOME/.local/share/icons" + +# --- Funciones de Utilidad --- + +# Función para verificar dependencias +check_deps() { + if ! command -v git &> /dev/null; then + echo "Error: git no está instalado. Por favor, instálalo para continuar (ej. sudo pacman -S git)." + exit 1 + fi +} + +# Función para aplicar la configuración de forma persistente +# Argumento 1: Nombre del tema de iconos (ej. 'Tela-nord-dark') +apply_theme() { + local theme_name="$1" + echo "Aplicando el tema de iconos '$theme_name'..." + + mkdir -p "$(dirname "$AUTOSTART_FILE")" + touch "$AUTOSTART_FILE" + + # Eliminar cualquier configuración de icon-theme anterior para evitar conflictos + sed -i '/exec-once = gsettings set org.gnome.desktop.interface icon-theme/d' "$AUTOSTART_FILE" + + # Añadir el bloque de configuración si no existe + if ! grep -Fq "CONFIGURACIÓN DE TEMA DE ICONOS" "$AUTOSTART_FILE"; then + echo -e "\n# -----------------------------------------------------" >> "$AUTOSTART_FILE" + echo "# CONFIGURACIÓN DE TEMA DE ICONOS" >> "$AUTOSTART_FILE" + echo "# -----------------------------------------------------" >> "$AUTOSTART_FILE" + echo "exec-once = /usr/lib/xdg-desktop-portal-gtk" >> "$AUTOSTART_FILE" + echo "exec-once = sleep 1" >> "$AUTOSTART_FILE" + fi + + # Añadir el comando gsettings para el tema seleccionado + echo "exec-once = gsettings set org.gnome.desktop.interface icon-theme '$theme_name'" >> "$AUTOSTART_FILE" + + echo "¡Tema configurado! La configuración se ha guardado en $AUTOSTART_FILE" +} + +# --- Funciones de Instalación de Temas --- + +# Función auxiliar para asegurar que el tema base Papirus esté instalado +ensure_papirus_installed() { + if [ ! -d "$ICON_DIR_USER/Papirus-Dark" ]; then + echo "El tema base Papirus no está instalado. Instalándolo ahora..." + git clone --depth 1 https://github.com/PapirusDevelopment/papirus-icon-theme.git "$TEMP_DIR/papirus" + "$TEMP_DIR/papirus/install.sh" + else + echo "El tema base Papirus ya está instalado." + fi +} + +install_tela_nord() { + local theme_name="Tela-nord-dark" + echo "--- Gestionando Tela Nord Icons ---" + if [ -d "$ICON_DIR_USER/$theme_name" ]; then + echo "El tema ya está instalado." + else + echo "Instalando el tema..." + git clone --depth 1 https://github.com/vinceliuice/Tela-icon-theme.git "$TEMP_DIR/tela" + "$TEMP_DIR/tela/install.sh" -c nord + fi + apply_theme "$theme_name" +} + +install_papirus() { + local theme_name="Papirus-Dark" + echo "--- Gestionando Papirus Icons (Estándar) ---" + ensure_papirus_installed + # Si el usuario quiere el Papirus estándar, restauramos los colores por si acaso + if [ -f "$ICON_DIR_USER/papirus-folders" ]; then + "$ICON_DIR_USER/papirus-folders" --default --theme "$theme_name" + fi + apply_theme "$theme_name" +} + +install_candy() { + local theme_name="Candy" + echo "--- Gestionando Candy Icons ---" + if [ -d "$ICON_DIR_USER/$theme_name" ]; then + echo "El tema ya está instalado." + else + echo "Instalando el tema..." + git clone --depth 1 https://github.com/EliverLara/candy-icons.git "$TEMP_DIR/candy" + "$TEMP_DIR/candy/install.sh" + fi + apply_theme "$theme_name" +} + +install_papirus_catppuccin() { + local theme_name="Papirus-Dark" + # Catppuccin tiene 4 variantes: latte, frappe, macchiato, mocha. Usaremos Mocha. + local catppuccin_flavor="mocha" + + echo "--- Gestionando Papirus Icons con colores Catppuccin ($catppuccin_flavor) ---" + + # 1. Asegurarse de que el tema base Papirus exista + ensure_papirus_installed + + # 2. Descargar y ejecutar el script de personalización + echo "Descargando y aplicando el colorizador Catppuccin..." + git clone --depth 1 https://github.com/catppuccin/papirus-folders.git "$TEMP_DIR/papirus-folders-catppuccin" + chmod +x "$TEMP_DIR/papirus-folders-catppuccin/papirus-folders" + + # Ejecutar el script para cambiar el color de las carpetas + "$TEMP_DIR/papirus-folders-catppuccin/papirus-folders" -C "catppuccin-${catppuccin_flavor}" --theme "$theme_name" + + # 3. Aplicar el tema (el nombre sigue siendo Papirus-Dark, pero los iconos han cambiado) + apply_theme "$theme_name" +} + +# --- Función Principal (Menú) --- +main_menu() { + while true; do + clear + echo "==========================================" + echo " Gestor de Temas de Iconos para Hyprland " + echo "==========================================" + echo "Selecciona el tema que quieres instalar/activar:" + echo + echo " 1) Tela (variante Nord)" + echo " 2) Papirus (estándar, oscuro)" + echo " 3) Papirus (con colores Catppuccin Mocha)" + echo " 4) Candy Icons" + echo + echo " q) Salir" + echo + read -p "Tu elección: " choice + + # Limpiar directorio temporal antes de cada operación + rm -rf "$TEMP_DIR" + mkdir -p "$TEMP_DIR" + + case $choice in + 1) install_tela_nord ;; + 2) install_papirus ;; + 3) install_papirus_catppuccin ;; + 4) install_candy ;; + [qQ]) break ;; + *) echo "Opción no válida. Inténtalo de nuevo." ;; + esac + + echo + read -p "Presiona Enter para continuar..." + done +} + + +# --- Ejecución del Script --- + +check_deps +main_menu + +# Limpieza final +rm -rf "$TEMP_DIR" +clear +echo "¡Proceso finalizado! Cierra sesión y vuelve a iniciarla para ver los cambios." +exit 0ch \ No newline at end of file diff --git a/modules/mouse_cursor.sh b/modules/mouse_cursor.sh new file mode 100755 index 0000000..d2d53e8 --- /dev/null +++ b/modules/mouse_cursor.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +# =============================================================== +# mouse_cursor.sh - Instala y configura el tema de cursor Bibata +# =============================================================== + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "${SCRIPT_DIR}/common.sh" + +install_mouse_cursor() { + log_step "Instalación del Tema de Cursor (Bibata-Modern-Ice)" + + # --- Variables --- + local CURSOR_THEME='Bibata-Modern-Ice' + local CURSOR_SIZE=24 + local ENVS_FILE="$HOME/.config/hypr/envs.conf" + local AUTOSTART_FILE="$HOME/.config/hypr/autostart.conf" + local DOWNLOAD_URL="https://github.com/ful1e5/Bibata_Cursor/releases/download/v2.0.7/Bibata-Modern-Ice.tar.xz" + local ARCHIVE_NAME="Bibata-Modern-Ice.tar.xz" + + # --- Paso 1 y 2: Descargar, Extraer e Instalar --- + log_info "Descargando e instalando el tema de cursor..." + local TEMP_DIR + TEMP_DIR=$(mktemp -d -p "/tmp" cursor_setup_XXXXXX) + trap 'rm -rf "${TEMP_DIR}"' EXIT # Limpieza automática al salir + + if curl -sL "$DOWNLOAD_URL" -o "${TEMP_DIR}/${ARCHIVE_NAME}"; then + tar -xJf "${TEMP_DIR}/${ARCHIVE_NAME}" -C "${TEMP_DIR}" + mkdir -p "$HOME/.icons" + # Mover el contenido extraído al directorio de iconos + if [ -d "${TEMP_DIR}/${CURSOR_THEME}" ]; then + mv "${TEMP_DIR}/${CURSOR_THEME}" "$HOME/.icons/" + log_success "Tema de cursor instalado en ~/.icons/" + else + log_error "El directorio del tema '${CURSOR_THEME}' no se encontró en el archivo." + return 1 + fi + else + log_error "No se pudo descargar el tema de cursor desde $DOWNLOAD_URL" + return 1 + fi + + # --- Paso 3: Configurar variables de entorno para Hyprland --- + if [ -f "$ENVS_FILE" ]; then + log_info "Configurando variables de entorno en $ENVS_FILE..." + if ! grep -q "HYPRCURSOR_THEME,${CURSOR_THEME}" "$ENVS_FILE"; then + echo -e "\n# Custom Cursor Theme" >> "$ENVS_FILE" + echo "env = HYPRCURSOR_THEME,$CURSOR_THEME" >> "$ENVS_FILE" + echo "env = HYPRCURSOR_SIZE,$CURSOR_SIZE" >> "$ENVS_FILE" + echo "env = XCURSOR_THEME,$CURSOR_THEME" >> "$ENVS_FILE" + echo "env = XCURSOR_SIZE,$CURSOR_SIZE" >> "$ENVS_FILE" + log_success "Variables de cursor añadidas a Hyprland." + else + log_info "Las variables de cursor para Hyprland ya parecen estar configuradas." + fi + fi + + # --- Paso 4: Configurar GTK --- + log_info "Configurando el cursor para aplicaciones GTK..." + gsettings set org.gnome.desktop.interface cursor-theme "$CURSOR_THEME" + gsettings set org.gnome.desktop.interface cursor-size "$CURSOR_SIZE" + log_success "Configuración de GSettings aplicada." + + log_success "¡Configuración del cursor completada!" + log_warning "Por favor, cierra sesión y vuelve a iniciarla para aplicar los cambios." + return 0 +} + +# Ejecutar si se llama directamente +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + install_mouse_cursor "$@" +fi \ No newline at end of file diff --git a/omarchy-setup.sh b/omarchy-setup.sh index 31bf1f8..bf15ed0 100755 --- a/omarchy-setup.sh +++ b/omarchy-setup.sh @@ -45,10 +45,11 @@ show_menu() { echo -e " ${GREEN}3)${NC} 🐳 Instalar Docker y Portainer" echo -e " ${GREEN}4)${NC} 🌐 Instalar ZeroTier" echo -e " ${GREEN}5)${NC} 🖨️ Configurar Impresoras (CUPS)" - echo -e " ${GREEN}6)${NC} 🎬 Instalar DaVinci Resolve (Intel Edition)" - echo -e " ${GREEN}7)${NC} 🔄 Actualizar Sistema" - echo -e " ${GREEN}8)${NC} 🧹 Limpiar Paquetes Huérfanos" - echo -e " ${GREEN}9)${NC} ✅ Instalar Todo (opciones 1-5)" + echo -e " ${GREEN}6)${NC} 🖱️ Instalar Tema de Cursor (Bibata)" + echo -e " ${GREEN}7)${NC} 🎬 Instalar DaVinci Resolve (Intel Edition)" + echo -e " ${GREEN}8)${NC} 🔄 Actualizar Sistema" + echo -e " ${GREEN}9)${NC} 🧹 Limpiar Paquetes Huérfanos" + echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (opciones 1-6)" echo -e " ${GREEN}0)${NC} 🚪 Salir" echo "" echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" @@ -87,6 +88,9 @@ run_module() { "printer") install_printer ;; + "mouse_cursor") + install_mouse_cursor + ;; "davinci-resolve") install_davinci_resolve ;; @@ -101,7 +105,7 @@ run_module() { install_all() { log_step "Instalación Completa de Omarchy" - local modules=("apps" "zsh-config" "docker" "zerotier" "printer") + local modules=("apps" "zsh-config" "docker" "zerotier" "printer" "mouse_cursor") local failed=() for module in "${modules[@]}"; do @@ -147,7 +151,7 @@ main() { while true; do show_menu read -r choice - choice="${choice// /}" # Eliminar espacios + choice=$(echo "${choice// /}" | tr '[:lower:]' '[:upper:]') # Eliminar espacios y convertir a mayúsculas case "${choice}" in 1) @@ -176,10 +180,20 @@ main() { read -p "Presiona Enter para continuar..." ;; 6) + run_module "mouse_cursor" + echo "" + read -p "Presiona Enter para continuar..." + ;; + 7) + run_module "mouse_cursor" + echo "" + read -p "Presiona Enter para continuar..." + ;; + 7) 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}" =~ ^[Ss]$ ]]; then + if [[ "${confirm}" =~ ^[SsYy]$ ]]; then run_module "davinci-resolve" else log_info "Instalación cancelada" @@ -187,17 +201,17 @@ main() { echo "" read -p "Presiona Enter para continuar..." ;; - 7) + 8) update_system echo "" read -p "Presiona Enter para continuar..." ;; - 8) + 9) cleanup_orphans echo "" read -p "Presiona Enter para continuar..." ;; - 9) + A) echo -ne "${BOLD}¿Instalar todas las opciones (1-5)? [s/N]: ${NC}" read -r confirm if [[ "${confirm}" =~ ^[Ss]$ ]]; then