aboutsummaryrefslogtreecommitdiff
path: root/shellrc.d/desktop
blob: f3995d6299a8368ca133f5819ab3c43971ed3c3a (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# vim: ft=sh:
# This is handy only on desktop and is useless on server


# Following section is applicable for any desktop but only for graphics
# The check is for XOrg but thanks to XWayland it works for Wayland as well.
[ -z "$DISPLAY" ] && return

alias feh='feh --conversion-timeout 10 -.'

# Clip current HEAD hash to clipboard
# Optionally you can pass commit as argument
gitclip() {
	git rev-parse "${1:-HEAD}"| clip
}
# Clip current head message to clipboard
# Optionally you can pass commit as argument
gitmclip() {
	git log --format=%B -n 1 "${1:-HEAD}" | clip
}
# NOTE: clip comes either from xorg or sway file


# This function should not be called externaly
# It expects PID of surf instace as first argument and all other arguments should
# be command to be called before kill is sent.
__insurf_callback() {
	local SPID=$1
	shift
	"$@"
	echo "kill $SPID SIGHUP"
	kill -s SIGHUP "$SPID" || exit 1
}

# Same as inrun but it opens first argument it founds in surf and then reloads
# that instance automatically.
insurf() {
	(
	set -e
	# Run surf
	surf "$1" &
	local SPID=$!
	trap "kill $SPID; trap '' EXIT; exit 0" EXIT INT QUIT TERM ABRT
	# Insert our callback
	local ISFIRST=true
	for ARG in "$@"; do
		if $ISFIRST; then
			shift $#
			ISFIRST=false
		fi
		set "$@" "$ARG"
		if [ "$ARG" = "--" ]; then
			set "$@" "__insurf_callback" "$SPID"
		fi
	done
	# Run inrun
	inrun "$@"
	)
}