| 
									
										
										
										
											2022-02-06 00:15:14 -07:00
										 |  |  | #!/bin/zsh | 
					
						
							|  |  |  | ##################################################################### | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | USAGE="$0 APPLICATION CLIENT_CLASS" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function ERROR() { | 
					
						
							|  |  |  | 	local ERROR_CODE=$1 | 
					
						
							|  |  |  | 	local MESSAGE="$2" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	echo -e "$MESSAGE\n\nUSAGE : $USAGE\n" >&2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	[ $MESSAGE ] && notify-send "Application Launcher" "$MESSAGE" | 
					
						
							|  |  |  | 	exit $ERROR_CODE | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ##################################################################### | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | APPLICATION="$1" | 
					
						
							|  |  |  | which $APPLICATION >/dev/null 2>&1 \ | 
					
						
							|  |  |  | 	|| ERROR 2 "Application '$APPLICATION' not found" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CLIENT_CLASS="${@:2}" | 
					
						
							|  |  |  | [ ! $CLIENT_CLASS ] && CLIENT_CLASS="$APPLICATION" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | XFFSET=0.0 | 
					
						
							|  |  |  | YFFSET=0.0 | 
					
						
							|  |  |  | FACTOR=0.8 | 
					
						
							| 
									
										
										
										
											2022-02-10 11:12:21 -07:00
										 |  |  | xrandr | grep primary | awk '{print $4;}' | grep -q '^3840' \ | 
					
						
							|  |  |  | 	&& FACTOR=0.5 | 
					
						
							| 
									
										
										
										
											2022-02-06 00:15:14 -07:00
										 |  |  | case $APPLICATION in | 
					
						
							|  |  |  | 	pavucontrol ) FACTOR=0.4 YFFSET=200  ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | xdotool search --class "$CLIENT_CLASS" >/dev/null 2>&1 || { | 
					
						
							|  |  |  | 	i3-msg "exec --no-startup-id $APPLICATION;" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | WINDOW_SIZE=$(\ | 
					
						
							|  |  |  | 	xrandr \ | 
					
						
							|  |  |  | 		| grep 'connected primary' \ | 
					
						
							|  |  |  | 		| sed 's/.*connected primary \([^x]*\)x\([^+]*\).*/\1 \2/' \ | 
					
						
							|  |  |  | 		| awk -v f=$FACTOR -v x=$XFFSET -v y=$YFFSET \ | 
					
						
							|  |  |  | 			'{print int($1*f+x)," ",int($2*f+y);}'\ | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i3-msg "[class=$CLIENT_CLASS] move scratchpad" | 
					
						
							|  |  |  | i3-msg "[class=$CLIENT_CLASS] resize set $WINDOW_SIZE" | 
					
						
							|  |  |  | i3-msg "[class=$CLIENT_CLASS] scratchpad show" | 
					
						
							|  |  |  | i3-msg "[class=$CLIENT_CLASS] move position center" |