diff --git a/.local/bin/passwords b/.local/bin/passwords new file mode 100644 index 00000000..7fcd81ce --- /dev/null +++ b/.local/bin/passwords @@ -0,0 +1,64 @@ +#!/bin/sh + +getPasswords() { \ + choice="$(pass | sed -r '1d;s/^├.{3}//;s/^└.{3}//' | dmenu -i -p "Passwords")" + + if [ "$choice" != "" ] + then + pass "$choice" | xclip -selection clipboard + notify-send " Password for $choice copied!" + + sleep 10 + + printf "" | xclip -selection clipboard + fi +} + +getTOTP() { \ + choice="$(pass | grep "totp" | sed -r 's/^├.{3}//;s/^└.{3}//' | dmenu -i -p "OTP")" + + if [ "$choice" != "" ] + then + pass otp "$choice" | xclip -selection clipboard + notify-send " OTP for $choice copied!" + + sleep 10 + + printf "" | xclip -selection clipboard + fi +} + +addPassword() { \ + name=$(printf "" | dmenu -i -p "What is the account name?") + if [ "$name" != "" ] + then + case "$(printf "Random password\\nManual password" | dmenu -i -p "Passwords")" in + "Random password") addPass=$(randompass -p $(printf "12\\n32\\n128" | dmenu -i -p "How many characters?")) ;; + "Manual password") addPass=$(dmenu -i -P -p "Enter a password") ;; + esac + echo $addPass | pass insert "$name" -e + notify-send " Password for $name added!" + fi + unset name + unset addPass +} + +removePassword() { \ + name="$(pass | sed -r '1d;s/^├.{3}//;s/^└.{3}//' | dmenu -i -p "Passwords")" + sure="$(printf "No\\nYes" | dmenu -i -sb "#ac3333" -sf "#1d2021" -nf "#bbbbbb" -nb "#111111" -p "Are you sure?")" + if [ $sure = "Yes" ] + then + notify-send " Password for $name removed!" + pass rm "$name" -f + else + notify-send "Canceled" + fi + unset name +} + +case "$(printf "Add password\\nRemove password\\nView password\\nView TOTP" | dmenu -i -p "Passwords")" in + "Add password") addPassword ;; + "Remove password") removePassword ;; + "View password") getPasswords ;; + "View TOTP") getTOTP ;; +esac