dotfiles/dot_config/fuzzel/executable_fuzzel-rbw.sh

62 lines
1.6 KiB
Bash
Raw Normal View History

2025-01-03 14:06:19 +01:00
#!/bin/bash
2024-10-30 17:06:32 +01:00
2025-01-03 23:51:33 +01:00
# Funktion zur Auswahl mit fuzzel oder choose
select_item() {
local prompt="$1"
local input="$2"
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "$input" | choose -p "$prompt"
else
echo "$input" | fuzzel -d -p "$prompt"
fi
}
2025-01-03 14:06:19 +01:00
# Funktion zum Bereinigen des ausgewählten Textes
clean_text() {
local text="$1"
if [[ "$text" == *": "* ]]; then
echo "$text" | sed 's/^[^:]*: //'
else
echo "$text"
fi
}
# Funktion zum Kopieren in die Zwischenablage
copy_to_clipboard() {
local text="$1"
if [[ "$OSTYPE" == "darwin"* ]]; then
echo -n "$text" | pbcopy
else
echo -n "$text" | wl-copy
fi
}
2025-02-10 15:23:39 +01:00
# Liste mit Name+User kombinieren und formatieren
entries=$(rbw list --fields name,user | awk -F'\t' '{print $1 " | " $2}')
2024-10-30 17:06:32 +01:00
2025-02-10 15:23:39 +01:00
# Auswahl des kombinierten Eintrags
selected=$(select_item "Wähle einen Login: " "$entries")
if [[ -n "$selected" ]]; then
# Extrahiere Name und User aus der Auswahl
name=$(echo "$selected" | awk -F' \\| ' '{print $1}')
user=$(echo "$selected" | awk -F' \\| ' '{print $2}')
2025-01-03 14:06:19 +01:00
2025-02-10 15:23:39 +01:00
# Hole Details mit beiden Parametern
details=$(rbw get "$name" "$user" --full 2>/dev/null)
if [[ -z "$details" ]]; then
echo "Fehler beim Abrufen der Details"
exit 1
fi
2025-01-03 14:06:19 +01:00
2025-02-10 15:23:39 +01:00
# Detailauswahl wie bisher
selected_detail=$(select_item "Details für $name: " "$details")
if [[ -n "$selected_detail" ]]; then
2025-01-03 14:06:19 +01:00
cleaned_text=$(clean_text "$selected_detail")
copy_to_clipboard "$cleaned_text"
2025-02-10 15:23:39 +01:00
echo "In Zwischenablage kopiert: ${cleaned_text:0:20}..."
2025-01-03 14:06:19 +01:00
fi
fi