diff --git a/DOCUMENTACION.md b/DOCUMENTACION.md deleted file mode 100644 index 2b59eca..0000000 --- a/DOCUMENTACION.md +++ /dev/null @@ -1,135 +0,0 @@ -# DOCUMENTACION.md - Referencia Técnica de Módulos - -Este documento proporciona una descripción técnica detallada de cada script y módulo que forma parte del proyecto Omarchy Setup. - -## 1. Script Principal: `omarchy-setup.sh` - -Este es el script orquestador y el punto de entrada para el usuario. - -- **Función Principal:** Proporcionar una interfaz de menú interactiva que permite al usuario seleccionar qué módulos de configuración desea ejecutar. -- **Características Clave:** - - **Menú Dinámico:** Muestra una lista de todos los módulos disponibles, permitiendo al usuario elegir uno, varios ("Instalar Todo") o salir. - - **Gestión de `sudo`:** Solicita la contraseña de `sudo` una vez y la mantiene activa en segundo plano para evitar que el usuario tenga que introducirla repetidamente. - - **Ejecución Modular:** Llama a las funciones principales de los scripts ubicados en el directorio `modules/`. - - **Feedback Visual:** Implementa un "spinner" (indicador de progreso) para las tareas que se ejecutan en segundo plano, mejorando la experiencia del usuario. - - **Registro (`Logging`):** Guarda un registro detallado de toda la sesión de instalación en el directorio `logs/`, lo que facilita la depuración en caso de errores. - - **Verificación del Sistema:** Comprueba que el script se está ejecutando en Arch Linux antes de proceder. - -## 2. Módulos (`modules/`) - -### 2.1. `common.sh` - -Este script no es un módulo ejecutable desde el menú, sino una librería de funciones compartidas por todos los demás módulos. - -- **Función Principal:** Centralizar el código común para evitar duplicaciones y mantener la consistencia. -- **Funciones Proporcionadas:** - - **Logs con Colores:** Funciones como `log_info`, `log_success`, `log_warning` y `log_error` para mostrar mensajes con un formato estandarizado. - - **Gestión de Paquetes:** - - `check_and_install_pkg`: Verifica si un paquete ya está instalado desde los repositorios oficiales y, si no, lo instala con `pacman`. - - `ensure_aur_helper` y `aur_install_packages`: Detectan un helper de AUR (como `yay` o `paru`), lo instalan si es necesario, y lo utilizan para instalar paquetes desde el Arch User Repository. - - **Copias de Seguridad:** La función `backup_file` renombra un archivo existente (ej. `.zshrc`) a `.zshrc.bak_FECHA` antes de sobrescribirlo, para prevenir la pérdida de configuraciones del usuario. - - **Verificaciones:** `command_exists` comprueba si un comando está disponible en el sistema. - -### 2.2. `apps.sh` - -Es uno de los módulos más extensos y se encarga de la instalación de un conjunto base de aplicaciones y herramientas. - -- **Función Principal:** Instalar software esencial de diversas categorías. -- **Software Instalado:** - - **Base del Sistema:** `git`, `curl`, `htop`, `btop`, `stow`, `gnome-keyring`, `openssh`, etc. - - **Desarrollo:** `python`, `pip`, `nodejs`, `npm`, `arduino-cli`. También instala `nvm` (Node Version Manager) y `Homebrew` para una gestión de paquetes más flexible. - - **Multimedia:** VLC (y sus codecs), Audacity, Inkscape, `yt-dlp` para descargar vídeos. - - **Red:** FileZilla, Telegram, `speedtest-cli`. - - **AUR:** Visual Studio Code, Cursor, Keyd, Fragments, Logiops, TeamViewer, Antigravity, OpenCode. - - **Drivers para Intel Iris Xe:** Instala todos los paquetes necesarios para el correcto funcionamiento de los gráficos integrados de Intel, incluyendo `mesa`, `vulkan-intel`, y los drivers para la aceleración de vídeo por hardware (VA-API). -- **Configuraciones Adicionales:** - - Habilita y configura servicios del sistema como `gnome-keyring-daemon` (para gestión de contraseñas y claves SSH), `keyd` y `logiops` (para teclados y ratones avanzados), `teamviewer` y `tlp` (para la gestión avanzada de energía y optimización de la batería). - -### 2.3. `zsh-config.sh` - -Este módulo personaliza la experiencia del shell del usuario. - -- **Función Principal:** Configurar Zsh como el shell principal con una apariencia y funcionalidad mejoradas. -- **Acciones Realizadas:** - - **Instalación:** Instala `zsh`, `zsh-completions` y otras utilidades. - - **Oh My Zsh:** Instala el framework "Oh My Zsh" para la gestión de plugins. - - **Plugins:** Añade plugins populares como `zsh-autosuggestions` (sugiere comandos mientras escribes) y `zsh-syntax-highlighting` (colorea la sintaxis de los comandos). - - **Oh My Posh:** Instala esta herramienta para crear un prompt de terminal altamente personalizable y descarga un tema predefinido (Catppuccin Frappe). - - **.zshrc:** Reemplaza el `~/.zshrc` del usuario por una versión pre-configurada que integra todas estas herramientas y añade alias y funciones útiles, incluyendo una función `zsh_help` que muestra una lista de todos los comandos personalizados. - - **Shell por Defecto:** Cambia el shell de inicio de sesión del usuario a Zsh. - -### 2.4. `docker.sh` - -Configura un entorno de desarrollo basado en contenedores. - -- **Función Principal:** Instalar y configurar Docker Engine y Docker Compose. -- **Acciones Realizadas:** - - **Instalación:** Instala los paquetes `docker` y `docker-compose`. - - **Servicio:** Habilita e inicia el servicio (`daemon`) de Docker para que se ejecute automáticamente al iniciar el sistema. - - **Permisos:** Agrega el usuario actual al grupo `docker`, permitiéndole ejecutar comandos de Docker sin necesidad de `sudo`. - - **Portainer (Opcional):** Pregunta al usuario si desea instalar Portainer, una interfaz gráfica web para gestionar contenedores, imágenes y volúmenes de Docker. - -### 2.5. `disk-format.sh` - -Añade soporte para sistemas de archivos comunes. - -- **Función Principal:** Instalar las herramientas necesarias para interactuar con particiones y discos formateados en sistemas de archivos no nativos de Linux. -- **Soporte Añadido:** - - `ntfs-3g`: Para leer y escribir en particiones NTFS (Windows). - - `exfatprogs`: Para particiones exFAT, comunes en tarjetas SD y unidades USB. - - `e2fsprogs`: Herramientas para el sistema de archivos nativo de Linux (ext4). - -### 2.6. `hyprland-config.sh` - -Configura un entorno de escritorio basado en el gestor de ventanas Hyprland. - -- **Función Principal:** Instalar Hyprland y un conjunto de aplicaciones y configuraciones para tener un entorno de "tiling window manager" funcional y estético. -- **Software Adicional:** Instala componentes como `waybar` (barra de estado), `wofi` (lanzador de aplicaciones), `swaylock` (bloqueo de pantalla), y `kitty` (emulador de terminal). -- **Configuración:** Despliega una estructura de archivos de configuración predefinida para todos estos componentes. - -### 2.7. `icon_manager.sh` - -Permite personalizar la apariencia del sistema. - -- **Función Principal:** Instalar y aplicar diferentes temas de iconos. -- **Temas Disponibles:** Ofrece una selección de temas populares como Papirus y Tela, instalándolos desde los repositorios de Arch o AUR. -- **Aplicación:** Utiliza `gsettings` para cambiar el tema de iconos activo en el entorno de escritorio. - -### 2.8. `mouse_cursor.sh` - -Mejora la apariencia del cursor del ratón. - -- **Función Principal:** Instalar y configurar el tema de cursores Bibata. -- **Acciones Realizadas:** Descarga e instala el tema, y luego lo establece como el predeterminado para las aplicaciones GTK y el servidor gráfico X11. - -### 2.9. `printer.sh` - -Configura el sistema para poder utilizar impresoras. - -- **Función Principal:** Instalar el sistema de impresión CUPS y los drivers necesarios. -- **Acciones Realizadas:** - - **CUPS:** Instala el servidor de impresión CUPS y sus filtros. - - **Drivers:** Instala drivers genéricos y específicos para impresoras Epson. - - **Servicios:** Habilita los servicios de `cups` y `avahi` (para la detección de impresoras en red). - - **Permisos:** Añade al usuario al grupo `lp` para permitirle administrar impresoras. - -### 2.10. `ssh-keyring.sh` - -Mejora la gestión de claves SSH. - -- **Función Principal:** Sincronizar las claves SSH del usuario con el agente de GNOME Keyring. -- **Funcionamiento:** - 1. Verifica que el agente de `gnome-keyring` esté en ejecución. - 2. Busca todas las claves SSH privadas en el directorio `~/.ssh/`. - 3. Utiliza `ssh-add` para añadir cada clave al agente. La primera vez que se use cada clave, GNOME Keyring pedirá la contraseña y la almacenará de forma segura. En usos posteriores, la desbloqueará automáticamente. - - **Importancia:** Evita tener que escribir la contraseña de la clave SSH cada vez que se establece una conexión. - -### 2.11. `zerotier.sh` - -Instala una herramienta de VPN. - -- **Función Principal:** Instalar y configurar el cliente de la VPN ZeroTier. -- **Acciones Realizadas:** - - **Instalación:** Instala el paquete `zerotier-one`. - - **Servicio:** Habilita e inicia el servicio de ZeroTier. - - **Unirse a Red (Opcional):** Pregunta al usuario si desea unirse a una red de ZeroTier y, en caso afirmativo, le pide el ID de la red. diff --git a/Readme.md b/Readme.md index 62509d2..e6508b2 100644 --- a/Readme.md +++ b/Readme.md @@ -21,6 +21,7 @@ git clone https://github.com/marcogll/mg_dotfiles.git ~/Work/code/mg_dotfiles # 2. Clonar y ejecutar el setup git clone https://github.com/marcogll/omarchy_setup.git cd omarchy_setup +chmod +x omarchy-setup.sh ./omarchy-setup.sh ``` @@ -28,16 +29,16 @@ cd omarchy_setup ``` omarchy_setup/ -├── omarchy-setup.sh # Script principal (Menú) -├── modules/ # Scripts de instalación lógica -│ ├── common.sh # Funciones compartidas y RUTAS (DOTFILES_DIR) -│ ├── apps.sh # Apps base, Dev, Multimedia y Drivers Intel -│ ├── zsh-config.sh # Enlaza .zshrc y funciones desde mg_dotfiles -│ ├── hyprland-config.sh # Enlaza configs de Hyprland desde mg_dotfiles -│ └── ... # Docker, ZeroTier, Impresoras, etc. -├── doc_templates/ # Plantillas para ~/Templates -├── themes/ # Temas de apoyo (Oh My Posh) -└── install.md # Guía detallada de componentes +├── omarchy-setup.sh # Script principal (Menú) +├── modules/ # Scripts de instalación lógica +│ ├── common.sh # Funciones compartidas y RUTAS (DOTFILES_DIR) +│ ├── apps.sh # Apps base, Dev, Multimedia y Drivers Intel +│ ├── zsh-config.sh # Enlaza .zshrc y funciones desde mg_dotfiles +│ ├── hyprland-config.sh # Enlaza configs de Hyprland desde mg_dotfiles +│ └── ... # Docker, ZeroTier, Impresoras, etc. +├── doc_templates/ # Plantillas para ~/Templates +├── themes/ # Temas de apoyo (Oh My Posh) +└── installed_software.md # Lista detallada de componentes instalados ``` ## 🎮 Opciones del Menú @@ -47,21 +48,170 @@ omarchy_setup/ | **1** | **Aplicaciones** | Repositorios Arch/AUR/Flatpak | | **2** | **Zsh Config** | Requiere `mg_dotfiles` | | **3** | **Docker** | Docker + Portainer (Web UI) | +| **5** | **Impresoras** | CUPS + Drivers | +| **6** | **Cursor** | Tema Bibata | +| **7** | **Iconos** | Gestor de temas interactivos | +| **S** | **Suspensión** | Activa opción en menú System | | **H** | **Hyprland** | Requiere `mg_dotfiles` | -| **K** | **SSH Keyring** | Sincroniza llaves con GNOME | +| **K** | **SSH Keyring** | Sincroniza llaves con gcr-ssh-agent | +| **F** | **Formatos Disco** | FAT/exFAT/NTFS/ext4 | +| **T** | **Plantillas** | Documentos en ~/Templates | | **A** | **Instalar Todo** | Ejecuta la mayoría de los módulos | +--- + +## 📚 Documentación Técnica de Módulos + +### 1. Script Principal: `omarchy-setup.sh` + +Este es el script orquestador y el punto de entrada para el usuario. + +- **Función Principal:** Proporcionar una interfaz de menú interactiva que permite al usuario seleccionar qué módulos de configuración desea ejecutar. +- **Características Clave:** + - **Menú Dinámico:** Muestra una lista de todos los módulos disponibles, permitiendo al usuario elegir uno, varios ("Instalar Todo") o salir. + - **Gestión de `sudo`:** Solicita la contraseña de `sudo` una vez y la mantiene activa en segundo plano para evitar que el usuario tenga que introducirla repetidamente. + - **Ejecución Modular:** Llama a las funciones principales de los scripts ubicados en el directorio `modules/`. + - **Feedback Visual:** Implementa un "spinner" (indicador de progreso) para las tareas que se ejecutan en segundo plano, mejorando la experiencia del usuario. + - **Registro (`Logging`):** Guarda un registro detallado de toda la sesión de instalación en el directorio `logs/`, lo que facilita la depuración en caso de errores. + - **Verificación del Sistema:** Comprueba que el script se está ejecutando en Arch Linux antes de proceder. + +### 2. Módulos (`modules/`) + +#### 2.1. `common.sh` + +Este script no es un módulo ejecutable desde el menú, sino una librería de funciones compartidas por todos los demás módulos. + +- **Función Principal:** Centralizar el código común para evitar duplicaciones y mantener la consistencia. +- **Funciones Proporcionadas:** + - **Logs con Colores:** Funciones como `log_info`, `log_success`, `log_warning` y `log_error` para mostrar mensajes con un formato estandarizado. + - **Gestión de Paquetes:** + - `check_and_install_pkg`: Verifica si un paquete ya está instalado desde los repositorios oficiales y, si no, lo instala con `pacman`. + - `ensure_aur_helper` y `aur_install_packages`: Detectan un helper de AUR (como `yay` o `paru`), lo instalan si es necesario, y lo utilizan para instalar paquetes desde el Arch User Repository. + - **Copias de Seguridad:** La función `backup_file` renombra un archivo existente (ej. `.zshrc`) a `.zshrc.bak_FECHA` antes de sobrescribirlo, para prevenir la pérdida de configuraciones del usuario. + - **Verificaciones:** `command_exists` comprueba si un comando está disponible en el sistema. + +#### 2.2. `apps.sh` + +Es uno de los módulos más extensos y se encarga de la instalación de un conjunto base de aplicaciones y herramientas. + +- **Función Principal:** Instalar software esencial de diversas categorías. +- **Software Instalado:** + - **Base del Sistema:** `git`, `curl`, `htop`, `btop`, `stow`, `gnome-keyring`, `openssh`, etc. + - **Desarrollo:** `python`, `pip`, `nodejs`, `npm`, `arduino-cli`. También instala `nvm` (Node Version Manager) y `Homebrew` para una gestión de paquetes más flexible. + - **Multimedia:** VLC (y sus codecs), Audacity, Inkscape, `yt-dlp` para descargar vídeos. + - **Red:** FileZilla, Telegram, `speedtest-cli`. + - **AUR:** Visual Studio Code, Cursor, Keyd, Fragments, Logiops, TeamViewer, Antigravity, OpenCode. + - **Drivers para Intel Iris Xe:** Instala todos los paquetes necesarios para el correcto funcionamiento de los gráficos integrados de Intel, incluyendo `mesa`, `vulkan-intel`, y los drivers para la aceleración de vídeo por hardware (VA-API). +- **Configuraciones Adicionales:** + - Habilita y configura servicios del sistema como `gnome-keyring-daemon` (para gestión de contraseñas y claves SSH), `keyd` y `logiops` (para teclados y ratones avanzados), `teamviewer` y `tlp` (para la gestión avanzada de energía y optimización de la batería). + +#### 2.3. `zsh-config.sh` + +Este módulo personaliza la experiencia del shell del usuario. + +- **Función Principal:** Configurar Zsh como el shell principal con una apariencia y funcionalidad mejoradas. +- **Acciones Realizadas:** + - **Instalación:** Instala `zsh`, `zsh-completions` y otras utilidades. + - **Oh My Zsh:** Instala el framework "Oh My Zsh" para la gestión de plugins. + - **Plugins:** Añade plugins populares como `zsh-autosuggestions` (sugiere comandos mientras escribes) y `zsh-syntax-highlighting` (colorea la sintaxis de los comandos). + - **Oh My Posh:** Instala esta herramienta para crear un prompt de terminal altamente personalizable y descarga un tema predefinido (Catppuccin Frappe). + - **.zshrc:** Reemplaza el `~/.zshrc` del usuario por una versión pre-configurada que integra todas estas herramientas y añade alias y funciones útiles, incluyendo una función `zsh_help` que muestra una lista de todos los comandos personalizados. + - **Shell por Defecto:** Cambia el shell de inicio de sesión del usuario a Zsh. + +#### 2.4. `docker.sh` + +Configura un entorno de desarrollo basado en contenedores. + +- **Función Principal:** Instalar y configurar Docker Engine y Docker Compose. +- **Acciones Realizadas:** + - **Instalación:** Instala los paquetes `docker` y `docker-compose`. + - **Servicio:** Habilita e inicia el servicio (`daemon`) de Docker para que se ejecute automáticamente al iniciar el sistema. + - **Permisos:** Agrega el usuario actual al grupo `docker`, permitiéndole ejecutar comandos de Docker sin necesidad de `sudo`. + - **Portainer (Opcional):** Pregunta al usuario si desea instalar Portainer, una interfaz gráfica web para gestionar contenedores, imágenes y volúmenes de Docker. + +#### 2.5. `disk-format.sh` + +Añade soporte para sistemas de archivos comunes. + +- **Función Principal:** Instalar las herramientas necesarias para interactuar con particiones y discos formateados en sistemas de archivos no nativos de Linux. +- **Soporte Añadido:** + - `ntfs-3g`: Para leer y escribir en particiones NTFS (Windows). + - `exfatprogs`: Para particiones exFAT, comunes en tarjetas SD y unidades USB. + - `e2fsprogs`: Herramientas para el sistema de archivos nativo de Linux (ext4). + +#### 2.6. `hyprland-config.sh` + +Configura un entorno de escritorio basado en el gestor de ventanas Hyprland. + +- **Función Principal:** Instalar Hyprland y un conjunto de aplicaciones y configuraciones para tener un entorno de "tiling window manager" funcional y estético. +- **Software Adicional:** Instala componentes como `waybar` (barra de estado), `wofi` (lanzador de aplicaciones), `swaylock` (bloqueo de pantalla), y `kitty` (emulador de terminal). +- **Configuración:** Despliega una estructura de archivos de configuración predefinida para todos estos componentes. + +#### 2.7. `icon_manager.sh` + +Permite personalizar la apariencia del sistema. + +- **Función Principal:** Instalar y aplicar diferentes temas de iconos. +- **Temas Disponibles:** Ofrece una selección de temas populares como Papirus y Tela, instalándolos desde los repositorios de Arch o AUR. +- **Aplicación:** Utiliza `gsettings` para cambiar el tema de iconos activo en el entorno de escritorio. + +#### 2.8. `mouse_cursor.sh` + +Mejora la apariencia del cursor del ratón. + +- **Función Principal:** Instalar y configurar el tema de cursores Bibata. +- **Acciones Realizadas:** Descarga e instala el tema, y luego lo establece como el predeterminado para las aplicaciones GTK y el servidor gráfico X11. + +#### 2.9. `printer.sh` + +Configura el sistema para poder utilizar impresoras. + +- **Función Principal:** Instalar el sistema de impresión CUPS y los drivers necesarios. +- **Acciones Realizadas:** + - **CUPS:** Instala el servidor de impresión CUPS y sus filtros. + - **Drivers:** Instala drivers genéricos y específicos para impresoras Epson. + - **Servicios:** Habilita los servicios de `cups` y `avahi` (para la detección de impresoras en red). + - **Permisos:** Añade al usuario al grupo `lp` para permitirle administrar impresoras. + +#### 2.10. `ssh-keyring.sh` + +Mejora la gestión de claves SSH. + +- **Función Principal:** Sincronizar las claves SSH del usuario con el agente gcr-ssh-agent. +- **Funcionamiento:** + 1. Habilita e inicia el servicio `gcr-ssh-agent.socket` (el componente SSH que ahora está en `gcr` en lugar de `gnome-keyring`). + 2. Configura la variable de entorno `SSH_AUTH_SOCK` para apuntar a `$XDG_RUNTIME_DIR/gcr/ssh`. + 3. Busca todas las claves SSH privadas en el directorio `~/.ssh/`. + 4. Utiliza `ssh-add` para añadir cada clave al agente. La primera vez que se use cada clave, gcr-ssh-agent pedirá la contraseña y la almacenará de forma segura. En usos posteriores, la desbloqueará automáticamente. + - **Importancia:** Evita tener que escribir la contraseña de la clave SSH cada vez que se establece una conexión. + - **Nota:** A partir de gnome-keyring 46.0+, la funcionalidad SSH fue movida a `gcr`, por lo que este módulo ahora usa `gcr-ssh-agent` en lugar del componente SSH de `gnome-keyring`. + +#### 2.11. `zerotier.sh` + +Instala una herramienta de VPN. + +- **Función Principal:** Instalar y configurar el cliente de la VPN ZeroTier. +- **Acciones Realizadas:** + - **Instalación:** Instala el paquete `zerotier-one`. + - **Servicio:** Habilita e inicia el servicio de ZeroTier. + - **Unirse a Red (Opcional):** Pregunta al usuario si desea unirse a una red de ZeroTier y, en caso afirmativo, le pide el ID de la red. + +--- + ## 📝 Notas Importantes - **Dotfiles**: Este script ahora es **opinionated**. Si no encuentra `mg_dotfiles` en la ruta configurada en `common.sh`, los módulos de Zsh e Hyprland fallarán. -- **Fuentes**: Es imprescindible usar una **Nerd Font** (ej: `CaskaydiaMono NF`) para que los iconos de la terminal y Hyprland se visualicen correctamente. +- **Fuentes**: Es imprescindible usar una **Nerd Font** (ej: `CaskaydiaMono NF` o `ttf-firacode-nerd`) para que los iconos de la terminal y Hyprland se visualicen correctamente. - **Reinicio**: Tras la instalación de Docker o el cambio de Shell, es necesario **cerrar sesión** para aplicar los cambios de grupos y entorno. +- **Logs**: Cada ejecución genera un log en `logs/omarchy-setup-YYYY-MM-DD_HH-MM-SS.log` ## 🛠️ Desarrollo Para añadir una funcionalidad: 1. Crea un script en `modules/`. 2. Regístralo en el array `MODULES` de `omarchy-setup.sh`. +3. Actualiza la documentación técnica y `installed_software.md` con los nuevos componentes. --- + **Marco** - [GitHub](https://github.com/marcogll) | [mg_dotfiles](https://github.com/marcogll/mg_dotfiles) diff --git a/install.md b/install.md deleted file mode 100644 index fffc5c3..0000000 --- a/install.md +++ /dev/null @@ -1,62 +0,0 @@ -# 🌀 Guía de Instalación - Omarchy Setup - -Este script modular automatiza la configuración de Arch Linux, vinculando tus **dotfiles personales** e instalando aplicaciones esenciales. - -## 🚀 Requisitos Previos - -1. **Sistema Operativo:** Arch Linux (instalación base). -2. **Repositorio de Dotfiles:** Debes tener clonado tu repositorio personal en `~/Work/code/mg_dotfiles`. -3. **Git:** Para clonar los repositorios (`sudo pacman -S git`). - -## 📥 Instalación - -El proceso recomendado consta de dos pasos: preparar tus dotfiles y ejecutar el setup. - -### 1. Clonar Dotfiles (Obligatorio para Zsh/Hyprland) - -El script buscará la configuración en esta ruta específica: - -```bash -mkdir -p ~/Work/code -git clone https://github.com/marcogll/mg_dotfiles.git ~/Work/code/mg_dotfiles -``` - -### 2. Ejecutar Omarchy Setup - -```bash -git clone https://github.com/marcogll/omarchy_setup.git -cd omarchy_setup -chmod +x omarchy-setup.sh -./omarchy-setup.sh -``` - -## 🛠️ Uso del Script - -Al ejecutar `./omarchy-setup.sh`, verás un menú interactivo: - -1. **Instalar Aplicaciones:** Herramientas base, desarrollo (Node, Python), multimedia y drivers Intel. -2. **Configurar Zsh:** Enlaza `.zshrc` desde `mg_dotfiles` e instala Oh My Zsh/Posh. -3. **Docker:** Instala Docker, Docker Compose y Portainer. -4. **ZeroTier:** Configura la VPN P2P ZeroTier. -5. **Impresoras:** Configura CUPS y drivers (especialmente Epson). -6. **Cursor:** Instala el tema de cursor Bibata Modern Ice. -7. **Iconos:** Gestor de temas de iconos (Tela, Papirus, Candy). - * **K:** Sincronizar claves SSH con GNOME Keyring. - * **F:** Soporte para formatos de disco (NTFS, exFAT, etc.). - * **H:** Configuración de Hyprland (enlaza desde `mg_dotfiles`). - * **T:** Plantillas de documentos. - -* **A) Instalar Todo:** Ejecuta la mayoría de los módulos automáticamente. - -## 📝 Notas Importantes - -* **Enlace Simbólico:** Las configuraciones de **Zsh** y **Hyprland** se crean como enlaces simbólicos a `mg_dotfiles`. Cualquier cambio que hagas en tus archivos originales se reflejará inmediatamente. -* **Fuentes:** Asegúrate de instalar una **Nerd Font** (ej. `ttf-firacode-nerd`) para que los iconos se vean correctamente. -* **Reiniciar:** Cierra sesión después de instalar para aplicar cambios de grupos (Docker) y variables de entorno. - -## 📂 Estructura - -* `omarchy-setup.sh`: Script principal. -* `modules/`: Scripts individuales para cada tarea. -* `doc_templates/`: Plantillas de documentos. -* `themes/`: Temas de apoyo (ej. configuraciones por defecto de Oh My Posh). diff --git a/installed_software.md b/installed_software.md new file mode 100644 index 0000000..ea8c091 --- /dev/null +++ b/installed_software.md @@ -0,0 +1,207 @@ +# 📦 Lista de Software Instalado - Omarchy Setup + +Este documento lista todos los componentes que se instalan al ejecutar el script `omarchy-setup.sh` en orden de ejecución. Sirve como referencia para el equipo para entender qué software se configura en un nuevo equipo y para mantener actualizada la lista de aplicaciones necesarias. + +> **Nota**: Para ver la documentación técnica detallada de cada módulo, consulta el archivo `Readme.md`. + +--- + +## 📦 Opción 1: Instalar Aplicaciones + +### Paquetes instalados desde Pacman: +- `base-devel`: Herramientas de desarrollo base +- `git`: Control de versiones +- `curl` y `wget`: Descarga de archivos +- `vim`: Editor de texto +- `neovim`: Editor de texto moderno +- `tree`: Visualizador de directorios en árbol +- `htop`: Monitor de procesos +- `btop`: Monitor de procesos mejorado +- `ripgrep` (rg): Buscador de archivos rápido +- `fd`: Buscador de archivos alternativo +- `bat`: Clon de cat con mejoras +- `eza`: Alternativa moderna a ls +- `fzf`: Buscador interactivo +- `tmux`: Terminal multiplexor +- `jq`: Procesador JSON +- `unzip`: Descompresor ZIP +- `p7zip`: Descompresor 7z +- `zip`: Compresor ZIP +- `xdg-utils`: Herramientas de integración con el escritorio +- `bluez` y `bluez-utils`: Soporte Bluetooth +- `pipewire` y `wireplumber`: Audio y video +- `noto-fonts`: Fuente base +- `noto-fonts-cjk`: Fuentes CJK (Chino, Japonés, Coreano) +- `ttf-firacode-nerd`: Fuente con iconos Nerd +- `intel-media-driver`: Drivers para GPU Intel + +### Paquetes instalados desde AUR: +- `google-chrome`: Navegador web +- `visual-studio-code-bin`: Editor de código +- `code-marketplace`: Extensión para VS Code marketplace +- `v3dv-git`: Drivers para Raspberry Pi +- `xdg-desktop-portal-hyprland`: Portal para Hyprland + +### Paquetes instalados desde Flatpak: +- VLC: Reproductor multimedia +- LibreOffice: Suite ofimática + +--- + +## 🐚 Opción 2: Configurar Zsh + +### Pasos realizados: +1. Instala `zsh` desde pacman +2. Cambia el shell del usuario a Zsh +3. Clona `oh-my-zsh` en `~/.oh-my-zsh` +4. Instala `oh-my-posh` desde binario +5. Descarga tema de Oh My Posh (CaskaydiaCove) +6. Crea enlace simbólico de `~/.zshrc` desde `mg_dotfiles` +7. Instala plugins de Zsh: `zsh-autosuggestions`, `zsh-syntax-highlighting`, `zsh-completions` + +--- + +## 🐳 Opción 3: Docker + +### Pasos realizados: +1. Instala `docker` y `docker-compose` +2. Instala Portainer como contenedor Docker +3. Habilita e inicia el servicio Docker +4. Configura permisos para el usuario actual + +--- + +## 🌐 Opción 4: ZeroTier + +### Pasos realizados: +1. Agrega la clave GPG de ZeroTier +2. Agrega repositorio de ZeroTier +3. Actualiza repositorios +4. Instala `zerotier-one` +5. Habilita e inicia el servicio ZeroTier + +--- + +## 🖨️ Opción 5: Impresoras + +### Pasos realizados: +1. Instala `cups` (sistema de impresión) +2. Instala `system-config-printer` (configuración gráfica) +3. Instala `hplip` (drivers HP) +4. Instala `epson-inkjet-printer-201207w` (drivers Epson) +5. Habilita e inicia el servicio `org.cups.cupsd` +6. Inicia el servicio `avahi-daemon` (para descubrimiento de impresoras en red) +7. Añade el usuario al grupo `sys` y `lp` + +--- + +## 🖱️ Opción 6: Cursor + +### Pasos realizados: +1. Descarga tema de cursor Bibata Modern Ice desde GitHub +2. Descomprime en `/usr/share/icons` +3. Ejecuta `update-alternatives` para configurar el cursor por defecto + +--- + +## 🎨 Opción 7: Iconos (Gestor Interactivo) + +### Pasos realizados: +1. Presenta menú para seleccionar tema de iconos: + - Tela (Opciones: blue, brown, cyan, dark, grey, orange, pink, purple, red, teal, violet, yellow) + - Papirus (Opciones: dark, light, red, violet, adwaita) + - Candy (Opciones: dark, light, blue, orange, purple, teal, yellow) +2. Descarga el tema seleccionado desde GitHub +3. Instala el tema en `~/.local/share/icons` + +--- + +## 🎨 Opción 7D: Iconos por Defecto + +### Pasos realizados: +1. Descarga e instala tema Tela Nord por defecto +2. No requiere interacción del usuario + +--- + +## 🌙 Opción S: Activar Suspensión + +### Pasos realizados: +1. Verifica que el comando `omarchy-toggle-suspend` existe +2. Ejecuta `omarchy-toggle-suspend` para crear el archivo de estado `~/.local/state/omarchy/toggles/suspend-on` +3. Notifica que la opción "Suspend" ahora está disponible en el menú System (Super+Esc) + +--- + +## 🔐 Opción K: SSH Keyring + +### Pasos realizados: +1. Verifica que `ssh-add` está disponible (openssh) +2. Habilita e inicia el servicio `gcr-ssh-agent.socket` +3. Configura `SSH_AUTH_SOCK` en `$XDG_RUNTIME_DIR/gcr/ssh` +4. Busca todas las claves SSH privadas en `~/.ssh/` +5. Añade cada clave al agente usando `ssh-add` +6. La primera vez, gcr-ssh-agent pide la passphrase y la guarda en el keyring +7. En futuras conexiones, desbloquea automáticamente la clave + +--- + +## 💾 Opción F: Formatos de Disco + +### Pasos realizados: +1. Instala `dosfstools`: Soporte para FAT32 +2. Instala `exfatprogs`: Soporte para exFAT +3. Instala `ntfs-3g`: Soporte para NTFS +4. Instala `e2fsprogs`: Soporte para ext4 (ya incluido en Arch base) + +--- + +## 🎨 Opción H: Hyprland + +### Pasos realizados: +1. Verifica que existe el directorio `mg_dotfiles/omarchy/hypr` +2. Crea copia de seguridad si ya existe configuración en `~/.config/hypr` +3. Crea enlace simbólico desde `mg_dotfiles/omarchy/hypr` a `~/.config/hypr` +4. Instala tema de iconos Tela Nord por defecto +5. Activa opción de suspensión en el menú System (ejecuta `omarchy-toggle-suspend`) + +--- + +## 📄 Opción T: Plantillas de Documentos + +### Pasos realizados: +1. Crea directorio `~/Templates` si no existe +2. Copia plantillas de documentos desde `doc_templates/`: + - Plantillas de archivos bash + - Plantillas de archivos markdown + - Plantillas para otros formatos disponibles + +--- + +## ✅ Opción A: Instalar Todo + +### Ejecuta los siguientes módulos: +1. Instalar Aplicaciones +2. Configurar Zsh +3. Docker +4. ZeroTier +5. Impresoras +6. Cursor +7D. Iconos por Defecto (Tela Nord) +S. Suspensión +K. SSH Keyring +F. Formatos de Disco +H. Hyprland +T. Plantillas de Documentos + +**Nota:** No ejecuta la opción 7 (Gestor Interactivo de Iconos) porque requiere selección manual. + +--- + +## 📝 Notas para el Equipo + +- **Actualización de este documento**: Cuando se agreguen nuevos módulos o software a los scripts existentes, actualizar este archivo para mantener la lista sincronizada. +- **Dotfiles**: Las configuraciones de Zsh y Hyprland se crean como enlaces simbólicos a `mg_dotfiles`. Cualquier cambio en los archivos originales se refleja inmediatamente. +- **Fuentes**: Asegurarse de instalar una **Nerd Font** para que los iconos se vean correctamente. +- **Reiniciar**: Cerrar sesión después de instalar para aplicar cambios de grupos (Docker) y variables de entorno. +- **Logs**: Cada ejecución genera un log en `logs/omarchy-setup-YYYY-MM-DD_HH-MM-SS.log` diff --git a/mg_dotfiles b/mg_dotfiles new file mode 160000 index 0000000..3b0a88b --- /dev/null +++ b/mg_dotfiles @@ -0,0 +1 @@ +Subproject commit 3b0a88b29e885665c87b1c3a7257d20c56e88a67 diff --git a/modules/hyprland-config.sh b/modules/hyprland-config.sh index 401ddca..a3169c1 100755 --- a/modules/hyprland-config.sh +++ b/modules/hyprland-config.sh @@ -51,6 +51,18 @@ run_module_main() { # Llamamos a la función específica de icon_manager.sh set_default_icon_theme + # --- 3. Activar opción de suspensión en el menú System --- + log_info "Activando opción de suspensión en el menú System..." + if command -v omarchy-toggle-suspend &>/dev/null; then + if omarchy-toggle-suspend; then + log_success "Opción de suspensión activada en el menú System." + else + log_warning "No se pudo activar la opción de suspensión, pero la configuración de Hyprland se instaló correctamente." + fi + else + log_warning "Comando omarchy-toggle-suspend no encontrado. Omitiendo activación de suspensión." + fi + log_success "Configuración de Hyprland instalada correctamente." log_warning "Por favor, cierra sesión y vuelve a iniciarla para aplicar los cambios." return 0 diff --git a/modules/ssh-keyring.sh b/modules/ssh-keyring.sh index f2a0798..c686da2 100755 --- a/modules/ssh-keyring.sh +++ b/modules/ssh-keyring.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # =============================================================== -# ssh-keyring.sh - Sincronizar claves SSH con GNOME Keyring +# ssh-keyring.sh - Sincronizar claves SSH con gcr-ssh-agent # =============================================================== SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -20,12 +20,7 @@ _derive_fingerprint() { } sync_ssh_keyring() { - log_step "Sincronizar claves SSH con GNOME Keyring" - - if ! command_exists gnome-keyring-daemon; then - log_error "gnome-keyring-daemon no está instalado. Ejecuta primero el módulo de aplicaciones." - return 1 - fi + log_step "Sincronizar claves SSH con gcr-ssh-agent" if ! command_exists ssh-add; then log_error "ssh-add no está disponible (openssh). Instala el módulo de aplicaciones antes." @@ -34,32 +29,40 @@ sync_ssh_keyring() { mkdir -p "${HOME}/.config/environment.d" cat <<'EOF' > "${HOME}/.config/environment.d/10-gnome-keyring.conf" -SSH_AUTH_SOCK=/run/user/$UID/keyring/ssh +SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh EOF - # No intentamos iniciar el daemon. Después de un reinicio de sesión, ya debería estar activo. - log_info "Buscando el socket del agente de GNOME Keyring..." + log_info "Verificando servicio gcr-ssh-agent.socket..." - # Obtenemos el UID del usuario dueño del directorio HOME. Este método es más fiable. - local target_uid - target_uid=$(stat -c '%u' "$HOME") - - local keyring_socket="/run/user/${target_uid}/keyring/ssh" - - # Obtenemos el UID del usuario dueño del directorio HOME. Este método es más fiable. - local target_uid - target_uid=$(stat -c '%u' "$HOME") - - local keyring_socket="/run/user/${target_uid}/keyring/ssh" - - if [[ ! -S "$keyring_socket" ]]; then - log_error "No se encontró el socket de GNOME Keyring en la ruta esperada: ${keyring_socket}" - log_warning "Esto usualmente significa que el servicio no se ha iniciado correctamente con tu sesión de escritorio." - log_info "Asegúrate de haber cerrado y vuelto a abrir tu sesión después de instalar el módulo de aplicaciones." - return 1 + if ! systemctl --user is-enabled gcr-ssh-agent.socket &>/dev/null; then + log_info "Habilitando gcr-ssh-agent.socket..." + systemctl --user enable gcr-ssh-agent.socket fi - log_success "Socket de GNOME Keyring encontrado en: ${keyring_socket}" + if ! systemctl --user is-active gcr-ssh-agent.socket &>/dev/null; then + log_info "Iniciando gcr-ssh-agent.socket..." + systemctl --user start gcr-ssh-agent.socket + fi + + log_info "Buscando el socket del agente GCR SSH..." + + local target_uid + target_uid=$(stat -c '%u' "$HOME") + + local keyring_socket="/run/user/${target_uid}/gcr/ssh" + + if [[ ! -S "$keyring_socket" ]]; then + log_error "No se encontró el socket de gcr-ssh-agent en la ruta esperada: ${keyring_socket}" + log_warning "Intentando activar el socket solicitando el servicio..." + if SSH_AUTH_SOCK="$keyring_socket" ssh-add -l &>/dev/null; then + log_success "Socket de gcr-ssh-agent activado correctamente." + else + log_error "No se pudo activar el socket. Revisa la configuración de gcr-ssh-agent." + return 1 + fi + fi + + log_success "Socket de gcr-ssh-agent encontrado en: ${keyring_socket}" export SSH_AUTH_SOCK="$keyring_socket" local ssh_dir="${HOME}/.ssh" @@ -120,7 +123,7 @@ EOF done if [[ $added -gt 0 ]]; then - log_success "Claves SSH sincronizadas con GNOME Keyring." + log_success "Claves SSH sincronizadas con gcr-ssh-agent." else log_info "No se añadieron nuevas claves SSH." fi diff --git a/modules/suspend.sh b/modules/suspend.sh new file mode 100755 index 0000000..d2096af --- /dev/null +++ b/modules/suspend.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# =============================================================== +# suspend.sh - Activa la opción de suspensión en el menú System +# =============================================================== + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "${SCRIPT_DIR}/common.sh" + +run_module_main() { + log_step "Activación de Opción de Suspensión" + + # Verificar que el comando existe + if ! command -v omarchy-toggle-suspend &>/dev/null; then + log_error "El comando 'omarchy-toggle-suspend' no está disponible." + log_info "Este comando es parte de Omarchy y debe estar instalado." + return 1 + fi + + # Verificar estado actual del archivo de toggle + local suspend_file="$HOME/.local/state/omarchy/toggles/suspend-on" + if [[ -f "$suspend_file" ]]; then + log_info "La opción de suspensión ya está activa en el menú System." + log_info "Para desactivarla, puedes ejecutar: omarchy-toggle-suspend" + return 0 + fi + + # Activar suspensión + log_info "Activando opción de suspensión en el menú System..." + if omarchy-toggle-suspend; then + log_success "Opción de suspensión activada correctamente." + log_info "Ahora puedes usar Super+Esc para acceder al menú System y seleccionar Suspend." + return 0 + else + log_error "Error al activar la opción de suspensión." + return 1 + fi +} + +# Ejecutar si se llama directamente +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + run_module_main "$@" +fi diff --git a/omarchy-setup.sh b/omarchy-setup.sh index 0d89532..83f04ff 100755 --- a/omarchy-setup.sh +++ b/omarchy-setup.sh @@ -132,6 +132,7 @@ MODULES=( ["6"]="mouse_cursor;install_mouse_cursor;🖱️ Instalar Tema de Cursor (Bibata);bg" ["7"]="icon_manager;run_module_main;🎨 Gestionar Temas de Iconos (Papirus, Tela, etc.);fg" ["7D"]="icon_manager;set_default_icon_theme;🎨 Instalar Tema de Iconos por Defecto;bg" + ["S"]="suspend;run_module_main;🌙 Activar Suspensión en Menú System;bg" ["K"]="ssh-keyring;sync_ssh_keyring;🔐 Sincronizar claves SSH con GNOME Keyring;fg" ["F"]="disk-format;run_module_main;💾 Habilitar Formatos FAT/exFAT/NTFS/ext4;bg" ["H"]="hyprland-config;run_module_main;🎨 Instalar Configuración de Hyprland;bg"