dotfiles/scripts/kderofi-rbw
2022-04-26 12:40:35 -05:00

100 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-rbw-wayland"
echo "this is wayland"
fi
else
style="desktop-rbw"
#echo "this is not hidpi"
fi
# Get all password files and create an array
root=~/.password-store
CACHE=~/.local/tmp/pass_rofi
seat=seat0
rbw sync
rbw list
list_passwords() {
rbw list
}
passwords=$(rbw list)
prompt='BW'
if [ $XDG_SESSION_TYPE = "x11" ]; then
SECRET=$(list_passwords | rofi -i -p "${prompt}" -dmenu -theme ~/.config/rofi/launchers-git/$style.rasi
# $@ &
# 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 | rofi -i -p "${prompt}" -dmenu -theme ~/.config/rofi/launchers-git/$style.rasi)
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[@]%}" | rofi -i -dmenu -p "" -theme ~/.config/rofi/launchers-git/$style.rasi
# $@ &
# 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[@]%}" | rofi -i -dmenu -p "" -theme ~/.config/rofi/launchers-git/$style.rasi)
fi
# echo $option
case ${option} in
Password )
echo "${SECRET}"
ydotool type --key-delay 6ms $(rbw get "${SECRET}")
;;
User )
echo "$(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')"
ydotool type --key-delay 6ms "$(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')"
;;
"User and password" )
ydotool type --key-delay 6ms $(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')
ydotool key 15:1 15:0
ydotool type --key-delay 6ms $(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 6ms $(rbw code "${SECRET}")
;;
esac
# wl-copy -o -s ${seat} ${PASSWD_PASS}