feat: migrate SSH keyring to gcr-ssh-agent and unify documentation

- Update ssh-keyring module to use gcr-ssh-agent.socket instead of gnome-keyring's SSH component
- Configure SSH_AUTH_SOCK to $XDG_RUNTIME_DIR/gcr/ssh
- Merge DOCUMENTACION.md content into Readme.md for unified documentation
- Rename install.md to installed_software.md with updated SSH keyring section

Note: gnome-keyring 46.0+ moved SSH functionality to gcr, requiring gcr-ssh-agent service
This commit is contained in:
Marco Gallegos
2026-01-11 09:55:46 -06:00
parent 8465fc4fb2
commit 72208b8301
9 changed files with 457 additions and 238 deletions

View File

@@ -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

View File

@@ -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

42
modules/suspend.sh Executable file
View File

@@ -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