def window(*args, &block)
      key            = "window#{@_windows.keys.size}"
      options        = args.extract_options!
      options[:name] = args.first unless args.empty?
      context = (@_windows[key] = window_hash.merge(:options => options))
      run_context context, &block
    end
def window(*args, &block)
      key            = "window#{@_windows.keys.size}"
      options        = args.extract_options!
      options[:name] = args.first unless args.empty?
      context = (@_windows[key] = window_hash.merge(:options => options))
      run_context context, &block
    end
Run commands in the conext of a window.

 @param [Array] args
   Hash to pass options to each context of a window. Each core can
   implement the desired behavior for the window based on the options set here.
   Can also pass a string as first parameter which will be set as
   the :name
 @param [Proc] block
   block of commands to run in window context.

 @example
   window 'my project', :size => [80, 30] do
     run 'ps aux'
   end

 @api public