diff --git a/bin/.bin/dmenu/password-manager b/bin/.bin/dmenu/password-manager index fff8f03c..6b473cd2 100755 --- a/bin/.bin/dmenu/password-manager +++ b/bin/.bin/dmenu/password-manager @@ -6,6 +6,17 @@ extraArgs="" hostname | grep -q 'phone' && extraArgs="-normal-window" +function clipboard(){ + text="$(cat -)" + if [ -n "$WAYLAND_DISPLAY" ]; then + echo "$text" | wl-copy + echo "$text" | wl-copy --primary + else + echo "$text" | xclip -selection "primary" + echo "$text" | xclip -selection "clipboard" + fi +} + function type_password(){ local password="$1" local pw=$(pass "$password" | head -n 1) @@ -26,7 +37,11 @@ function copy_password(){ local password="$1" local part="${2:-0}" local sleep_argv0="jh password store sleep on display $DISPLAY" - local before="$(xclip -o -selection clipboard 2>/dev/null | base64)" + if [ -n "$WAYLAND_DISPLAY" ]; then + local before="$(wl-paste 2>/dev/null | base64)" + else + local before="$(xclip -o -selection clipboard 2>/dev/null | base64)" + fi pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5 local pw="" case "$part" in @@ -40,14 +55,12 @@ function copy_password(){ if [ -z "$pw" ]; then exit 1 fi - echo "$pw" | xclip -selection "primary" - echo "$pw" | xclip -selection "clipboard" + echo "$pw" | clipboard notify-send -t 3000 "Password put on clipboard" "Will be removed in 3 seconds" ( ( exec -a "$sleep_argv0" bash <<<"trap 'kill %1' TERM; sleep '3' & wait" ) - echo "$before" | base64 -d | xclip -selection "primary" - echo "$before" | base64 -d | xclip -selection "clipboard" + echo "$before" | base64 -d | clipboard notify-send "Password Clearerd"