diff --git a/i3/config b/i3/config index db5743a..b1b3523 100644 --- a/i3/config +++ b/i3/config @@ -152,6 +152,7 @@ bindsym $mod+numbersign exec systemd-run-i3 -n i3-sensible-terminal --ho bindsym $mod+r exec bash -c 'pwgen -snc 32 1 | tee >(xargs notify-send Generated\ password\:) | xclip -i -r' bindsym $mod+g exec systemd-run-i3 -n notify-send -c transfer "$(gist -PRpc)" bindsym --release $mod+i exec systemd-run-i3 -s background -n sh -c 'sleep 0.5 && xdotool getactivewindow type --delay 10 -- "$(xclip -o -selection clipboard)"' +bindsym $mod+z exec otp | rofi -dmenu -p otp | xargs otp # Media player controls bindsym XF86AudioPlay exec --no-startup-id playerctl -a play-pause diff --git a/scripts/otp b/scripts/otp new file mode 100755 index 0000000..857918a --- /dev/null +++ b/scripts/otp @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +while getopts "on:" o; do + case "${o}" in + o) + stdout=1;; + n) + caller="${OPTARG}" + ;; + *) + exec ykman oath accounts list + ;; + esac +done +shift $((OPTIND-1)) + +if [ $# -lt 1 ]; then + exec ykman oath accounts list +fi + +if [ -n "$caller" ]; then + notif="$(notify-send -p "Touch your Yubikey" "$caller is requesting otp for $1")" +fi + +ykman oath accounts code -s "$1" 2>&1 | + while read -r x; do + if grep -Pqw '[0-9]{6}' <<< "$x"; then + if [ -z "$stdout" ]; then + echo "$x" | tee >(xclip -i) + xdotool type "$x" + else + echo "$x" + fi + fi + if [ -z "$stdout" ]; then + notify-send "$x"; + fi + done + +if [ -n "$notif" ]; then + notify-send -r "$notif" -t 1000 "Touch your Yubikey" "otp generated for $caller" +fi