#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use File::ChangeNotify;
use Time::HiRes qw( sleep time );

my $use_width = shift || 800;
my $use_height = shift || 600;
my $use_only = shift || "";

my $max_width = $use_width;
my $max_height = $use_height;

my $dir = '/opt/pos/common/tmp/opened_windows';

if (-d $dir) {
  system("rm -rf $dir/*");
} else {
  mkdir($dir);
}

my $watcher = File::ChangeNotify->instantiate_watcher(
  directories => $dir,
);

my %timings;

while (my @events = $watcher->wait_for_events()) {
  foreach my $e (@events) {
    next unless $e->type() eq 'create' || $e->type() eq 'modify';

    my( $name, $width, $height ) = $e->path() =~ /^.*\/(.*?)#(\d+)#(\d+)$/;
    next unless defined $name && defined $width && defined $height;

    if ($use_only) {
      next unless $name =~ /$use_only/;
    }

    print STDERR "#### $name - $width - $height\n";

    if (exists $timings{$name}) {
      my $diff = time - $timings{$name};
      next if $diff < 1;
    }

    $timings{$name} = time;

    my $pos_w = int(($max_width / 2) - ($width / 2));
    my $pos_h = int(($max_height / 2) - ($height / 2));

    sleep 0.1;
    #sleep 0.05;
    system("wmctrl -r \"$name\" -e 0,$pos_w,$pos_h,-1,-1");
    # unlink $e->path();
  }
}


