mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 21:35:16 +00:00
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.
89 lines
3.7 KiB
Bash
Executable File
89 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ===============================================================
|
|
# printer.sh - Configuración de impresoras (CUPS)
|
|
# ===============================================================
|
|
#
|
|
# Este módulo instala y configura el sistema de impresión CUPS
|
|
# (Common Unix Printing System) en Arch Linux.
|
|
#
|
|
# Funciones principales:
|
|
# - Instala CUPS, filtros de impresión y drivers genéricos.
|
|
# - Instala Avahi para la detección automática de impresoras en red.
|
|
# - Instala drivers específicos para impresoras Epson desde AUR.
|
|
# - Habilita y arranca los servicios de CUPS y Avahi.
|
|
# - Añade al usuario al grupo `lp` para permitir la administración
|
|
# de impresoras.
|
|
#
|
|
# ===============================================================
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SCRIPT_DIR}/common.sh"
|
|
|
|
install_printer() {
|
|
log_step "Configuración de Impresoras (CUPS)"
|
|
|
|
local target_user="${SUDO_USER:-$USER}"
|
|
|
|
# --- 1. Instalación de Paquetes Base ---
|
|
log_info "Instalando CUPS y paquetes base de impresión..."
|
|
# Paquetes:
|
|
# - cups, cups-pdf, cups-filters: El núcleo de CUPS.
|
|
# - ghostscript, gsfonts: Para interpretar PostScript.
|
|
# - gutenprint, foomatic-*: Drivers de impresión genéricos.
|
|
# - system-config-printer: Herramienta gráfica de configuración.
|
|
# - avahi, nss-mdns: Para descubrir impresoras en la red.
|
|
local base_pkgs=(
|
|
cups cups-pdf cups-filters ghostscript gsfonts gutenprint
|
|
foomatic-db-engine foomatic-db foomatic-db-ppds
|
|
foomatic-db-nonfree foomatic-db-nonfree-ppds
|
|
system-config-printer avahi nss-mdns
|
|
)
|
|
|
|
if ! sudo pacman -S --noconfirm --needed "${base_pkgs[@]}"; then
|
|
log_warning "Algunos paquetes base de impresión no pudieron instalarse. El servicio podría no funcionar."
|
|
fi
|
|
|
|
# --- 2. Instalación de Drivers de AUR ---
|
|
log_info "Instalando drivers para impresoras Epson (desde AUR)..."
|
|
# Drivers específicos para modelos de inyección de tinta de Epson.
|
|
local aur_drivers=("epson-inkjet-printer-escpr" "epson-inkjet-printer-escpr2" "epson-printer-utility")
|
|
if ! aur_install_packages "${aur_drivers[@]}"; then
|
|
log_warning "No se pudieron instalar todos los drivers de Epson desde AUR. Revisa los mensajes de error."
|
|
fi
|
|
|
|
# --- 3. Habilitación de Servicios ---
|
|
log_info "Habilitando y arrancando los servicios de impresión..."
|
|
local services=("cups.service" "avahi-daemon.service")
|
|
for svc in "${services[@]}"; do
|
|
if ! sudo systemctl is-enabled "$svc" &>/dev/null; then
|
|
sudo systemctl enable "$svc"
|
|
log_success "Servicio ${svc} habilitado."
|
|
fi
|
|
if ! sudo systemctl is-active "$svc" &>/dev/null; then
|
|
sudo systemctl start "$svc"
|
|
log_success "Servicio ${svc} iniciado."
|
|
fi
|
|
done
|
|
|
|
# --- 4. Configuración de Permisos de Usuario ---
|
|
# El usuario debe pertenecer al grupo `lp` para administrar impresoras.
|
|
if ! id -nG "$target_user" | grep -qw lp; then
|
|
log_info "Agregando al usuario '${target_user}' al grupo 'lp' para administrar impresoras..."
|
|
sudo usermod -aG lp "$target_user"
|
|
log_warning "Para que este cambio de grupo tenga efecto, es necesario cerrar sesión y volver a iniciarla."
|
|
else
|
|
log_info "El usuario '${target_user}' ya pertenece al grupo 'lp'."
|
|
fi
|
|
|
|
log_success "La configuración de CUPS ha finalizado."
|
|
log_info "Puedes añadir y gestionar tus impresoras desde la interfaz web de CUPS en http://localhost:631"
|
|
log_info "o utilizando la herramienta gráfica 'system-config-printer'."
|
|
|
|
return 0
|
|
}
|
|
|
|
# Ejecutar si se llama directamente al script.
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
install_printer "$@"
|
|
fi
|