summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2021-09-25 14:58:22 +0200
committerRobert Günzler <r@gnzler.io>2021-09-25 14:58:22 +0200
commit3768a6c1488c148cc07481687a47cb7cce02ad35 (patch)
tree633a7219902e561b3e05e46974d357171a99fa03
parent18388e3cd72480510a25d4fb0ab9bb45d6c28baf (diff)
bin/mnts: lsblk now returns list of mountpoints
-rwxr-xr-xbin/mnts10
-rwxr-xr-xbin/passmenu57
2 files changed, 62 insertions, 5 deletions
diff --git a/bin/mnts b/bin/mnts
index 56eb185..cbf534c 100755
--- a/bin/mnts
+++ b/bin/mnts
@@ -48,8 +48,8 @@ handle() {
 	done
 }
 
-lsblk -fJ \
-	| jq -r '.. | select(.uuid?!="" and .name?) | select((.name | test("hibiki|nvme") | not) and .fstype?) | [ .name, .label, .mountpoint // "" ] | @tsv' \
-	| awk -F'\t' '{printf "/dev/%-10s\t%-15s\t%s\n", $1, $2, $3;}' \
-	| menu --list=8 \
-	| handle
+lsblk -fJ |
+	jq -r '.. | select(.uuid?!="" and .name?) | select((.name | test("hibiki|nvme") | not) and .fstype?) | [ .name, .label, .mountpoints[0] // "" ] | @tsv' |
+	awk -F'\t' '{printf "/dev/%-10s\t%-15s\t%s\n", $1, $2, $3;}' |
+	menu --list=8 |
+	handle
diff --git a/bin/passmenu b/bin/passmenu
new file mode 100755
index 0000000..58001b5
--- /dev/null
+++ b/bin/passmenu
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+set -e
+[ -n "$DEBUG" ] && set -x
+
+# check requirements
+for tool in bemenu fd fzf; do
+	if ! command -v "$tool" >/dev/null; then
+		printf "%s: %s not installed but required\n" "$(basename "$0")" "$tool" >&2
+		exit 1
+	fi
+done
+
+typeit=
+if [ "$1" = "--type" ]; then
+	typeit=1
+	shift
+fi
+
+if [ "$1" = "-t" ]; then
+	_dmenu() {
+		fzf
+	}
+else
+	_dmenu() {
+		MENU_PROMPT="󰌆 pass" menu
+	}
+fi
+
+prefix=${PASSWORD_STORE_DIR-~/.password-store}
+prefix=$(readlink -f -- "${prefix}")
+password_files=$(
+	fd -e gpg . "${prefix}" | sed -e "s#${prefix}/##" -e 's#\.gpg$##'
+)
+
+password=$(printf '%s\n' "${password_files[@]}" | _dmenu "$@")
+[ -n "$password" ] || exit 1
+
+err=$(pass show "$password" 2>&1 |
+	awk 'NR==1 {system("wl-copy -o -n " $0)} /^Username:/ {system("wl-copy -n -p " $2)} {miss+=1} END{if(miss>0) print("no password found")}')
+
+# shellcheck disable=SC2181
+if [ "$?" -ne 0 ] || [ -n "$err" ]; then
+	notify-send \
+		-a passmenu \
+		-i /usr/share/icons/mdi/scalable/form-textbox-password.svg \
+		-c error \
+		'passmenu: failed :(' \
+		"<i>${err}</i>"
+	exit 1
+fi
+
+notify-send \
+	-a passmenu \
+	-i /usr/share/icons/mdi/scalable/form-textbox-password.svg \
+	'passmenu: password copied' \
+	'<i>will be removed after next paste</i>'