82 lines · 2.5 KB · executable
#!/usr/bin/env bash
set -euo pipefail

SSH_AGENT_SOCKET="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/ssh-agent.socket"
HYPRLAND_CONF="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprland.conf"
PROFILE_D="/etc/profile.d/ssh-agent-hyprland.sh"

check_ssh_agent() {
    if [[ -S "$SSH_AGENT_SOCKET" ]]; then
        SSH_AUTH_SOCK="$SSH_AGENT_SOCKET" ssh-add -l &>/dev/null
        return $?
    fi
    return 1
}

start_agent() {
    mkdir -p "$(dirname "$SSH_AGENT_SOCKET")"
    ssh-agent -D -a "$SSH_AGENT_SOCKET" &
    echo "ssh-agent started on $SSH_AGENT_SOCKET"
}

add_keys() {
    local keys=()
    for key in "$HOME/.ssh"/id_*; do
        [[ -f "$key" && "$key" != *.pub && "$key" != *.so ]] && keys+=("$key")
    done
    if (( ${#keys[@]} > 0 )); then
        SSH_AUTH_SOCK="$SSH_AGENT_SOCKET" ssh-add "${keys[@]}" 2>/dev/null
        echo "Added ${#keys[@]} key(s) to ssh-agent"
    else
        echo "No SSH keys found in $HOME/.ssh"
    fi
}

setup_hyprland() {
    if ! grep -q 'exec-once.*ssh-agent' "$HYPRLAND_CONF" 2>/dev/null; then
        echo "exec-once = ssh-agent -D -a \$XDG_RUNTIME_DIR/ssh-agent.socket" \
            >> "$HYPRLAND_CONF"
        echo "Added ssh-agent exec-once to $HYPRLAND_CONF"
    else