From f91ab3bd6e5a0be258040970146194c2da0d40d6 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:18:14 -0600 Subject: [PATCH] Fix: Improve GNOME Keyring Socket Detection (#9) * feat: add dev tools, AI aliases, and improve zshrc documentation This commit introduces several new features and improvements: - **Adds Development Tools to `apps.sh`:** The `apps.sh` module now installs essential development tools, including `python`, `pip`, `nodejs`, `npm`, `uv`, and `nvm`. - **Implements `.zshrc.local` for Private Variables:** - A `.zshrc.local.example` file has been added to serve as a template for users to securely store their private environment variables, such as API keys. - The main `.zshrc` file now sources `.zshrc.local` if it exists. - **Adds AI Aliases to `.zshrc`:** A new section has been added to `.zshrc` with example aliases for interacting with command-line AI tools. - **Improves `.zshrc` Documentation:** The `.zshrc` file has been thoroughly documented with comments in Spanish, explaining the purpose of each section. The title has also been updated and professionalized. - **Fixes a Regression:** This commit restores the `ytm`, `ytv`, `ytls`, and SSH agent functions in `.zshrc` that were accidentally removed in a previous step. * feat: improve keyring UX and icon manager flow This commit introduces two main improvements to the user experience: 1. **Refactors the Icon Manager for Non-Interactive Installation:** - The `icon_manager.sh` module can now be run in a non-interactive mode. - The "Install All" process has been updated to use this non-interactive mode, which installs the default icon theme without pausing the script or requiring user input. 2. **Improves the GNOME Keyring Workflow:** - The script no longer errors out if the GNOME Keyring agent is not immediately available after installation. - Instead, a clear summary message is now displayed at the end of the "Install All" process, instructing the user to log out and back in, and then run the SSH key synchronization module separately. This provides a much smoother and more intuitive user experience. * fix: improve GNOME Keyring socket detection This commit fixes a bug in the `ssh-keyring.sh` module where the GNOME Keyring socket could not be found after a system reboot. The script now explicitly determines the user's UID to construct the correct path to the socket, instead of relying on the potentially unreliable `$UID` environment variable. This makes the socket detection more robust, especially when the script is run with `sudo`. * fix: improve GNOME Keyring socket detection This commit fixes a bug in the `ssh-keyring.sh` module where the GNOME Keyring socket could not be found after a system reboot. The script now uses the `logname` command to reliably determine the user's UID and construct the correct path to the socket, instead of relying on environment variables that can be unreliable when the script is run with `sudo`. This makes the socket detection more robust. --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Marco Gallegos --- modules/ssh-keyring.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/ssh-keyring.sh b/modules/ssh-keyring.sh index 063c5c4..2c218e5 100755 --- a/modules/ssh-keyring.sh +++ b/modules/ssh-keyring.sh @@ -45,13 +45,19 @@ EOF log_info "GNOME Keyring ya estaba en ejecución." fi - local keyring_socket="${SSH_AUTH_SOCK:-/run/user/$UID/keyring/ssh}" + local target_uid + target_uid=$(id -u "$(logname)") + local keyring_socket="${SSH_AUTH_SOCK:-/run/user/${target_uid}/keyring/ssh}" + if [[ ! -S "$keyring_socket" ]]; then - log_warning "No se encontró el socket de GNOME Keyring en ${keyring_socket}." - if [[ -S "/run/user/$UID/keyring/ssh" ]]; then - keyring_socket="/run/user/$UID/keyring/ssh" + log_warning "No se encontró el socket de GNOME Keyring en la ruta esperada." + # Como fallback, intentamos la ruta con el UID del proceso actual. + local fallback_socket="/run/user/$(id -u)/keyring/ssh" + if [[ -S "$fallback_socket" ]]; then + keyring_socket="$fallback_socket" + log_info "Se encontró un socket válido en la ruta de fallback: ${keyring_socket}" else - log_error "GNOME Keyring no expone el componente SSH. Revisa tu sesión." + log_error "GNOME Keyring no parece estar exponiendo el socket SSH. Asegúrate de haber reiniciado la sesión." return 1 fi fi