summaryrefslogtreecommitdiffstats
path: root/.local/bin/passmenu
diff options
context:
space:
mode:
authorAmin Bandali <bandali@gnu.org>2022-11-19 19:26:33 -0500
committerAmin Bandali <bandali@gnu.org>2022-11-19 19:26:33 -0500
commit060e89402c8014462a16ee1c92939a906aa1d558 (patch)
tree2cd9894d20f8d38ae1c659536affd12acfa06736 /.local/bin/passmenu
parentb08fa2c1c27e54af7834900ee0a5ac392679b8f3 (diff)
downloadconfigs-060e89402c8014462a16ee1c92939a906aa1d558.tar.gz
configs-060e89402c8014462a16ee1c92939a906aa1d558.tar.xz
configs-060e89402c8014462a16ee1c92939a906aa1d558.zip
* .local/bin/passmenu: Import from password-store.
This is a copy of contrib/dmenu/passmenu from password-store's git repository as of dddca73694d1ecc2381cde6c02a9d1466cf0ab41. Addition of copyright and license header by me (upstream is under GNU GPLv2+).
Diffstat (limited to '.local/bin/passmenu')
-rwxr-xr-x.local/bin/passmenu50
1 files changed, 50 insertions, 0 deletions
diff --git a/.local/bin/passmenu b/.local/bin/passmenu
new file mode 100755
index 0000000..d3e7c75
--- /dev/null
+++ b/.local/bin/passmenu
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2014-2021 password-store contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+shopt -s nullglob globstar
+
+typeit=0
+if [[ $1 == "--type" ]]; then
+ typeit=1
+ shift
+fi
+
+if [[ -n $WAYLAND_DISPLAY ]]; then
+ dmenu=dmenu-wl
+ xdotool="ydotool type --file -"
+elif [[ -n $DISPLAY ]]; then
+ dmenu=dmenu
+ xdotool="xdotool type --clearmodifiers --file -"
+else
+ echo "Error: No Wayland or X11 display detected" >&2
+ exit 1
+fi
+
+prefix=${PASSWORD_STORE_DIR-~/.password-store}
+password_files=( "$prefix"/**/*.gpg )
+password_files=( "${password_files[@]#"$prefix"/}" )
+password_files=( "${password_files[@]%.gpg}" )
+
+password=$(printf '%s\n' "${password_files[@]}" | "$dmenu" "$@")
+
+[[ -n $password ]] || exit
+
+if [[ $typeit -eq 0 ]]; then
+ pass show -c "$password" 2>/dev/null
+else
+ pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | $xdotool
+fi