aboutsummaryrefslogtreecommitdiff
path: root/dpw-menu
blob: db5b1205e909b483f4a00c8382a79d4c74c9a335 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/sh
# Dmenu script for dpw
#
# Copyright 2024 Mitchell Riedstra
# 
# Permission to use, copy, modify, and/or distribute this software for any purpose
# with or without fee is hereby granted, provided that the above copyright notice
# and this permission notice appear in all copies.
# 
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
# THIS SOFTWARE.
_type=0
otp=
while [ $# -gt 0 ] ; do case "$1" in
	--type|-t) _type=1 ; shift ;;
	--otp|-o) otp="otp" ; shift ;;
	-h) echo "$0 [-t|--type] [-o|-otp] <key>"; exit 0 ;;
	*) break ;;
esac ; done

# Pretty much anything that implements a demu like interface should work here,
# the only option called elsewhere is `-p`
_menu="dmenu"
if [ "$XDG_SESSION_TYPE" = "wayland" ] ; then
	_menu="bemenu"
fi

case $(uname) in
	Darwin) _menu="choose -m -s 16 -f Monaco -w 85" ;;
	*) ;;
esac

pass="$(dpw list | $_menu "$@")"

if [ $_type -eq 1 ] ; then
	dpw $otp type "$pass"
else
	dpw $otp copy "$pass"
fi