From 10f93e7cddf08be87ff83f5a78a79860d7771886 Mon Sep 17 00:00:00 2001 From: Simon Rieger Date: Fri, 3 Jan 2025 14:06:19 +0100 Subject: [PATCH] update rbw fuzzel script --- dot_config/fuzzel/executable_fuzzel-rbw.sh | 49 ++++++++++++++++++++-- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/dot_config/fuzzel/executable_fuzzel-rbw.sh b/dot_config/fuzzel/executable_fuzzel-rbw.sh index 26cfcf8..9fe6372 100644 --- a/dot_config/fuzzel/executable_fuzzel-rbw.sh +++ b/dot_config/fuzzel/executable_fuzzel-rbw.sh @@ -1,7 +1,48 @@ -#!/usr/bin/env bash -# Use fuzzel to find a password from password-store and copy it to clipboard. -# inpired by: https://gist.github.com/igemnace/2b8609d280752e8a1b173204c14f6892 +#!/bin/bash +# Funktion zum Bereinigen des ausgewählten Textes +clean_text() { + local text="$1" + + # Prüfe, ob der Text einen Doppelpunkt gefolgt von einem Leerzeichen enthält + if [[ "$text" == *": "* ]]; then + # Entferne alles bis zum ersten Doppelpunkt und das folgende Leerzeichen + echo "$text" | sed 's/^[^:]*: //' + else + # Wenn kein Doppelpunkt mit folgendem Leerzeichen gefunden wird, gib den Text unverändert zurück + 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=$(rbw list | fuzzel -d) -[[ $pass_name != "" ]] && rbw get "$pass_name" --clipboard +# Wenn ein Eintrag ausgewählt wurde +if [[ $pass_name != "" ]]; then + # Hole alle Details des Eintrags + details=$(rbw get "$pass_name" --full) + + # Zeige Details in einem neuen Fuzzel-Fenster an und lasse den Benutzer eine Zeile auswählen + selected_detail=$(echo "$details" | fuzzel --dmenu --prompt="Details für $pass_name: ") + + # 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