implementacion de iconos y cursor

This commit is contained in:
Marco Gallegos
2025-11-14 12:19:58 -06:00
parent 7baf40936c
commit 35606accff
4 changed files with 267 additions and 12 deletions

View File

@@ -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
```

169
modules/icon_manager.sh Executable file
View File

@@ -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

71
modules/mouse_cursor.sh Executable file
View File

@@ -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

View File

@@ -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