You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							119 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							119 lines
						
					
					
						
							2.8 KiB
						
					
					
				| #!/bin/sh | |
|  | |
| depend() { | |
| 	pactree -u -d 1 "$1" | tail -n +2 | sort | |
| } | |
|  | |
| emacs() { | |
| 	# Create new frame (if there isnt one or no file is specified) | |
| 	if [ -z "$(pgrep -f emacsclient.*-c)" ] || [ "$1" = "" ]; then | |
| 		setsid -f emacsclient -a '' -c "$@" > /dev/null 2>&1 | |
| 	else | |
| 		setsid -f emacsclient -a '' "$@" > /dev/null 2>&1 | |
| 	fi | |
| } | |
|  | |
| # $1 = find, $2 = list, $3 = list separator | |
| in_list() { | |
| 	[ -z "$1" ] || [ -z "$2" ] && return 1 | |
| 	if ! echo "$2" | awk -v m="^$1$" -v RS="${3:-' '}" '$0 ~ m { exit 1 }'; then | |
| 		return 0 | |
| 	else | |
| 		return 1 | |
| 	fi | |
| } | |
|  | |
| java_doc() { | |
| 	mkdir -p './doc'; | |
| 	javadoc -d './doc' -- *.java | |
| } | |
|  | |
| java_run () { | |
| 	mkdir -p './out'; | |
| 	javac -d './out' "$1.java"; | |
| 	java -cp './out' "$1" | |
| } | |
|  | |
| # Search for packages, by name only | |
| pacman_search() { | |
| 	pacman -Ss "$1" --color=always | \ | |
| 		awk -v m="$1" '{ if ($0 !~ /^\s/) { if ($1 ~ m) { print; }} else { print; }}' | |
| } | |
|  | |
| pastebin() { | |
| 	echo "$1" | curl -F 'f:1=<-' ix.io | |
| } | |
|  | |
| print_project() { | |
| 	tree -f --noreport | egrep -ve "vendor(\/.*){2}" -ve "build(\/.*)" | sed -E 's%\./.*/%%g; s%\./%%g;' | |
| } | |
|  | |
| raspbian() { | |
| 	sudo systemctl start avahi-daemon.service | |
| 	if ! ip a show usb0 | grep -q 'inet6'; then | |
| 		sudo dhcpcd usb0 | |
| 	fi | |
| 	ssh -6 pi@"$(avahi-resolve-host-name raspberrypi.local | awk '{ print $2 }')"%usb0 | |
| 	sudo systemctl stop avahi-daemon.service | |
| } | |
|  | |
| screencast() { | |
| 	IS_RUNNING="$(pgrep ffmpeg)" | |
| 	if [ "$IS_RUNNING" != "" ]; then | |
| 		notify-send "Stopped recording.." | |
| 		# Kill with SIGTERM, allowing finishing touches | |
| 		pkill -15 ffmpeg | |
| 		sleep 3 | |
| 		# Kill with SIGKILL, just in case it is still running | |
| 		pkill -9 ffmpeg | |
| 	else | |
| 		width=1280 | |
| 		height=720 | |
| 		NAME=${1:-"$CAPTURE/$(date '+%Y-%m-%d-%H%M%S')_${width}x${height}_ffmpeg"} | |
|  | |
| 		[ -n "$2" ] && AUDIO_CODEC="-c:a aac" | |
| 		[ -n "$2" ] && AUDIO_SOURCE="-f pulse -ac 2 -i $2" # 1 = system, 2 = mic | |
|  | |
| 		notify-send "Started recording.." | |
| 		ffmpeg -y \ | |
| 			-threads 8 \ | |
| 			-f x11grab \ | |
| 			-framerate 30 \ | |
| 			-s "${width}x${height}" \ | |
| 			-i "$DISPLAY.0+640,180" \ | |
| 			$AUDIO_SOURCE \ | |
| 			-r 30 \ | |
| 			$AUDIO_CODEC \ | |
| 			-c:v libx264 -crf 0 -preset ultrafast \ | |
| 			"$NAME.mkv" & | |
| 	fi | |
| } | |
|  | |
| sha384sum() { | |
| 	tmpfile=$(mktemp) | |
| 	curl -o "$tmpfile" "$1" && openssl dgst -sha384 -binary "$tmpfile" | openssl base64 -A | |
| 	rm -f "$tmpfile" | |
| } | |
|  | |
| shuffle() { | |
| 	echo "$1" | fold -w 1 | shuf | tr -d '\n' | |
| } | |
|  | |
| update_mirrorlist() { | |
| 	sudo rm /etc/pacman.d/mirrorlist.pacnew | |
| 	sudo reflector --latest 100 --protocol https --sort rate --save /etc/pacman.d/mirrorlist | |
| } | |
|  | |
| webmconvert() { | |
| 	[ "$2" = "1" ] && AUDIO="-c:a libvorbis" || AUDIO="-an" | |
|  | |
| 	# https://trac.ffmpeg.org/wiki/Encode/H.264 | |
| 	# https://trac.ffmpeg.org/wiki/Encode/VP8 | |
| 	# -qmin 0   (0-63, default 4, lower = better quality) | |
| 	# -qmax 40  (qmin-63, default 63) | |
| 	# -crf 16   (0-51, default 23, 0 = lossless) | |
| 	# -b:v 4M | |
| 	ffmpeg -threads 4 -i "$1" -c:v libvpx -qmin 0 -qmax 40 -crf 16 -b:v 4M "$AUDIO" "${1%.*}_convert.webm" | |
| } | |
|  | |
| "$@"
 | |
| 
 |