#!/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] "; 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