summaryrefslogtreecommitdiff
path: root/sh/o
blob: 8fb066c7ef029a1d49cbb5134a01748e19ac5bff (plain)
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
#!/bin/sh

# useful links
# https://stackoverflow.com/questions/3430330/best-way-to-make-a-shell-script-daemon
# https://serverfault.com/questions/117152/do-background-processes-get-a-sighup-when-logging-off
# https://wiki.archlinux.org/title/default_applications

# I don't care about errors, I don't want to handle errors, just shut up please.
# nohup seems not necessary if don't care about daemon SIGHUP requirement

# when close a shell script's stdout or stderr with `>&-` or `2>&-`, `xsel -ib` in that script has no effect
# https://github.com/kfish/xsel/issues/43
# using `>&-` or `2>&-` doesn't completely close mpv's output when run sth. like `o mpv file.mkv`
# base on above observations, I choose to use `>/dev/null 2>&1` instead

# need ; before } when it is in the same line as { ? https://www.shellcheck.net/wiki/SC1056

if [ $# -eq 1 ] && [ -e "$1" ] && { ! [ -x "$1" ] || [ -d "$1" ];}; then
	case "$1" in
		# libreoffice, please don't let firefox eat your shit
		*.docx|*.pptx) cmd=libreoffice;;
		*) cmd=xdg-open;;
	esac
	nohup "$cmd" "$1" 0<&- >/dev/null 2>&1 &
else
	nohup "$@" 0<&- >/dev/null 2>&1 &
fi