#!/usr/bin/env ruby

laptop_mode = `xrandr` =~ /DP-0\s+disconnected/

wmctrl_out = IO.popen(%w[wmctrl -Gl]) {|io| io.read}

term_idx = 0
wmctrl_out.each_line do |line|
  if line =~ /^(\S+)\s+((?:-?\d+\s+){5})(\S.*)$/
    id, geom, title = $1, $2, $3.strip
    _, x, y, width, height = geom.split(/\s+/).map(&:to_i)
    #if title =~ /\s-\slilyterm$/i
    #if title =~ /\s:\sbash$/i
    if title =~ /josh@/i
      # lilyterm in fluxbox:
      #3840,0,834,580
      #4676,0,834,580
      #3840,607,834,563
      #4676,607,834,563

      # konsole in KDE:
      #3844,29,827,567
      #4678,29,827,567
      #3844,629,827,567
      #4678,629,827,567

      # xfce4-terminal in xfce4:
      #term_sizes = %w[
      #  3840,0,825,567
      #  4671,0,825,567
      #  3840,599,825,567
      #  4671,599,825,567
      #]

      ## xfce4-terminal in xfce4:
      #term_sizes = %w[
      #  3840,0,829,576
      #  4671,0,829,576
      #  3840,599,829,576
      #  4671,599,829,576
      #]

      ## gnome-terminal in xfce4:
      #term_sizes = %w[
      #  3840,0,827,578
      #  4671,0,827,578
      #  3840,603,827,560
      #  4671,603,827,560
      #]

      ## konsole in kde5 on arch:
      #term_sizes = %w[
      #  3844,29,824,578
      #  4676,29,824,578
      #  3844,640,824,560
      #  4676,640,824,560
      #]

      ## gnome-terminal in KDE5 on arch:
      #term_sizes = %w[
      #  3840,0,827,578
      #  4671,0,827,578
      #  3840,605,827,560
      #  4671,605,827,560
      #]

      # xfce4-terminal in KDE5 on Kubuntu 17.04:
      #term_sizes = %w[
      #  3840,0,826,578
      #  4674,0,826,578
      #  3840,611,826,560
      #  4674,611,826,560
      #]

      #if term_idx < term_sizes.size
      #  geom_line = term_sizes[term_idx]
      #  if laptop_mode
      #    parts = geom_line.split(",")
      #    parts[0] = (parts[0].to_i - 1920 * 2).to_s
      #    geom_line = parts.join(",")
      #  end
      #  system(*%W[wmctrl -ir #{id} -e 0,#{geom_line}])
      #end

      # Activate the Window
      sleep 0.1
      system(*%W[wmctrl -i -a #{id}])
      sleep 0.1
      case term_idx
      when 0
        system("xte", "keydown Super_L", "keydown Shift_L", "key Left", "keyup Shift_L", "keyup Super_L")
      when 1
        system("xte", "keydown Super_L", "keydown Shift_L", "key Right", "keyup Shift_L", "keyup Super_L")
      when 2
        system("xte", "keydown Super_L", "keydown Control_L", "key Left", "keyup Control_L", "keyup Super_L")
      when 3
        system("xte", "keydown Super_L", "keydown Control_L", "key Right", "keyup Control_L", "keyup Super_L")
      end

      term_idx += 1
    end
  end
end
