summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2025-04-19 18:19:08 +0200
committertv <tv@krebsco.de>2025-04-19 18:19:08 +0200
commit5d29e232ea70f58863b4251c311a490cb5cc04b1 (patch)
tree37655dd8c4856a2c931079f74ec456a43849ee1e
parent448ad7b25489e582a52535a2cba4f0c7a1483b77 (diff)
fzmenu: add copy method
-rwxr-xr-xpkgs/simple/fzmenu/bin/otpmenu31
-rwxr-xr-xpkgs/simple/fzmenu/bin/passmenu31
-rw-r--r--pkgs/simple/fzmenu/default.nix2
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
]}