scripts

Utilitity scripts
git clone git://gtms.dev:scripts
Log | Files | Refs

passmenu (1149B)


      1 #!/usr/bin/env bash
      2 
      3 shopt -s nullglob globstar
      4 
      5 typeit=0
      6 otp=0
      7 while test $# -gt 0; do
      8   case "$1" in
      9     --type)
     10       typeit=1
     11       shift
     12       ;;
     13     --otp)
     14       otp=1
     15       shift
     16       ;;
     17     *)
     18       break
     19       ;;
     20   esac
     21 done
     22 
     23 prefix=${PASSWORD_STORE_DIR-~/.password-store}
     24 password_files=( "$prefix"/**/*.gpg )
     25 password_files=( "${password_files[@]#"$prefix"/}" )
     26 password_files=( "${password_files[@]%.gpg}" )
     27 
     28 password=$(printf '%s\n' "${password_files[@]}" | dmenu "$@")
     29 
     30 [[ -n $password ]] || exit
     31 
     32 login=$(pass "$password" | awk -F: '/^login/{print $2}' | tr -d ' ')
     33 if [[ -n $login ]]; then
     34   if [[ $otp -eq 0 ]]; then
     35     notify-send "$password" "$login"
     36   else
     37     notify-send "$password - OTP copied"
     38   fi
     39 fi
     40 
     41 if [[ $typeit -eq 0 ]]; then
     42   if [[ $otp -eq 0 ]]; then
     43     pass show -c "$password" 2>/dev/null
     44   else
     45     pass otp -c "$password" 2>/dev/null
     46   fi
     47 else
     48   if [[ $otp -eq 0 ]]; then
     49     pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | xdotool type --clearmodifiers --file -
     50   else
     51     pass otp "$password" | { IFS= read -r pass; printf %s "$pass"; } | xdotool type --clearmodifiers --file -
     52   fi
     53 fi
     54