update rbw scripts

This commit is contained in:
Simon Rieger 2025-01-03 23:51:33 +01:00
parent 10f93e7cdd
commit 8755313f5b
2 changed files with 67 additions and 12 deletions

View file

@ -1,7 +1,55 @@
#!/usr/bin/env bash #!/bin/bash
# Use fuzzel to find a password from password-store and copy it to clipboard.
# inpired by: https://gist.github.com/igemnace/2b8609d280752e8a1b173204c14f6892
pass_name=$(rbw list | choose) # 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
}
[[ $pass_name != "" ]] && rbw get "$pass_name" --clipboard # 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
}
# Wähle einen Eintrag aus der Liste
pass_name=$(select_item "Wähle einen Eintrag:" "$(rbw list)")
# Wenn ein Eintrag ausgewählt wurde
if [[ $pass_name != "" ]]; then
# Hole alle Details des Eintrags
details=$(rbw get "$pass_name" --full)
# Zeige Details an und lasse den Benutzer eine Zeile auswählen
selected_detail=$(select_item "Details für $pass_name:" "$details")
# Wenn eine Zeile ausgewählt wurde
if [[ $selected_detail != "" ]]; then
# Bereinige den ausgewählten Text
cleaned_text=$(clean_text "$selected_detail")
# Kopiere den bereinigten Text in die Zwischenablage
copy_to_clipboard "$cleaned_text"
echo "Bereinigter Text wurde in die Zwischenablage kopiert."
fi
fi

View file

@ -1,15 +1,22 @@
#!/bin/bash #!/bin/bash
# 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
}
# Funktion zum Bereinigen des ausgewählten Textes # Funktion zum Bereinigen des ausgewählten Textes
clean_text() { clean_text() {
local text="$1" local text="$1"
# Prüfe, ob der Text einen Doppelpunkt gefolgt von einem Leerzeichen enthält
if [[ "$text" == *": "* ]]; then if [[ "$text" == *": "* ]]; then
# Entferne alles bis zum ersten Doppelpunkt und das folgende Leerzeichen
echo "$text" | sed 's/^[^:]*: //' echo "$text" | sed 's/^[^:]*: //'
else else
# Wenn kein Doppelpunkt mit folgendem Leerzeichen gefunden wird, gib den Text unverändert zurück
echo "$text" echo "$text"
fi fi
} }
@ -25,15 +32,15 @@ copy_to_clipboard() {
} }
# Wähle einen Eintrag aus der Liste # Wähle einen Eintrag aus der Liste
pass_name=$(rbw list | fuzzel -d) pass_name=$(select_item "Wähle einen Eintrag:" "$(rbw list)")
# Wenn ein Eintrag ausgewählt wurde # Wenn ein Eintrag ausgewählt wurde
if [[ $pass_name != "" ]]; then if [[ $pass_name != "" ]]; then
# Hole alle Details des Eintrags # Hole alle Details des Eintrags
details=$(rbw get "$pass_name" --full) details=$(rbw get "$pass_name" --full)
# Zeige Details in einem neuen Fuzzel-Fenster an und lasse den Benutzer eine Zeile auswählen # Zeige Details an und lasse den Benutzer eine Zeile auswählen
selected_detail=$(echo "$details" | fuzzel --dmenu --prompt="Details für $pass_name: ") selected_detail=$(select_item "Details für $pass_name:" "$details")
# Wenn eine Zeile ausgewählt wurde # Wenn eine Zeile ausgewählt wurde
if [[ $selected_detail != "" ]]; then if [[ $selected_detail != "" ]]; then