class Tmuxinator::Window

Attributes

commands[R]
index[R]
layout[R]
name[R]
panes[R]
project[R]

Public Class Methods

new(window_yaml, index, project) click to toggle source
# File lib/tmuxinator/window.rb, line 7
def initialize(window_yaml, index, project)
  @name = !window_yaml.keys.first.nil? ? window_yaml.keys.first.shellescape : nil
  @panes = []
  @layout = nil
  @pre = nil
  @project = project
  @index = index

  value = window_yaml.values.first

  if value.is_a?(Hash)
    @layout = value["layout"] ? value["layout"].shellescape : nil
    @pre = value["pre"] if value["pre"]

    @panes = build_panes(value["panes"])
  else
    @commands = build_commands(tmux_window_command_prefix, value)
  end
end

Public Instance Methods

build_commands(prefix, command_yml) click to toggle source
# File lib/tmuxinator/window.rb, line 39
def build_commands(prefix, command_yml)
  if command_yml.is_a?(Array)
    command_yml.map do |command|
      "#{tmux_window_command_prefix} #{command.shellescape} C-m" if command
    end.compact
  elsif command_yml.is_a?(String) && !command_yml.empty?
    ["#{tmux_window_command_prefix} #{command_yml.shellescape} C-m"]
  else
    []
  end
end
build_panes(panes_yml) click to toggle source
# File lib/tmuxinator/window.rb, line 27
def build_panes(panes_yml)
  Array(panes_yml).map.with_index do |pane_yml, index|
    if pane_yml.is_a?(Hash)
      pane_yml.map do |name, commands|
        Tmuxinator::Pane.new(index, project, self, *commands)
      end
    else
      Tmuxinator::Pane.new(index, project, self, pane_yml)
    end
  end.flatten
end
panes?() click to toggle source
# File lib/tmuxinator/window.rb, line 61
def panes?
  panes.any?
end
pre() click to toggle source
# File lib/tmuxinator/window.rb, line 51
def pre
  if @pre.is_a?(Array)
    @pre.join(" && ")
  elsif @pre.is_a?(String)
    @pre
  else
    ""
  end
end
tmux_layout_command() click to toggle source
# File lib/tmuxinator/window.rb, line 81
def tmux_layout_command
  "#{project.tmux} select-layout -t #{tmux_window_target} #{layout}"
end
tmux_new_window_command() click to toggle source
# File lib/tmuxinator/window.rb, line 77
def tmux_new_window_command
  "#{project.tmux} new-window #{Tmuxinator::Config.default_path_option} #{File.expand_path(project.root).shellescape} -t #{tmux_window_target} -n #{name}"
end
tmux_pre_window_command() click to toggle source
# File lib/tmuxinator/window.rb, line 69
def tmux_pre_window_command
  project.pre_window ? "#{project.tmux} send-keys -t #{tmux_window_target} #{project.pre_window.shellescape} C-m" : ""
end
tmux_select_first_pane() click to toggle source
# File lib/tmuxinator/window.rb, line 85
def tmux_select_first_pane
  "#{project.tmux} select-pane -t #{tmux_window_target}.#{panes.first.index + project.base_index}"
end
tmux_window_command_prefix() click to toggle source
# File lib/tmuxinator/window.rb, line 73
def tmux_window_command_prefix
  "#{project.tmux} send-keys -t #{project.name}:#{index + project.base_index}"
end
tmux_window_target() click to toggle source
# File lib/tmuxinator/window.rb, line 65
def tmux_window_target
  "#{project.name}:#{index + project.base_index}"
end