#!/bin/sh set -e if [ -t 1 ]; then pick() { sk } inject() { echo "$@" } else window="$(xdotool getwindowfocus)" pick() { dmenu -i -l 10 } inject() { xdotool type --clearmodifiers --window "$window" "$*" xdotool windowfocus "$window" } fi choice="$(pick <<HERE email address password clipboard selection run otp student HERE )" case "$choice" in 'email address') choice="$(khard email -p --remove-first-line | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\2 <\1>/' | pick)" inject "$choice" ;; 'password') choice="$(cd ~/.password-store; find * -name '*.gpg' | sed 's/\.gpg$//' | sort -d | pick)" inject "$(pass show "$choice" | head -1)" ;; 'clipboard') inject "$(xclip -o -sel c)" ;; 'selection') inject "$(xclip -o)" ;; 'run') choice="$(dmenu_path | pick)" exec "$choice" ;; 'otp') choice="$(cd ~/.password-store/otp; find * -name '*.gpg' | sed 's/\.gpg$//' | sort -d | pick)" inject "$(pass otp code otp/"$choice" | head -1)" ;; 'student') choice="$(pick < /data/courses/students.csv)" inject "$choice" ;; esac