add luke smith's copyout script

This commit is contained in:
speedie 2022-12-11 12:53:26 +01:00
parent b0724cd949
commit 8465f9753e
3 changed files with 18 additions and 6 deletions

View file

@ -23,13 +23,14 @@ static Shortcut shortcuts[] = {
{ CONTROL, XK_p, clippaste, {.i = 0} },
{ CONTROL, XK_Num_Lock, numlock, {.i = 0} },
{ CONTROL, XK_Escape, keyboardselect, {.i = 0} },
{ CONTROL|SHIFT, XK_C, kexec, {.scmd = "clear" } },
{ CONTROL|SHIFT, XK_H, kexec, {.scmd = "st_help" } },
{ CONTROL|SHIFT, XK_E, kexec, {.scmd = "$EDITOR" } },
{ CONTROL|SHIFT, XK_D, kexec, {.scmd = "$PERM !!" } },
{ CONTROL|SHIFT, XK_F, kexec, {.scmd = "$EDITOR $(find ~/.config -type f | fzf)" } },
{ CONTROL|SHIFT, XK_S, kexec, {.scmd = "$EDITOR $(find ~/Scripts -type f | fzf)" } },
{ CONTROL|SHIFT, XK_H, kexec, {.scmd = ";st_help" } },
{ CONTROL|SHIFT, XK_E, kexec, {.scmd = ";$EDITOR" } },
{ CONTROL|SHIFT, XK_D, kexec, {.scmd = ";$PERM !!" } },
{ CONTROL|SHIFT, XK_F, kexec, {.scmd = ";$EDITOR $(find $HOME/.config -type f | fzf)" } },
{ CONTROL|SHIFT, XK_S, kexec, {.scmd = ";$EDITOR $(find $HOME/Scripts -type f | fzf)" } },
{ CONTROL|SHIFT, XK_W, kexec, {.scmd = ";$PERM make clean install" } },
{ CONTROL|SHIFT, XK_K, kscrollup, {.i = -1} },
{ CONTROL|SHIFT, XK_J, kscrolldown, {.i = -1} },
{ CONTROL|SHIFT, XK_U, externalpipeout,{.v = listurl } },
{ CONTROL|SHIFT, XK_C, externalpipeout,{.v = copyout } },
};

View file

@ -183,6 +183,7 @@ static unsigned int mousebg = 0; /* Background cursor color */
/* Externalpipe commands */
static char *listurl[] = { "/bin/sh", "-c", "st_urllist", NULL };
static char *copyout[] = { "/bin/sh", "-c", "st_copyout", NULL };
/* URL click command
*

10
scripts/st_copyout Executable file
View file

@ -0,0 +1,10 @@
#!/bin/sh
# original script by Jaywalker and Luke Smith (https://github.com/Lukesmithxyz/st)
tmpfile=$(mktemp /tmp/st-cmd-output.XXXXXX)
trap 'rm -f "$tmpfile"' 0 1 15
sed -n "w $tmpfile"
sed -i 's/\x0//g' "$tmpfile"
ps1="$(grep "\S" "$tmpfile" | tail -n 1 | sed 's/^\s*//' | cut -d' ' -f1)"
chosen="$(grep -F "$ps1" "$tmpfile" | sed '$ d' | tac | dmenu -p "Copy which command's output?" -i -l 10 -w $WINDOWID -g 1 | sed 's/[^^]/[&]/g; s/\^/\\^/g')"
eps1="$(echo "$ps1" | sed 's/[^^]/[&]/g; s/\^/\\^/g')"
awk "/^$chosen$/{p=1;print;next} p&&/$eps1/{p=0};p" "$tmpfile" | xclip -selection clipboard