60 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| PASSWORDS="$HOME/.password-store"
 | |
| 
 | |
| 
 | |
| function copy_password(){
 | |
| 	local password="$1"
 | |
| 	local part="${2:-0}"
 | |
| 	local sleep_argv0="jh password store sleep on display $DISPLAY"
 | |
| 	local before="$(xclip -o -selection clipboard 2>/dev/null | base64)"
 | |
| 	pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
 | |
| 	local pw=""
 | |
| 	case "$part" in
 | |
| 		"10"|"otp")
 | |
| 			local pw=$(pass otp "$password" | head -n 1)
 | |
| 			;;
 | |
| 		*)
 | |
| 			local pw=$(pass "$password" | head -n 1)
 | |
| 			;;
 | |
| 	esac
 | |
| 	if [ -z "$pw" ]; then
 | |
| 		exit 1
 | |
| 	fi
 | |
| 	echo "$pw" | xclip -selection "primary"
 | |
| 	echo "$pw" | xclip -selection "clipboard"
 | |
| 	notify-send -t 3000 "Password put on clipboard" "Will be removed in 3 seconds"
 | |
| 	(
 | |
| 		( exec -a "$sleep_argv0" bash <<<"trap 'kill %1' TERM; sleep '3' & wait" )
 | |
| 
 | |
| 		echo "$before" | base64 -d | xclip -selection "primary"
 | |
| 		echo "$before" | base64 -d | xclip -selection "clipboard"
 | |
| 
 | |
| 		notify-send "Password Clearerd"
 | |
| 
 | |
| 	) >/dev/null 2>&1 & disown
 | |
| }
 | |
| 
 | |
| if [ -d "$PASSWORDS" ]; then
 | |
| 	cd "$PASSWORDS"
 | |
| 	selection="$1"
 | |
| 	ret="${2:-0}"
 | |
| 	if [ -z "$selection" ]; then
 | |
| 		selection=$((find . -type f -name '*.gpg' | sed 's/.gpg$//' | sed 's/^.\///') | rofi -dmenu -kb-custom-1 "Ctrl-o" -i -l 20)
 | |
| 		ret="$?"
 | |
| 	fi
 | |
| 	if [ -n "$selection" ]; then
 | |
| 		if [[ "$selection" == "NEW" ]]; then
 | |
| 			dir="$(find . -type d -not -path \*.git\* |rofi -dmenu -p Directory | sed 's/^.\/?//')"
 | |
| 			if [ ! -d "$dir" ]; then
 | |
| 				mkdir -p "$dir"
 | |
| 			fi
 | |
| 			name="$(rofi -dmenu -p Name -lines 0)"
 | |
| 			# Todo - create new passwords
 | |
| 		else
 | |
| 			copy_password "$selection" "$ret"
 | |
| 		fi
 | |
| 	fi
 | |
| else
 | |
| 	notify-send "\$PASSWORDS doesn't exist"
 | |
| fi
 |