100 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			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-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 0ms $(rbw get "${SECRET}")
 | 
						|
	;;
 | 
						|
    User )
 | 
						|
	echo "$(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')"
 | 
						|
	ydotool type --key-delay 0ms "$(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')"
 | 
						|
	;;
 | 
						|
    "User and password" )
 | 
						|
	ydotool type --key-delay 0ms $(rbw get --full "${SECRET}" | rg Username: | awk '{print $2}')
 | 
						|
	ydotool key 15:1 15:0
 | 
						|
	ydotool type --key-delay 0ms $(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 0ms $(rbw code "${SECRET}")
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
# wl-copy -o -s ${seat} ${PASSWD_PASS}
 |