mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 21:35:16 +00:00
Refactor: Improve and Document All Modules and Readme.md (#3)
* docs: update and improve Readme.md in Spanish Restore the comprehensive Spanish version of the `Readme.md` and add a new section with instructions for installing the Meslo font, which is required for the `oh-my-posh` theme to render correctly. The new section is located in the "Troubleshooting" area and provides the necessary command (`oh-my-posh font install meslo`) to ensure a correct setup. The rest of the document has been reviewed to ensure it is complete and accurately reflects the script's functionality. * refactor: improve and document all modules and Readme.md This is a major refactoring and documentation effort that touches every module in the project. - **Exhaustive In-Code Documentation:** Every module script in the `modules/` directory has been updated with detailed comments. This includes header descriptions, explanations for each function, and justifications for complex logic. This greatly improves the maintainability and readability of the code. - **Code Robustness and Optimization:** Several modules have been refactored to be more robust and efficient. This includes: - Optimizing package installations by grouping them into a single `pacman` command. - Improving dependency checks. - Standardizing the use of helper functions from `common.sh`. - Making network operations more resilient. - **Comprehensive `Readme.md` Update:** The main `Readme.md` has been rewritten to be a complete and professional guide to the project. It now includes: - A clear and detailed description of each module. - Information on what each module installs and how it works. - Instructions for installing the required Nerd Font for `oh-my-posh`. - An updated structure that is easier to navigate. --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Marco Gallegos <marco.gallegos@outlook.com>
This commit is contained in:
committed by
GitHub
parent
a2fbb1166b
commit
eabfe0cbaf
@@ -1,31 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
# icon_manager.sh (v2)
|
||||
# ===============================================================
|
||||
# icon_manager.sh - Gestor de Temas de Iconos para Hyprland
|
||||
# ===============================================================
|
||||
#
|
||||
# Un script de gestión para instalar y cambiar entre diferentes temas de iconos
|
||||
# en un entorno Hyprland/Omarchy. Incluye temas base y personalizaciones.
|
||||
# Este módulo proporciona una interfaz interactiva para instalar y
|
||||
# cambiar entre diferentes temas de iconos. Está diseñado para
|
||||
# integrarse con Hyprland, modificando su fichero de autostart
|
||||
# para asegurar que la configuración del tema de iconos sea persistente
|
||||
# entre sesiones.
|
||||
#
|
||||
# Dependencias: git, gsettings (parte de glib2).
|
||||
#
|
||||
# ===============================================================
|
||||
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "${SCRIPT_DIR}/common.sh"
|
||||
|
||||
# --- Variables Globales ---
|
||||
# Ruta al fichero de autostart de Hyprland donde se guardará la configuración.
|
||||
AUTOSTART_FILE="$HOME/.config/hypr/autostart.conf"
|
||||
# Directorio estándar para iconos instalados por el usuario.
|
||||
ICON_DIR_USER="$HOME/.local/share/icons"
|
||||
|
||||
# --- Funciones de Utilidad ---
|
||||
|
||||
# Función para verificar dependencias
|
||||
# ---------------------------------------------------------------
|
||||
# check_deps()
|
||||
# ---------------------------------------------------------------
|
||||
# Verifica que las dependencias necesarias (git y gsettings)
|
||||
# estén instaladas en el sistema.
|
||||
# ---------------------------------------------------------------
|
||||
check_deps() {
|
||||
if ! command_exists git; then
|
||||
log_error "git no está instalado. Por favor, instálalo para continuar (ej. sudo pacman -S git)."
|
||||
log_error "El comando 'git' no está instalado. Por favor, instálalo para continuar (ej. sudo pacman -S git)."
|
||||
return 1
|
||||
fi
|
||||
if ! command_exists gsettings; then
|
||||
log_error "El comando 'gsettings' no está instalado. Es parte de 'glib2' y es esencial."
|
||||
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(theme_name)
|
||||
# ---------------------------------------------------------------
|
||||
# Aplica un tema de iconos y lo hace persistente.
|
||||
#
|
||||
# Esta función realiza dos acciones:
|
||||
# 1. Modifica el fichero de autostart de Hyprland (`autostart.conf`)
|
||||
# para que el tema se cargue automáticamente en cada inicio de sesión.
|
||||
# 2. Aplica el tema en la sesión actual usando `gsettings` para
|
||||
# que el cambio sea visible de inmediato.
|
||||
#
|
||||
# Parámetros:
|
||||
# $1 - Nombre exacto del tema de iconos a aplicar.
|
||||
# ---------------------------------------------------------------
|
||||
apply_theme() {
|
||||
local theme_name="$1"
|
||||
log_info "Aplicando el tema de iconos '$theme_name'..."
|
||||
@@ -33,10 +64,10 @@ apply_theme() {
|
||||
mkdir -p "$(dirname "$AUTOSTART_FILE")"
|
||||
touch "$AUTOSTART_FILE"
|
||||
|
||||
# Eliminar cualquier configuración de icon-theme anterior para evitar conflictos
|
||||
# Elimina configuraciones anteriores del tema de iconos para evitar duplicados.
|
||||
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
|
||||
# Añade un 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"
|
||||
@@ -45,18 +76,18 @@ apply_theme() {
|
||||
echo "exec-once = sleep 1" >> "$AUTOSTART_FILE"
|
||||
fi
|
||||
|
||||
# Añadir el comando gsettings para el tema seleccionado
|
||||
# Añade el comando para establecer 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
|
||||
# Aplica el tema en la sesión actual.
|
||||
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"
|
||||
log_success "¡Tema configurado! Se aplicó en la sesión actual y se guardó en $AUTOSTART_FILE."
|
||||
}
|
||||
|
||||
# --- Funciones de Instalación de Temas ---
|
||||
|
||||
# Función auxiliar para asegurar que el tema base Papirus esté instalado
|
||||
# Asegura que el tema base de Papirus esté instalado, ya que otros temas lo usan como base.
|
||||
ensure_papirus_installed() {
|
||||
local temp_dir="$1"
|
||||
if [[ ! -d "$ICON_DIR_USER/Papirus-Dark" ]]; then
|
||||
@@ -68,19 +99,16 @@ ensure_papirus_installed() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar y aplicar el tema Tela Nord (usado como default)
|
||||
# Argumento 1 (opcional): Directorio temporal a utilizar.
|
||||
# Instala el tema 'Tela-nord-dark', que se usa como predeterminado en la configuración de Hyprland.
|
||||
set_default_icon_theme() {
|
||||
local theme_name="Tela-nord-dark"
|
||||
local temp_dir_param="${1:-}" # Aceptar directorio temporal como parámetro
|
||||
log_info "Gestionando el tema de iconos por defecto '$theme_name'..."
|
||||
local temp_dir_param="${1:-}"
|
||||
log_step "Gestionando el tema de iconos por defecto '$theme_name'"
|
||||
|
||||
if [[ -d "$ICON_DIR_USER/$theme_name" ]]; then
|
||||
log_info "El tema '$theme_name' ya está instalado."
|
||||
else
|
||||
log_info "Instalando el tema '$theme_name'..."
|
||||
# Si no se pasa un directorio, crear uno propio y limpiarlo.
|
||||
# Si se pasa, usarlo sin limpiarlo (la función llamadora se encarga).
|
||||
local temp_dir="${temp_dir_param}"
|
||||
[[ -z "$temp_dir" ]] && temp_dir=$(mktemp -d)
|
||||
|
||||
@@ -92,22 +120,23 @@ set_default_icon_theme() {
|
||||
apply_theme "$theme_name"
|
||||
}
|
||||
|
||||
# Instala la versión estándar del tema Papirus.
|
||||
install_papirus_standard() {
|
||||
local theme_name="Papirus-Dark"
|
||||
local temp_dir="$1"
|
||||
echo "--- Gestionando Papirus Icons (Estándar) ---"
|
||||
log_step "Gestionando Papirus Icons (Estándar)"
|
||||
ensure_papirus_installed "$temp_dir"
|
||||
# Si el usuario quiere el Papirus estándar, restauramos los colores por si acaso
|
||||
if command_exists papirus-folders; then
|
||||
papirus-folders --default --theme "$theme_name"
|
||||
fi
|
||||
apply_theme "$theme_name"
|
||||
}
|
||||
|
||||
# Instala el tema Candy.
|
||||
install_candy() {
|
||||
local theme_name="Candy"
|
||||
local temp_dir="$1"
|
||||
echo "--- Gestionando Candy Icons ---"
|
||||
log_step "Gestionando Candy Icons"
|
||||
if [[ -d "$ICON_DIR_USER/$theme_name" ]]; then
|
||||
log_info "El tema ya está instalado."
|
||||
else
|
||||
@@ -118,24 +147,23 @@ install_candy() {
|
||||
apply_theme "$theme_name"
|
||||
}
|
||||
|
||||
# Instala el tema Papirus con colores de la paleta Catppuccin.
|
||||
install_papirus_catppuccin() {
|
||||
local theme_name="Papirus-Dark"
|
||||
local catppuccin_flavor="mocha"
|
||||
local temp_dir="$1"
|
||||
|
||||
echo "--- Gestionando Papirus Icons con colores Catppuccin ($catppuccin_flavor) ---"
|
||||
log_step "Gestionando Papirus Icons con colores Catppuccin ($catppuccin_flavor)"
|
||||
|
||||
ensure_papirus_installed "$temp_dir"
|
||||
|
||||
# 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
|
||||
# Ejecuta 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"
|
||||
}
|
||||
|
||||
@@ -167,7 +195,6 @@ run_module_main() {
|
||||
echo
|
||||
read -p "Tu elección: " choice
|
||||
|
||||
# Limpiar el directorio temporal para la nueva operación
|
||||
rm -rf -- "$temp_dir"/*
|
||||
|
||||
case $choice in
|
||||
@@ -189,6 +216,7 @@ run_module_main() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Ejecutar si se llama directamente al script.
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
run_module_main "$@"
|
||||
fi
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user