#!/bin/sh

#==著作権情報==
# MWOXWSAMD (Move Windon On X Windows System And Multi Displays)  1.0 (2009/03/04)
# 作成者	白湯ユータ (http://www.shirayu.net/)
# ライセンス	GPL Version3 または SOL(Shirayu Original License)
# 注意	無保証
#
#==使い方==
# このスクリプトを起動すると，アクティブなウィンドウを別のモニタに移動します．
# 2つのディスプレイのサイズが両辺とも等しい場合は，disp_xに適切な値を与えるだけでOKです．
# 異なる場合は，アルゴリズムを変える必要があります．
# といっても，たった2行のコマンドなので，難しくないと思います．
#
# Gnomeなら，gconf-editorを起動して，
# /apps/metacity/keybinding_commands/command_1 にこのスクリプトのパス
# /apps/metacity/global_keybindings/run_command_1 に割り当てたいショートカット(<Control><Alt>vなど）
# を記入して，gconf-editorを閉じれば，さっそく使えます．
# 
# なお，ウィンドウ移動のために，wmctrlが必要です．
# aptなどでインストールしてください．

#はじめにこの値を調整すること
#ディスプレイの横幅
disp_x=1280
####ここまで

#アクティブウィンドウのIDを得る
#表示形式の差を考慮して16進で表示する
#参考 http://mattn.kaoriya.net/software/linux/etc/1138381362.htm
#参考 http://oshiete1.goo.ne.jp/qa2079434.html
active_win_id=`xprop -root | grep ^_NET_ACTIVE_WINDOW |  awk '{print $5}' `
#echo $active_win_id

#アクティブウィンドウのx座標とy座標を得て，計算して，移動する
#シェル変数の与え方法に注意
#参考 http://ryuiki.agbi.tsukuba.ac.jp/~nishida/MEMO/awk/index.html
#参考 http://techno-st.net/2008/12/18/-x-wmctrl.html
wmctrl -lG | awk '{ if ($1+0 == id+0 ){print } } ' id=$active_win_id | \
 awk '{ if ($3 < disp_x){ x = $3 + disp_x -12} else {x = $3 - disp_x -12}; system( sprintf ("wmctrl -i -r %d -e 0,%d,-1,-1,-1" ,$1,x)); print $0;} ' disp_x=$disp_x


