101 lines
2.9 KiB
Bash
Executable file
101 lines
2.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Very basic interface for rbw using rofi
|
|
if [ $(hostname) = "syl" ]; then
|
|
if [ $XDG_SESSION_TYPE = "x11" ]; then
|
|
style="laptop-rbw"
|
|
echo "this is x11"
|
|
else
|
|
style="laptop-wayland"
|
|
echo "this is wayland"
|
|
fi
|
|
else
|
|
style="desktop-rbw"
|
|
#echo "this is not hidpi"
|
|
fi
|
|
|
|
export YDOTOOL_SOCKET=/tmp/ydotools
|
|
|
|
# Get all password files and create an array
|
|
root=~/.password-store
|
|
CACHE=~/.local/tmp/pass_wofi
|
|
seat=seat0
|
|
|
|
rbw sync
|
|
|
|
list_passwords() {
|
|
rbw list
|
|
}
|
|
|
|
passwords=$list_passwords
|
|
|
|
prompt='BW'
|
|
if [ $XDG_SESSION_TYPE = "x11" ]; then
|
|
SECRET=$(list_passwords | wofi -i --prompt="${prompt}" --dmenu --cache-file ${CACHE}
|
|
# $@ &
|
|
# c=0
|
|
# while ! xprop -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 -id $(xdotool search -class 'rofi') ; do
|
|
# sleep .1
|
|
# c=$((c+1))
|
|
# [[ c = 50 ]] && exit; # stop script window didn't appear after 5 seconds
|
|
# done
|
|
)
|
|
else
|
|
SECRET=$(list_passwords | wofi -i --prompt="${prompt}" --dmenu --cache-file ${CACHE})
|
|
fi
|
|
|
|
# Ask whether pass, user or both are required
|
|
options=("Password" \
|
|
"User" \
|
|
"User and password" \
|
|
"QR-Code" \
|
|
"OTP")
|
|
|
|
if [ $XDG_SESSION_TYPE = "x11" ]; then
|
|
option=$(printf '%s\n' "${options[@]%}" | wofi -i --dmenu --width 400 --prompt="..." --cache-file /dev/null
|
|
# $@ &
|
|
# c=0
|
|
# while ! xprop -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 -id $(xdotool search -class 'rofi') ; do
|
|
# sleep .1
|
|
# c=$((c+1))
|
|
# [[ c = 50 ]] && exit; # stop script window didn't appear after 5 seconds
|
|
# done
|
|
)
|
|
else
|
|
option=$(printf '%s\n' "${options[@]%}" | wofi -i --dmenu --width 400 --lines 8 --prompt="..." --cache-file /dev/null)
|
|
fi
|
|
|
|
# echo $option
|
|
|
|
case ${option} in
|
|
Password )
|
|
echo "${SECRET}"
|
|
ydotool type --key-delay 1ms $(rbw get "${SECRET}")
|
|
;;
|
|
User )
|
|
echo "$(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')"
|
|
ydotool type --key-delay 1ms "$(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')"
|
|
;;
|
|
"User and password" )
|
|
ydotool type --key-delay 1ms $(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')
|
|
ydotool key 15:1 15:0
|
|
ydotool type --key-delay 1ms $(rbw get "${SECRET}")
|
|
;;
|
|
"QR-Code" )
|
|
if [[ $SECRET =~ wifi$ ]]; then
|
|
# Produce a valid wifi QR-code
|
|
WIFISSID=$(pass get_user "${SECRET}")
|
|
WIFIPASS=$(pass get_pass "${SECRET}")
|
|
WIFIQR="WIFI:T:WPA;S:${WIFISSID};P:${WIFIPASS};;"
|
|
qrencode -s 8 -o - $WIFIQR | feh --title "pass: QR-WIFI" -
|
|
else
|
|
# Only password
|
|
pass show -q1 ${SECRET}
|
|
fi
|
|
;;
|
|
OTP )
|
|
ydotool type --key-delay 1ms $(rbw code "${SECRET}")
|
|
;;
|
|
esac
|
|
|
|
# wl-copy -o -s ${seat} ${PASSWD_PASS}
|