about summary refs log tree commit diff stats
path: root/bin/lh
blob: e4bdf0c8f600e827a93b3c974887cf55151434dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
# lh: the Link Handler
# takes one path or URL as its argument, launches the appropriate program for this.
### differs from Luke Smith's linkhandler in cleaner code, inclusion of epub/pdf handling, proper interpretation of twitch video URLs, and livestream handling with streamlink (twitch only for now, tipping me off to URL schemes to look for for other streaming sites would be appreciated.)

# if $1 isn't provided, spawn $BROWSER and exit. this allows lh to be used as a pseudo-browser.
[ -z "$1" ] && exec "$BROWSER"

case "$1" in
	*mkv|*webm|*mp4)
		mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) --quiet "$1" >/dev/null 2>&1 & ;;
	*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*twitch.tv/videos/*)
		mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) --quiet --ytdl "$1" >/dev/null 2>&1 & ;;
	*twitch.tv/*)
		STREAMQUAL="$(streamlink "$1"|\
			grep "Available streams"|tr " " "\n"|grep -E "[0-9]"|tr -d ,|\
			dmenu -p "choose stream quality for $1")"
		streamlink -p mpv $1 $STREAMQUAL >/dev/null 2>&1 & ;;
	*png|*jpg|*jpe|*jpeg|*gif)
		IMGPATH="/tmp/$(echo "$1"|sed "s/.*\\///")"
		curl -sL "$1" >"$IMGPATH"&&sxiv -a "$IMGPATH">/dev/null 2>&1 & ;;
	*mp3|*m4a|*flac|*aiff|*opus|*mp3?source*)
		curl -LO "$1" >/dev/null 2>&1 & ;;
	*epub|*pdf|*djvu)
		BOOKPATH="/tmp/$(echo "$1"|sed "s/.*\\///")"
		if [ -n "$READER" ]; then
			curl -sL "$1" >"$BOOKPATH"&&$READER "$BOOKPATH">/dev/null 2>&1 &
		else
			curl -sL "$1" >"$BOOKPATH" &
		fi ;;
	*)
		if [ -f "$1" ]; then
			$TERMINAL -e "$EDITOR $1"
		else
			$BROWSER "$1" >/dev/null 2>&1 &
		fi ;;
esac