def window(index = 0)
      if @arguments[:use_active_window]
        Window.new(@arguments, Wmctile.current_window_id)
      else
        Window.new(@arguments, @window_strings[index])
      end
    rescue Errors::WindowNotFound
      if @arguments[:exec]
        # Exec the command
        puts "Executing command: #{@arguments[:exec]}"
        system "#{@arguments[:exec]} &"
      else
        raise Errors::WindowNotFound, @window_strings[index]
      end
    end
def window(index = 0)
      if @arguments[:use_active_window]
        Window.new(@arguments, Wmctile.current_window_id)
      else
        Window.new(@arguments, @window_strings[index])
      end
    rescue Errors::WindowNotFound
      if @arguments[:exec]
        # Exec the command
        puts "Executing command: #{@arguments[:exec]}"
        system "#{@arguments[:exec]} &"
      else
        raise Errors::WindowNotFound, @window_strings[index]
      end
    end
Starts wmctile, runs the required methods.

 @param [Hash] command line options
 @param [Array] window_strings ARGV array


 Creates a new window based on @arguments and @window_strings.
 If no window is found, checks for the -x/--exec argument. If present, executes it.
 If there's no -x command and a window is not found, raises an error.

 @param [Integer] index index of the window from matching windows array

 @return [Window] window instance