commit 3198cc60da279caf32e282d79338a41d1a7719cc
parent 85391925d7fe11bd43a07b311d68bd32ad860a60
Author: Mark Feller <mark@mfeller.io>
Date: Thu, 16 Dec 2021 18:19:28 -0700
add more pash and dmenu scripts
Diffstat:
5 files changed, 288 insertions(+), 0 deletions(-)
diff --git a/dots/.local/bin/dmenupash b/dots/.local/bin/dmenupash
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# Select a password to copy
+
+pash copy $(pash list | sort | dmenu)
diff --git a/dots/.local/bin/pash_check b/dots/.local/bin/pash_check
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+
+sread() {
+ printf '%s: ' "$2"
+
+ # Disable terminal printing while the user inputs their
+ # password. POSIX 'read' has no '-s' flag which would
+ # effectively do the same thing.
+ stty -echo
+ read -r "$1"
+ stty echo
+
+ printf '\n'
+}
+
+[ -t 0 ] && sread pass "Enter password" || read -r pass
+
+sha_pass=$(echo -n $pass | sha1sum | cut -d' ' -f1 | tr '[a-z]' '[A-Z]')
+sha_head=${sha_pass:0:5}
+sha_tail=${sha_pass:5}
+
+results=$(curl -s https://api.pwnedpasswords.com/range/$sha_head | grep $sha_tail | cut -d: -f2)
+[ "$results" = "" ] && echo "Password not found" || echo "Password found: $results"
diff --git a/dots/.local/bin/pash_check_all b/dots/.local/bin/pash_check_all
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+for pass in $(pash list); do
+ echo "Checking $pass"
+ pash show $pass | pash_check
+done
diff --git a/dots/.local/bin/popup_mail b/dots/.local/bin/popup_mail
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+emacsclient -c --frame-parameters="((width . 120) (height . 60))" -e "(notmuch)"
diff --git a/dots/.local/bin/startx b/dots/.local/bin/startx
@@ -0,0 +1,251 @@
+#!/usr/bin/sh
+
+#
+# This is just a sample implementation of a slightly less primitive
+# interface than xinit. It looks for user .xinitrc and .xserverrc
+# files, then system xinitrc and xserverrc files, else lets xinit choose
+# its default. The system xinitrc should probably do things like check
+# for .Xresources files and merge them in, start up a window manager,
+# and pop a clock and several xterms.
+#
+# Site administrators are STRONGLY urged to write nicer versions.
+#
+
+unset DBUS_SESSION_BUS_ADDRESS
+unset SESSION_MANAGER
+userclientrc=$HOME/.config/x11/xinitrc
+sysclientrc=/etc/X11/xinit/xinitrc
+
+userserverrc=$HOME/.xserverrc
+sysserverrc=/etc/X11/xinit/xserverrc
+defaultclient=xterm
+defaultserver=/usr/bin/X
+defaultclientargs=""
+defaultserverargs=""
+defaultdisplay=""
+clientargs=""
+serverargs=""
+vtarg=""
+enable_xauth=1
+
+
+# Automatically determine an unused $DISPLAY
+d=0
+while true ; do
+ [ -e "/tmp/.X$d-lock" -o -S "/tmp/.X11-unix/X$d" ] ||
+
+ grep -q "/tmp/.X11-unix/X$d" "/proc/net/unix" ||
+
+ break
+ d=$(($d + 1))
+done
+defaultdisplay=":$d"
+unset d
+
+whoseargs="client"
+while [ x"$1" != x ]; do
+ case "$1" in
+ # '' required to prevent cpp from treating "/*" as a C comment.
+ /''*|\./''*)
+ if [ "$whoseargs" = "client" ]; then
+ if [ x"$client" = x ] && [ x"$clientargs" = x ]; then
+ client="$1"
+ else
+ clientargs="$clientargs $1"
+ fi
+ else
+ if [ x"$server" = x ] && [ x"$serverargs" = x ]; then
+ server="$1"
+ else
+ serverargs="$serverargs $1"
+ fi
+ fi
+ ;;
+ --)
+ whoseargs="server"
+ ;;
+ *)
+ if [ "$whoseargs" = "client" ]; then
+ clientargs="$clientargs $1"
+ else
+ # display must be the FIRST server argument
+ if [ x"$serverargs" = x ] && \
+ expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
+ display="$1"
+ else
+ serverargs="$serverargs $1"
+ fi
+ fi
+ ;;
+ esac
+ shift
+done
+
+# process client arguments
+if [ x"$client" = x ]; then
+ client=$defaultclient
+
+ # For compatibility reasons, only use startxrc if there were no client command line arguments
+ if [ x"$clientargs" = x ]; then
+ if [ -f "$userclientrc" ]; then
+ client=$userclientrc
+ elif [ -f "$sysclientrc" ]; then
+ client=$sysclientrc
+ fi
+ fi
+fi
+
+# if no client arguments, use defaults
+if [ x"$clientargs" = x ]; then
+ clientargs=$defaultclientargs
+fi
+
+# process server arguments
+if [ x"$server" = x ]; then
+ server=$defaultserver
+
+
+ # When starting the defaultserver start X on the current tty to avoid
+ # the startx session being seen as inactive:
+ # "https://bugzilla.redhat.com/show_bug.cgi?id=806491"
+ tty=$(tty)
+ if expr "$tty" : '/dev/tty[0-9][0-9]*$' > /dev/null; then
+ tty_num=$(echo "$tty" | grep -oE '[0-9]+$')
+ vtarg="vt$tty_num -keeptty"
+ fi
+
+
+ # For compatibility reasons, only use xserverrc if there were no server command line arguments
+ if [ x"$serverargs" = x -a x"$display" = x ]; then
+ if [ -f "$userserverrc" ]; then
+ server=$userserverrc
+ elif [ -f "$sysserverrc" ]; then
+ server=$sysserverrc
+ fi
+ fi
+fi
+
+# if no server arguments, use defaults
+if [ x"$serverargs" = x ]; then
+ serverargs=$defaultserverargs
+fi
+
+# if no vt is specified add vtarg (which may be empty)
+have_vtarg="no"
+for i in $serverargs; do
+ if expr "$i" : 'vt[0-9][0-9]*$' > /dev/null; then
+ have_vtarg="yes"
+ fi
+done
+if [ "$have_vtarg" = "no" -a x"$vtarg" != x ]; then
+ serverargs="$serverargs $vtarg"
+ # Fedora specific mod to make X run as non root
+ export XORG_RUN_AS_USER_OK=1
+fi
+
+# if no display, use default
+if [ x"$display" = x ]; then
+ display=$defaultdisplay
+fi
+
+if [ x"$enable_xauth" = x1 ] ; then
+ if [ x"$XAUTHORITY" = x ]; then
+ XAUTHORITY=$HOME/.Xauthority
+ export XAUTHORITY
+ fi
+
+ removelist=
+
+ # set up default Xauth info for this machine
+ case `uname` in
+ Linux*)
+ if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then
+ hostname=`hostname -f`
+ else
+ hostname=`hostname`
+ fi
+ ;;
+ *)
+ hostname=`hostname`
+ ;;
+ esac
+
+ authdisplay=${display:-:0}
+
+ mcookie=`/usr/bin/mcookie`
+
+
+
+
+
+
+
+ if test x"$mcookie" = x; then
+ echo "Couldn't create cookie"
+ exit 1
+ fi
+ dummy=0
+
+ # create a file with auth information for the server. ':0' is a dummy.
+ xserverauthfile=$HOME/.serverauth.$$
+ trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP KILL BUS TERM
+ xauth -q -f "$xserverauthfile" << EOF
+add :$dummy . $mcookie
+EOF
+
+
+
+
+ serverargs=${serverargs}" -auth "${xserverauthfile}
+
+
+ # now add the same credentials to the client authority file
+ # if '$displayname' already exists do not overwrite it as another
+ # server may need it. Add them to the '$xserverauthfile' instead.
+ for displayname in $authdisplay $hostname$authdisplay; do
+ authcookie=`xauth list "$displayname" \
+ | sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p"` 2>/dev/null;
+ if [ "z${authcookie}" = "z" ] ; then
+ xauth -q << EOF
+add $displayname . $mcookie
+EOF
+ removelist="$displayname $removelist"
+ else
+ dummy=$(($dummy+1));
+ xauth -q -f "$xserverauthfile" << EOF
+add :$dummy . $authcookie
+EOF
+ fi
+ done
+fi
+
+
+
+
+xinit "$client" $clientargs -- "$server" $display $serverargs
+
+retval=$?
+
+if [ x"$enable_xauth" = x1 ] ; then
+ if [ x"$removelist" != x ]; then
+ xauth remove $removelist
+ fi
+ if [ x"$xserverauthfile" != x ]; then
+ rm -f "$xserverauthfile"
+ fi
+fi
+
+
+
+
+
+if command -v deallocvt > /dev/null 2>&1; then
+ deallocvt
+fi
+
+
+
+
+
+
+exit $retval