[20/02/24 02:26 更新]
今回のスクリプトの説明をする。
movewindow.pl Rでアクティブなウィンドウが右に、RをLにすれば左に、Uにすれば上に、Dにすれば下に移動する。移動の程度は、行きたい方向の余白を半分にするように決めている。
以下は詳細。
use feature qw/say switch/;
no warnings "experimental::smartmatch";
一行目のsayはデバグ用なので消してよい。switchはgiven-when構文用。二行目はその警告対策。(無くても動くのは動く)
my $dx = -4;
my $dy = -50;
は、その補正。これは、環境依存のはず。
xdotoolは親ウィンドウのタイトル部分や枠の部分だけ、移動に誤差が出る。$dx, $dy
my $sc = `xrandr | head -1`;
my ($sx, $sy) = $sc =~ /current\s+(\d+)\s+x\s+(\d+)/;
xrandrを使って、ディスプレイのサイズを取得。絶対位置で指定する人には不要。
my $win = `xdotool getactivewindow getwindowgeometry --shell`;
for (split /\n/, $win) {
eval '$' . $_;
}
xdotoolを使って、アクティブなウィンドウの情報を取得。結果は、$WINDOW(ウィンドのID)、$X、$Y、$WIDTH、$HEIGHTに収納。
my $x = $X + $dx;
my $y = $Y + $dy;
前述の補正。
given ($ARGV[0]) {
when ('R') {
$x += int(($sx - ($x + $WIDTH)) / 2);
} when ('L') {
$x -= int($x / 2);
} when ('U') {
$y -= int($y / 2);
} when ('D') {
$y += int(($sy - ($y + $HEIGHT)) / 2);
} default {
die "need argument (R|L|U|D)";
}
}
移動先の座標計算。移動の程度を変えたい人は、ここをいじる。
`xdotool windowmove $WINDOW $x $y`;
xdotoolを使って、移動の実行。
このスクリプトをホットキーに登録すると便利である。LXDEだとlxhotkey(メニューに「setup Hot Keys」とかあることも)を使って、適当なキーに~/bin/movewindow.pl Rなどと登録するとよい。(もちろん、スクリプトを適当な場所に置いて実行権限をつけてから)
このスクリプトで不満が残る人は、自分で工夫してほしい。
[スクリプトに戻る] [「Perlとxdotoolでウィンドウ移動」に戻る] [「あえてのPerl」に戻る]