mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 13:25:16 +00:00
implementacion de iconos y cursor
This commit is contained in:
@@ -27,12 +27,13 @@ omarchy_zsh_setup/
|
|||||||
├── omarchy-setup.sh # Script maestro con menú interactivo
|
├── omarchy-setup.sh # Script maestro con menú interactivo
|
||||||
├── modules/
|
├── modules/
|
||||||
│ ├── common.sh # Funciones comunes (colores, logging, etc.)
|
│ ├── 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
|
│ ├── zsh-config.sh # Configuración de Zsh
|
||||||
│ ├── 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)
|
||||||
│ └── 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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
169
modules/icon_manager.sh
Executable file
169
modules/icon_manager.sh
Executable 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
71
modules/mouse_cursor.sh
Executable 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
|
||||||
@@ -45,10 +45,11 @@ show_menu() {
|
|||||||
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 DaVinci Resolve (Intel Edition)"
|
echo -e " ${GREEN}6)${NC} 🖱️ Instalar Tema de Cursor (Bibata)"
|
||||||
echo -e " ${GREEN}7)${NC} 🔄 Actualizar Sistema"
|
echo -e " ${GREEN}7)${NC} 🎬 Instalar DaVinci Resolve (Intel Edition)"
|
||||||
echo -e " ${GREEN}8)${NC} 🧹 Limpiar Paquetes Huérfanos"
|
echo -e " ${GREEN}8)${NC} 🔄 Actualizar Sistema"
|
||||||
echo -e " ${GREEN}9)${NC} ✅ Instalar Todo (opciones 1-5)"
|
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 -e " ${GREEN}0)${NC} 🚪 Salir"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||||
@@ -87,6 +88,9 @@ run_module() {
|
|||||||
"printer")
|
"printer")
|
||||||
install_printer
|
install_printer
|
||||||
;;
|
;;
|
||||||
|
"mouse_cursor")
|
||||||
|
install_mouse_cursor
|
||||||
|
;;
|
||||||
"davinci-resolve")
|
"davinci-resolve")
|
||||||
install_davinci_resolve
|
install_davinci_resolve
|
||||||
;;
|
;;
|
||||||
@@ -101,7 +105,7 @@ run_module() {
|
|||||||
install_all() {
|
install_all() {
|
||||||
log_step "Instalación Completa de Omarchy"
|
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=()
|
local failed=()
|
||||||
|
|
||||||
for module in "${modules[@]}"; do
|
for module in "${modules[@]}"; do
|
||||||
@@ -147,7 +151,7 @@ main() {
|
|||||||
while true; do
|
while true; do
|
||||||
show_menu
|
show_menu
|
||||||
read -r choice
|
read -r choice
|
||||||
choice="${choice// /}" # Eliminar espacios
|
choice=$(echo "${choice// /}" | tr '[:lower:]' '[:upper:]') # Eliminar espacios y convertir a mayúsculas
|
||||||
|
|
||||||
case "${choice}" in
|
case "${choice}" in
|
||||||
1)
|
1)
|
||||||
@@ -176,10 +180,20 @@ main() {
|
|||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
6)
|
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"
|
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}" =~ ^[Ss]$ ]]; then
|
if [[ "${confirm}" =~ ^[SsYy]$ ]]; then
|
||||||
run_module "davinci-resolve"
|
run_module "davinci-resolve"
|
||||||
else
|
else
|
||||||
log_info "Instalación cancelada"
|
log_info "Instalación cancelada"
|
||||||
@@ -187,17 +201,17 @@ main() {
|
|||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
7)
|
8)
|
||||||
update_system
|
update_system
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
8)
|
9)
|
||||||
cleanup_orphans
|
cleanup_orphans
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Presiona Enter para continuar..."
|
read -p "Presiona Enter para continuar..."
|
||||||
;;
|
;;
|
||||||
9)
|
A)
|
||||||
echo -ne "${BOLD}¿Instalar todas las opciones (1-5)? [s/N]: ${NC}"
|
echo -ne "${BOLD}¿Instalar todas las opciones (1-5)? [s/N]: ${NC}"
|
||||||
read -r confirm
|
read -r confirm
|
||||||
if [[ "${confirm}" =~ ^[Ss]$ ]]; then
|
if [[ "${confirm}" =~ ^[Ss]$ ]]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user