initial commit
This commit is contained in:
parent
ac48c9ad62
commit
060f4d68a2
1 changed files with 100 additions and 0 deletions
100
plumb
Executable file
100
plumb
Executable file
|
@ -0,0 +1,100 @@
|
|||
#!/bin/sh
|
||||
|
||||
www() {
|
||||
exec firefox "$1"
|
||||
}
|
||||
|
||||
img() {
|
||||
exec feh "$1"
|
||||
}
|
||||
|
||||
music() {
|
||||
exec mpv "$1"
|
||||
}
|
||||
|
||||
video() {
|
||||
exec mpv "$1"
|
||||
}
|
||||
|
||||
pdf() {
|
||||
exec firefox "$1"
|
||||
}
|
||||
|
||||
term() {
|
||||
exec st -e /bin/sh -c "$1 ; exec \"${SHELL}\""
|
||||
}
|
||||
|
||||
# https://unix.stackexchange.com/a/4991
|
||||
exists_in_path() {
|
||||
command -v "$1" > /dev/null
|
||||
}
|
||||
|
||||
resolve_plumb_path() {
|
||||
case "$1" in
|
||||
/*)
|
||||
echo "$1"
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
target_shell="bash"
|
||||
|
||||
parent_process_children=$(xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_PID | cut -d' ' -f3 | xargs pstree -lpA)
|
||||
temp="${parent_process_children##*${target_shell}(}"
|
||||
shell_pid="${temp%%)--*}"
|
||||
shell_pid="${shell_pid%?}"
|
||||
shell_cwd="$(readlink /proc/${shell_pid}/cwd)"
|
||||
final_path="${shell_cwd}/$1"
|
||||
if [ -e "${final_path}" ]; then
|
||||
echo "${final_path}"
|
||||
return 0
|
||||
else
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
do_plumb() {
|
||||
case "$1" in
|
||||
https://*) www "$1" ;;
|
||||
http://*) www "$1" ;;
|
||||
*.tif|*.TIF|*.jpg|*.JPG|*.jpeg|*.JPE?|*.gif|*.GIF|*.tiff?|*.TIFF?|*.ppm|*.PPM|*.bit|*.BIT|*.png|*.PNG|*.pgm|*.PGM|*.bmp|*.BMP|*.yuv|*.YUV|*.tga|*.TGA|*.webp|*.WEBP)
|
||||
img "$(resolve_plumb_path ${1})"
|
||||
;;
|
||||
*.mp3|*.MP3|*.ogg|*.OGG|*.flac|*.FLAC|*.wav|*.WAV|*.au|*.AU|*.mid|*.MID|*.mus|*.MUS|*.m3u|*.M3U|*.pls|*.PLS|*.plist|*.PLIST|*.opus|*.OPUS)
|
||||
music "$(resolve_plumb_path ${1})"
|
||||
;;
|
||||
*.mp4|*.MP4|*.avi|*.AVI|*.webm|*.WEBM)
|
||||
video "$(resolve_plumb_path ${1})"
|
||||
;;
|
||||
*.pdf|*.PDF)
|
||||
pdf "$(resolve_plumb_path ${1})"
|
||||
;;
|
||||
*)
|
||||
target="${1}"
|
||||
first=${target%% *}
|
||||
case "${first}" in
|
||||
\) | \( | \} | \] | \{ | \[)
|
||||
term "${target}"
|
||||
;;
|
||||
*)
|
||||
if exists_in_path "${first}"; then
|
||||
term "${target}"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
target="$1"
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
# no arguments supplied, use the x clipboard
|
||||
target="$(xclip -o -)"
|
||||
fi
|
||||
|
||||
do_plumb "${target}"
|
Loading…
Reference in a new issue