2 changed files with 83 additions and 3 deletions
			
			
		@ -0,0 +1,82 @@
					 | 
				
			||||
#!/bin/sh | 
				
			||||
 | 
				
			||||
help() { | 
				
			||||
	B=$(tput bold) | 
				
			||||
	U=$(tput smul) | 
				
			||||
	N=$(tput sgr0) | 
				
			||||
 | 
				
			||||
	cat << EOF | 
				
			||||
${B}NAME${N} | 
				
			||||
	monctl.sh - monitor manager | 
				
			||||
 | 
				
			||||
${B}SYNOPSIS${N} | 
				
			||||
	${B}monctl.sh${N} [${U}OPTION${N}] [${U}ARG(S)${N}] | 
				
			||||
 | 
				
			||||
${B}OPTIONS${N} | 
				
			||||
	${B}a*${N} ${U}width${N} ${U}height${N} ${U}hertz${N} ${U}name${N} | 
				
			||||
		Setup single monitor. | 
				
			||||
 | 
				
			||||
${B}ARGS${N} | 
				
			||||
	width | 
				
			||||
		Pixel width of the monitor. | 
				
			||||
 | 
				
			||||
	height | 
				
			||||
		Pixel height of the monitor. | 
				
			||||
 | 
				
			||||
	hertz | 
				
			||||
		Refresh rate of the monitor. | 
				
			||||
 | 
				
			||||
	name | 
				
			||||
		Xrandr name of the monitor. | 
				
			||||
EOF | 
				
			||||
} | 
				
			||||
 | 
				
			||||
# If no option is provided | 
				
			||||
[ "$#" -eq 0 ] && help && exit 1 | 
				
			||||
 | 
				
			||||
update() { | 
				
			||||
	sleep 4 | 
				
			||||
 | 
				
			||||
	# Reconfigure desktops | 
				
			||||
	$HOME/.scripts/wm/desktops.sh | 
				
			||||
	sleep 1 | 
				
			||||
 | 
				
			||||
	# Restart panel | 
				
			||||
	$HOME/.scripts/panel/lemonbar.sh & | 
				
			||||
 | 
				
			||||
	# Reload wallpaper | 
				
			||||
	$HOME/.scripts/wm/wallpaper.sh | 
				
			||||
} | 
				
			||||
 | 
				
			||||
auto() { | 
				
			||||
	[ "$#" != "5" ] && return 1 | 
				
			||||
 | 
				
			||||
	# Skip first argument | 
				
			||||
	shift 1 | 
				
			||||
 | 
				
			||||
	# Add mode to primary display | 
				
			||||
	OUTPUT="$(xrandr -q)" | 
				
			||||
	if ! echo "$OUTPUT" | grep -Fq "$1x$2_$3.00"; then | 
				
			||||
		eval xrandr --newmode $(cvt "$1" "$2" "$3" | awk '/Modeline/{ $1=""; print $0 }') | 
				
			||||
		xrandr --addmode "$4" "$1x$2_$3.00" | 
				
			||||
	fi | 
				
			||||
 | 
				
			||||
	# Get all connected displays | 
				
			||||
	CONNECTED="$(xrandr -q | awk '/ connected/{print $1}')" | 
				
			||||
 | 
				
			||||
	# Disable all other displays | 
				
			||||
	eval xrandr --output "$4" --mode "$1x$2_$3.00" --primary \ | 
				
			||||
		"$(echo "$CONNECTED" | grep -vx "$4" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ')" | 
				
			||||
 | 
				
			||||
	# Post monitor change | 
				
			||||
	update | 
				
			||||
} | 
				
			||||
 | 
				
			||||
case "$1" in | 
				
			||||
	a*) | 
				
			||||
		auto "$@" | 
				
			||||
		;; | 
				
			||||
	*) | 
				
			||||
		help | 
				
			||||
		;; | 
				
			||||
esac | 
				
			||||
					Loading…
					
					
				
		Reference in new issue