All pastes #1222123 Raw Edit

erik

public text v1 · immutable
#1222123 ·published 2008-10-07 21:23 UTC
rendered paste body
#!/bin/bashfunction READ_SETTINGS()  {	if [ ! -d "$HOME/.gowin" ]; then		mkdir "$HOME/.gowin"	fi	CONFIG="$HOME/.gowin/$LOOK_FOR"	if [ -f "$CONFIG" ]; then		echo "Using values from $CONFIG"		. "$CONFIG"	else		echo "No config file $CONFIG was found"	fi	if [ ! -z "$2" ]; then		BIN="$2"	fi	if [ ! -z "$3" ] && [ ! -z "$4" ]; then		TARGET_LEFT="$3"		TARGET_TOP="$4"	fi	if [ ! -z "$5" ] && [ ! -z "$6" ]; then		TARGET_WIDTH="$5"		TARGET_HEIGHT="$6"	fi}if [ -z "$1" ]; then	LOOK_FOR="XChat"else	LOOK_FOR="$1"fiLIVE_DESK="`wmctrl -d | grep --color=no '*' | cut -d ' ' -f 1`"ACTIVE_WINDOW="`wmctrl -r :ACTIVE: -b toggle,skip_taskbar ; wmctrl -v -r :ACTIVE: -b toggle,skip_taskbar 2>&1 | grep --color=no "^Using window: " | cut -d ' ' -f 3`"TARGET_DESK_COUNT="9"DEAD_DESK="8"ACTIVE_DESK_COUNT="`wmctrl -d | wc -l`"if [ "$ACTIVE_DESK_COUNT" -lt "$TARGET_DESK_COUNT" ]; then	echo "Setting desk count from $ACTIVE_DESK_COUNT to $TARGET_DESK_COUNT"	wmctrl -n 9fiif [ "$LIVE_DESK" = "$DEAD_DESK" ]; then	echo "You are on the dead desk.  Moving you."	wmctrl -s 0	LIVE_DESK="0"	ACTIVE_WINDOW=""filet TRIES=0while [ -z "$LINE" ] && [ "$TRIES" -lt 5 ]; do	let TRIES++	LINE="`wmctrl -l -G | grep --color=no "$LOOK_FOR" | head -1 | tr -s '[:blank:]' ' '`"	if [ ! -z "$LINE" ]; then		HANDLE="`echo "$LINE" | cut -d ' ' -f 1`"		if [ "$HANDLE" = "$ACTIVE_WINDOW" ]; then		  echo "moving to dead desk ($DEAD_DESK)"			wmctrl -v -i -r $HANDLE -b add,skip_taskbar			wmctrl -v -i -r $HANDLE -t $DEAD_DESK			exit 0		fi		READ_SETTINGS	else		READ_SETTINGS		if [ -z "$BIN" ]; then		  echo "Could not find a window named '$LOOK_FOR' and no starter was provided"		  exit 1		else			echo "Could not find window '$LOOK_FOR'."		fi			if [ -z "$STARTED" ]; then			echo "Will start $BIN"			"$BIN" &			echo "PID $!"						STARTED="1"		else			echo "Already started.  Waiting."			sleep 2		fi	fi	if [ -z "$LINE" ]; then		sleep 2	fidoneDESKTOP="`echo "$LINE" | cut -d ' ' -f 2`"LEFT="`echo "$LINE" | cut -d ' ' -f 3`"TOP="`echo "$LINE" | cut -d ' ' -f 4`"WIDTH="`echo "$LINE" | cut -d ' ' -f 5`"HEIGHT="`echo "$LINE" | cut -d ' ' -f 6`"HOST="`echo "$LINE" | cut -d ' ' -f 7`"TITLE="`echo "$LINE" | cut -d ' ' -f 8-`"echo -e "Active Window:\t$ACTIVE_WINDOW\nFound window:\n\tHANDLE:\t$HANDLE\n\tDESK:\t$DESKTOP\n\tHOST:\t$HOST\n\tPOS:\t($LEFT,$TOP)\n\tSIZE:\t($WIDTH,$HEIGHT)\n\tTITLE:\t$TITLE\n"#exitif [ ! -f "$CONFIG" ]; then	echo "Creating initial config $CONFIG"	touch "$CONFIG"	if [ ! -z "$TARGET_LEFT" ]; then		echo "TARGET_LEFT=$TARGET_LEFT" >> "$CONFIG"		echo "TARGET_TOP=$TARGET_TOP" >> "$CONFIG"	else		echo "TARGET_LEFT=$LEFT" >> "$CONFIG"		echo "TARGET_TOP=$TOP" >> "$CONFIG"	fi	if [ ! -z "$TARGET_WIDTH" ]; then		echo "TARGET_WIDTH=$TARGET_WIDTH" >> "$CONFIG"		echo "TARGET_HEIGHT=$TARGET_HEIGHT" >> "$CONFIG"	else		echo "TARGET_WIDTH=$WIDTH" >> "$CONFIG"		echo "TARGET_HEIGHT=$HEIGHT" >> "$CONFIG"	fi	if [ ! -z "$BIN" ]; then		echo "BIN='$BIN'" >> "$CONFIG"	fifiif [ ! -z "$TARGET_LEFT" ] && [ ! -z "$TARGET_TOP" ]; then	if [ ! "$TARGET_LEFT" = "$LEFT" ] || [ ! "$TARGET_TOP" = "$TOP" ]; then		echo "Moving to ($TARGET_LEFT,$TARGET_TOP)"		wmctrl -v -i -r $HANDLE -b remove,maximized_vert,remove,maximized_horz		wmctrl -v -i -r $HANDLE -e 0,$TARGET_LEFT,$TARGET_TOP,-1,-1	fifiif [ ! -z "$TARGET_WIDTH" ] && [ ! -z "$TARGET_HEIGHT" ]; then	if [ ! "$TARGET_WIDTH" = "$WIDTH" ] || [ ! "$TARGET_HEIGHT" = "$HEIGHT" ]; then		echo "Sizing to ($TARGET_WIDTH,$TARGET_HEIGHT)"		wmctrl -v -i -r $HANDLE -b remove,maximized_vert,remove,maximized_horz		wmctrl -v -i -r $HANDLE -e 0,-1,-1,$TARGET_WIDTH,$TARGET_HEIGHT	fifiif [ ! "$DESKTOP" = "$LIVE_DESK" ]; then  echo "moving to live desk ($LIVE_DESK)"	wmctrl -v -i -r $HANDLE -t $LIVE_DESKfi#wmctrl -v -i -r $HANDLE -b add,above,remove,stickywmctrl -v -i -r $HANDLE -b remove,skip_taskbarwmctrl -v -i -a $HANDLE