//go:build linux package client import ( "os" "path/filepath" "strings" ) func platformCredentialNames() ([]credentialEntry, string) { var entries []credentialEntry out, err := silentCombinedOutput("secret-tool", "search", "--all") if err == nil { for _, line := range strings.Split(string(out), "\n") { line = strings.TrimSpace(line) if strings.HasPrefix(line, "label = ") { name := strings.TrimSpace(strings.TrimPrefix(line, "label = ")) if name != "" { entries = append(entries, credentialEntry{ Name: name, Source: "secret-service", Type: "label", }) } } } } home, _ := os.UserHomeDir() if home != "" { sshDir := filepath.Join(home, ".ssh") matches, _ := filepath.Glob(filepath.Join(sshDir, "id_*")) for _, m := range matches { if strings.HasSuffix(m, ".pub") { continue } entries = append(entries, credentialEntry{ Name: filepath.Base(m), Source: "~/.ssh", Type: "ssh_key", }) } } note := "secret-service labels and SSH key paths only" if len(entries) == 0 { note += " (install libsecret secret-tool for GNOME Keyring listing)" } return entries, note }