rice

personal dot files and scripts for linux and macOS
Log | Files | Refs | README | LICENSE

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:
Adots/.local/bin/dmenupash | 5+++++
Adots/.local/bin/pash_check | 23+++++++++++++++++++++++
Adots/.local/bin/pash_check_all | 6++++++
Adots/.local/bin/popup_mail | 3+++
Adots/.local/bin/startx | 251+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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