33 lines
844 B
Bash
Executable file
33 lines
844 B
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
shopt -s nullglob globstar
|
|
|
|
prefix=${PASSWORD_STORE_DIR-~/.password-store}
|
|
password_files=( "$prefix"/**/*.gpg )
|
|
password_files=( "${password_files[@]#"$prefix"/}" )
|
|
password_files=( "${password_files[@]%.gpg}" )
|
|
|
|
password=$(printf "%s\n" "${password_files[@]}" | rofi -dmenu -p pass: "$@")
|
|
|
|
[[ -n $password ]] || exit
|
|
|
|
for browser in firefox chromium
|
|
do
|
|
wid=$(xdotool search --onlyvisible --name "$browser")
|
|
[[ $wid ]] && break
|
|
done
|
|
|
|
# If browser is in focus, type it in
|
|
if [[ $wid = $(xdotool getwindowfocus) ]]
|
|
then
|
|
data="$(pass show "$password")"
|
|
pass="$(echo "$data" | head -1)"
|
|
login="$(echo "$data" | grep "^login:" | awk '{print $2}')"
|
|
|
|
xdotool type --clearmodifiers "$login"
|
|
xdotool key Tab
|
|
xdotool type --clearmodifiers "$pass"
|
|
else
|
|
pass show -c "$password" 2>/dev/null
|
|
fi
|