nishio-dens's diary

Railsとかプログラミング関連の備忘録

Ubuntu9.10 自分用 デュアルディスプレイ環境でウィンドウを右左に移動させるスクリプト

#!/bin/bash

#このスクリプトを実行するには wmctrl が必要です.
#ubuntuの場合,$sudo apt-get install wmctrl でインストールできます

#ここを自分で設定する
#左側ディスプレイの横幅
left_window_width=1280
#右側ディスプレイの横幅
right_window_width=1920

#アクティブウィンドウのwindow IDを取得
active_window_id_info=`xprop -root | grep ^_NET_ACTIVE_WINDOW`
set -- $active_window_id_info
active_window_id=$5

#デバッグ用 アクティブウィンドウID表示
#echo "ACTIVE_WINDOW" $active_window_id

#アクティブウィンドウx座標取得
active_window_x_info=`xwininfo -id $active_window_id | grep "Absolute\ upper-left\ X:"`
set -- $active_window_x_info
active_window_x=$4

#デバッグ用 アクティブウィンドウの座標を表示
#echo "ACTIVE_WINDOW_X:" $active_window_x

#左側にあるウィンドウを右側に
#右側にあるウィンドウを左側にするためのX座標を計算
move_window_x=0
if [ $active_window_x -lt 1280 ]; then	
	right_left=`echo "scale=5; $right_window_width / $left_window_width" | bc`
	result=`echo "scale=5; $left_window_width+$right_left*$active_window_x" | bc`
	move_window_x=$result
else
	window_x=`expr $active_window_x - $left_window_width`
	left_right=`echo "scale=5; $left_window_width / $right_window_width" | bc`
	result=`echo "scale=5; $left_right*$window_x" | bc`
	move_window_x=$result
fi

#少数を整数へと変換
move_window_x=${move_window_x%.*}
#正しく値が変換できなかったらx座標を0にする
if [ ${#move_window_x} = 0 ]; then
	move_window_x=0
fi	

#デバッグ用 移動先のX座標を表示
#echo "MOVE_WINDOW_X:" $move_window_x

#ウィンドウを移動させる
wmctrl -i -r $active_window_id -e 0,$move_window_x,-1,-1,-1