mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 13:25:16 +00:00
Refactor icon theme management: apply theme immediately and update logging
This commit is contained in:
@@ -49,7 +49,10 @@ apply_theme() {
|
|||||||
# Añadir el comando gsettings para el tema seleccionado
|
# 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 "exec-once = gsettings set org.gnome.desktop.interface icon-theme '$theme_name'" >> "$AUTOSTART_FILE"
|
||||||
|
|
||||||
log_success "¡Tema configurado! La configuración se ha guardado en $AUTOSTART_FILE"
|
# Aplicar el tema en la sesión actual para un efecto inmediato
|
||||||
|
gsettings set org.gnome.desktop.interface icon-theme "$theme_name"
|
||||||
|
|
||||||
|
log_success "¡Tema configurado! Se aplicó en la sesión actual y se guardó en $AUTOSTART_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- Funciones de Instalación de Temas ---
|
# --- Funciones de Instalación de Temas ---
|
||||||
@@ -66,22 +69,19 @@ ensure_papirus_installed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Función para instalar y aplicar el tema Tela Nord (usado como default)
|
# Función para instalar y aplicar el tema Tela Nord (usado como default)
|
||||||
set_default_icon_theme() {
|
install_tela_nord() {
|
||||||
local theme_name="Tela-nord-dark"
|
local theme_name="Tela-nord-dark"
|
||||||
log_info "Gestionando el tema de iconos '$theme_name'..."
|
echo "--- Gestionando Tela Nord Icons ---"
|
||||||
if [[ -d "$ICON_DIR_USER/$theme_name" ]]; then
|
if [[ -d "$ICON_DIR_USER/$theme_name" ]]; then
|
||||||
log_info "El tema '$theme_name' ya está instalado."
|
log_info "El tema ya está instalado."
|
||||||
else
|
else
|
||||||
log_info "Instalando el tema '$theme_name'..."
|
log_info "Instalando el tema..."
|
||||||
rm -rf "$TEMP_DIR" && mkdir -p "$TEMP_DIR" # Asegurar directorio limpio
|
|
||||||
git clone --depth 1 https://github.com/vinceliuice/Tela-icon-theme.git "$TEMP_DIR/tela"
|
git clone --depth 1 https://github.com/vinceliuice/Tela-icon-theme.git "$TEMP_DIR/tela"
|
||||||
"$TEMP_DIR/tela/install.sh" -c nord
|
"$TEMP_DIR/tela/install.sh" -c nord
|
||||||
rm -rf "$TEMP_DIR" # Limpieza
|
|
||||||
fi
|
fi
|
||||||
apply_theme "$theme_name"
|
apply_theme "$theme_name"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
install_papirus() {
|
install_papirus() {
|
||||||
local theme_name="Papirus-Dark"
|
local theme_name="Papirus-Dark"
|
||||||
echo "--- Gestionando Papirus Icons (Estándar) ---"
|
echo "--- Gestionando Papirus Icons (Estándar) ---"
|
||||||
@@ -157,7 +157,7 @@ run_module_main() {
|
|||||||
mkdir -p "$TEMP_DIR"
|
mkdir -p "$TEMP_DIR"
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1) set_default_icon_theme ;;
|
1) install_tela_nord ;;
|
||||||
2) install_papirus ;;
|
2) install_papirus ;;
|
||||||
3) install_papirus_catppuccin ;;
|
3) install_papirus_catppuccin ;;
|
||||||
4) install_candy ;;
|
4) install_candy ;;
|
||||||
@@ -176,6 +176,12 @@ run_module_main() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# La función set_default_icon_theme es un alias para mantener la compatibilidad
|
||||||
|
# con otros scripts como hyprland-config.sh
|
||||||
|
set_default_icon_theme() {
|
||||||
|
install_tela_nord
|
||||||
|
}
|
||||||
|
|
||||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||||
run_module_main "$@"
|
run_module_main "$@"
|
||||||
fi
|
fi
|
||||||
@@ -1,180 +0,0 @@
|
|||||||
#!/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.
|
|
||||||
#
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
source "${SCRIPT_DIR}/common.sh"
|
|
||||||
|
|
||||||
# --- 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_exists git; then
|
|
||||||
log_error "git no está instalado. Por favor, instálalo para continuar (ej. sudo pacman -S git)."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# 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"
|
|
||||||
log_info "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"
|
|
||||||
|
|
||||||
# Aplicar el tema en la sesión actual para un efecto inmediato
|
|
||||||
gsettings set org.gnome.desktop.interface icon-theme "$theme_name"
|
|
||||||
|
|
||||||
log_success "¡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
|
|
||||||
log_info "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
|
|
||||||
log_info "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
|
|
||||||
log_info "El tema ya está instalado."
|
|
||||||
else
|
|
||||||
log_info "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 command_exists 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
|
|
||||||
log_info "El tema ya está instalado."
|
|
||||||
else
|
|
||||||
log_info "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
|
|
||||||
log_info "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ú) ---
|
|
||||||
run_module_main() {
|
|
||||||
log_step "Gestor de Temas de Iconos para Hyprland"
|
|
||||||
|
|
||||||
if ! check_deps; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
clear
|
|
||||||
echo -e "${CYAN}==========================================${NC}"
|
|
||||||
echo -e " ${BOLD}Gestor de Temas de Iconos para Hyprland${NC} "
|
|
||||||
echo -e "${CYAN}==========================================${NC}"
|
|
||||||
echo "Selecciona el tema que quieres instalar/activar:"
|
|
||||||
echo
|
|
||||||
echo -e " ${GREEN}1)${NC} Tela (variante Nord)"
|
|
||||||
echo -e " ${GREEN}2)${NC} Papirus (estándar, oscuro)"
|
|
||||||
echo -e " ${GREEN}3)${NC} Papirus (con colores Catppuccin Mocha)"
|
|
||||||
echo -e " ${GREEN}4)${NC} Candy Icons"
|
|
||||||
echo
|
|
||||||
echo -e " ${YELLOW}q)${NC} Volver al menú principal"
|
|
||||||
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])
|
|
||||||
log_info "Volviendo al menú principal."
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*) log_error "Opción no válida. Inténtalo de nuevo." ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo
|
|
||||||
read -p "Presiona Enter para continuar..." || true
|
|
||||||
done
|
|
||||||
# Limpieza final
|
|
||||||
rm -rf "$TEMP_DIR"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
||||||
run_module_main "$@"
|
|
||||||
fi
|
|
||||||
Reference in New Issue
Block a user