diff options
-rwxr-xr-x | pkgs/simple/fzmenu/bin/otpmenu | 31 | ||||
-rwxr-xr-x | pkgs/simple/fzmenu/bin/passmenu | 31 | ||||
-rw-r--r-- | pkgs/simple/fzmenu/default.nix | 2 |
3 files changed, 58 insertions, 6 deletions
diff --git a/pkgs/simple/fzmenu/bin/otpmenu b/pkgs/simple/fzmenu/bin/otpmenu index 714ab7c..59706c1 100755 --- a/pkgs/simple/fzmenu/bin/otpmenu +++ b/pkgs/simple/fzmenu/bin/otpmenu @@ -1,8 +1,22 @@ #! /bin/sh +# usage: otpmenu [--phase2-method=METHOD] +# where METHOD is either copy or type, type being the default. set -efu #PATH= +while test $# -gt 0; do + case $1 in + --phase2-method=copy|--phase2-method=type) + export FZMENU_PHASE2_METHOD=${1#*=} + shift 1 + ;; + *) + echo "$0: error: bad argument: $1" >&2 + exit 1 + esac +done + case ${FZMENU_PHASE-0} in 0) export FZMENU_PHASE=1 @@ -25,7 +39,7 @@ case ${FZMENU_PHASE-0} in exec fzf \ --history=/dev/null \ --no-sort \ - --prompt='OTP: ' \ + --prompt="${FZMENU_PHASE2_METHOD-type} otp: " \ ) then export FZMENU_PHASE=2 @@ -38,8 +52,19 @@ case ${FZMENU_PHASE-0} in # lucidatypewriter, causing a warning to be printed to stderr. font='-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1' pass=$(pass otp code "$FZMENU_RESULT/otp") - printf %s "$pass" | - xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + case ${FZMENU_PHASE2_METHOD-type} in + copy) + printf %s "$pass" | + xsel -p -i -t 60000 + ;; + type) + printf %s "$pass" | + xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + ;; + *) + echo "$0: error: bad phase2 method: $FZMENU_PHASE2_METHOD" >&2 + exit -1 + esac ;; *) echo "$0: error: bad phase: $FZMENU_PHASE" >&2 diff --git a/pkgs/simple/fzmenu/bin/passmenu b/pkgs/simple/fzmenu/bin/passmenu index a798925..0b07174 100755 --- a/pkgs/simple/fzmenu/bin/passmenu +++ b/pkgs/simple/fzmenu/bin/passmenu @@ -1,8 +1,22 @@ #! /bin/sh +# usage: passmenu [--phase2-method=METHOD] +# where METHOD is either copy or type, type being the default. set -efu #PATH= +while test $# -gt 0; do + case $1 in + --phase2-method=copy|--phase2-method=type) + export FZMENU_PHASE2_METHOD=${1#*=} + shift 1 + ;; + *) + echo "$0: error: bad argument: $1" >&2 + exit 1 + esac +done + case ${FZMENU_PHASE-0} in 0) export FZMENU_PHASE=1 @@ -26,7 +40,7 @@ case ${FZMENU_PHASE-0} in exec fzf \ --history=/dev/null \ --no-sort \ - --prompt='pass: ' \ + --prompt="${FZMENU_PHASE2_METHOD-type} pass: " \ ) then export FZMENU_PHASE=2 @@ -39,8 +53,19 @@ case ${FZMENU_PHASE-0} in # lucidatypewriter, causing a warning to be printed to stderr. font='-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1' pass=$(pass show "$FZMENU_RESULT") - printf %s "$pass" | - xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + case ${FZMENU_PHASE2_METHOD-type} in + copy) + printf %s "$pass" | + xsel -p -i -t 60000 + ;; + type) + printf %s "$pass" | + xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + ;; + *) + echo "$0: error: bad phase2 method: $FZMENU_PHASE2_METHOD" >&2 + exit -1 + esac ;; *) echo "$0: error: bad phase: $FZMENU_PHASE" >&2 diff --git a/pkgs/simple/fzmenu/default.nix b/pkgs/simple/fzmenu/default.nix index c4dccbf..e709d74 100644 --- a/pkgs/simple/fzmenu/default.nix +++ b/pkgs/simple/fzmenu/default.nix @@ -28,6 +28,7 @@ pkgs.runCommand "fzmenu" { ext.pass-otp ])) pkgs.utillinux + pkgs.xsel pkgs.xvkbd terminal ]} @@ -44,6 +45,7 @@ pkgs.runCommand "fzmenu" { ext.pass-otp ])) pkgs.utillinux + pkgs.xsel pkgs.xvkbd terminal ]} |