aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/xgo37
1 files changed, 28 insertions, 9 deletions
diff --git a/bin/xgo b/bin/xgo
index 828eba5a..a6489855 100755
--- a/bin/xgo
+++ b/bin/xgo
@@ -11,44 +11,63 @@ for url ; do (
# If it's a YouTube video without a given start time, load it in mpv(1)
case $url in
- *[/.]youtube.com/watch*[?\&]t=) ;;
- *[/.]youtube.com/watch*)
- mpv -- "$url" && exit
- ;;
- https://github.com/*/blob/*)
+
+ # If it's a GitHub link, swap "blob" for "raw" to get the actual file
+ *://github.com/*/blob/*)
url=$(printf '%s\n' "$url" | sed 's_/blob/_/raw/_')
;;
+
+ # If it's a not-direct imgur link and not to an album, swap URL
+ # elements to get to the actual file (it may not actually be a JPEG;
+ # the MIME type will tell us)
+ *://imgur.com/a/*) ;;
*://imgur.com/*)
url=$(printf '%s\n' "$url" | sed 's_imgur\.com_i.imgur.com_;s/$/.jpg/')
;;
+
+ # If it's a YouTube video without a given start time, load it in mpv(1)
+ *[/.]youtube.com/watch*[?\&]t=) ;;
+ *[/.]youtube.com/watch*)
+ mpv -- "$url" && exit
+ ;;
esac
# Get the MIME type data
mt=$(urlmt "$url")
- # If the MIME type is an image, load it in feh(1)
+ # Switch on media type
case $mt in
+
+ # Open PDFs in xpdf(1); download them first as xpdf(1) doesn't seem to
+ # have a way to handle stdin files
application/pdf)
(
cd -- "$HOME"/Downloads || exit
curl -O -- "$url" || exit
- xpdf -- "${url##*/}" || exit
+ xpdf -- "${url##*/}"
) && exit
;;
+
+ # Open audio and video in mpv(1); force a window even for audio so I
+ # can control it
audio/*|video/*)
mpv --force-window -- "$url" && exit
;;
+
+ # If the MIME type is an image that is not a GIF, load it in feh(1)
image/gif) ;;
image/*)
curl -- "$url" | feh - && exit
;;
+
+ # Open plain text in a terminal view(1)
text/plain)
# shellcheck disable=SC2016
- urxvt -e sh -c 'curl -- "$1" | view -' \
- _ "$url" && exit
+ urxvt -e sh -c 'curl -- "$1" | view -' _ "$url" && exit
;;
esac
# Otherwise, just pass it to br(1)
br "$url"
+
) & done