diff --git a/plugins/README.md b/plugins/README.md index 5163cb2b..e68ce259 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -35,6 +35,7 @@ The currently available plugins are listed below. | pastebin | sh | - | Paste contents of a text a file ix.io | | pdfview | sh | pdftotext/
mupdf-tools | View PDF file in `$PAGER` | | picker | sh | nnn | Pick files and list one per line (to pipe) | +| pskill | sh | fzy, sudo/doas | Fuzzy list by name and kill process or zombie | | pywal | sh | pywal | Set image as wallpaper, change terminal colorscheme | | readit | sh | pdftotext, mpv,
pico2wave | Read a PDF or text file aloud | | ringtone | sh | date, ffmpeg | Create a variable bitrate mp3 ringtone from file | diff --git a/plugins/pskill b/plugins/pskill new file mode 100755 index 00000000..dcec180c --- /dev/null +++ b/plugins/pskill @@ -0,0 +1,29 @@ +#!/usr/bin/env sh + +# Description: Fuzzy list and kill a (zombie) process by name +# +# Note: To kill a zombie process enter "zombie" +# +# Shell: POSIX compliant +# Author: Arun Prakash Jana + +is_cmd_exists () { + which "$1" > /dev/null 2>&1 + echo $? +} + +if [ "$(is_cmd_exists sudo)" -eq "0" ]; then + sucmd=sudo +elif [ "$(is_cmd_exists doas)" -eq "0" ]; then + sucmd=doas +else + sucmd=: # noop +fi + +echo -n "Enter process name ['defunct' for zombies]: " +read psname + +if ! [ -z "$psname" ]; then + cmd="$(ps -ax | grep -iw "$psname" | fzy | sed -e 's/^[ \t]*//' | cut -d' ' -f1)" + $sucmd kill -9 "$cmd" +fi