rtmux 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/bin/rtmux +179 -0
 - data/lib/rtmux.rb +104 -0
 - metadata +60 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6a332f0ab076b868caeba90ccd342daad183a728
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e04290ecbd85ddff1b415fcc02cc020e8ca246ac
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 91ad374d37ebf97e6e4d517f335ea4dd5bf49d505f01389dca47a2300031da0e80e8625a6cf399c055f6aa12f9b5357b64a7a752989735fc96cbcba061d81b2d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 115c596e9af48535b3c3987e8619145c694dd4d39771c168df02f19a7fe341f7a33701525b964155bdb0bb706ae4c22c0c70e1636ddf51a8696e3cce5888dd0f
         
     | 
    
        data/bin/rtmux
    ADDED
    
    | 
         @@ -0,0 +1,179 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # coding: UTF-8
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # rtmux
         
     | 
| 
      
 5 
     | 
    
         
            +
            # 
         
     | 
| 
      
 6 
     | 
    
         
            +
            # excutable for rtmux.rb
         
     | 
| 
      
 7 
     | 
    
         
            +
            # 
         
     | 
| 
      
 8 
     | 
    
         
            +
            # created on : 2013.08.12
         
     | 
| 
      
 9 
     | 
    
         
            +
            # last update: 2013.08.13
         
     | 
| 
      
 10 
     | 
    
         
            +
            # 
         
     | 
| 
      
 11 
     | 
    
         
            +
            # by meinside@gmail.com
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            require "yaml"
         
     | 
| 
      
 14 
     | 
    
         
            +
            require "thor"
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            require "rtmux"
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            module RTmux
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              CONFIG_FILEPATH = File.expand_path("~/.rtmux.conf")
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              # predefined variables:
         
     | 
| 
      
 23 
     | 
    
         
            +
              #  %d: current directory(where this script is run)'s name
         
     | 
| 
      
 24 
     | 
    
         
            +
              #  %h: host name
         
     | 
| 
      
 25 
     | 
    
         
            +
              #  %Y: year (eg. 2012)
         
     | 
| 
      
 26 
     | 
    
         
            +
              #  %M: month (eg. 11)
         
     | 
| 
      
 27 
     | 
    
         
            +
              #  %D: day (eg. 22)
         
     | 
| 
      
 28 
     | 
    
         
            +
              RTMUX_CONFIG_EXAMPLE = <<EXAMPLE
         
     | 
| 
      
 29 
     | 
    
         
            +
            ---
         
     | 
| 
      
 30 
     | 
    
         
            +
            rails:  # for rails projects
         
     | 
| 
      
 31 
     | 
    
         
            +
              session_name: "%d"
         
     | 
| 
      
 32 
     | 
    
         
            +
              windows:
         
     | 
| 
      
 33 
     | 
    
         
            +
              - name: console
         
     | 
| 
      
 34 
     | 
    
         
            +
              - name: models
         
     | 
| 
      
 35 
     | 
    
         
            +
                cmd: cd ./app/models; clear
         
     | 
| 
      
 36 
     | 
    
         
            +
              - name: views
         
     | 
| 
      
 37 
     | 
    
         
            +
                cmd: cd ./app/views; clear
         
     | 
| 
      
 38 
     | 
    
         
            +
              - name: controllers
         
     | 
| 
      
 39 
     | 
    
         
            +
                cmd: cd ./app/controllers; clear
         
     | 
| 
      
 40 
     | 
    
         
            +
              - name: configs
         
     | 
| 
      
 41 
     | 
    
         
            +
                cmd: cd ./config; clear
         
     | 
| 
      
 42 
     | 
    
         
            +
              - name: server
         
     | 
| 
      
 43 
     | 
    
         
            +
                split:
         
     | 
| 
      
 44 
     | 
    
         
            +
                  vertical: true
         
     | 
| 
      
 45 
     | 
    
         
            +
                  percentage: 50
         
     | 
| 
      
 46 
     | 
    
         
            +
                  panes:
         
     | 
| 
      
 47 
     | 
    
         
            +
                  - pane: 1
         
     | 
| 
      
 48 
     | 
    
         
            +
                    cmd: rails server
         
     | 
| 
      
 49 
     | 
    
         
            +
                  - pane: 2
         
     | 
| 
      
 50 
     | 
    
         
            +
                    cmd: rails console
         
     | 
| 
      
 51 
     | 
    
         
            +
              focus:
         
     | 
| 
      
 52 
     | 
    
         
            +
                name: console
         
     | 
| 
      
 53 
     | 
    
         
            +
                pane: 1
         
     | 
| 
      
 54 
     | 
    
         
            +
            EXAMPLE
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              # replace text for tmux session/window names
         
     | 
| 
      
 57 
     | 
    
         
            +
              # @param txt [String] text
         
     | 
| 
      
 58 
     | 
    
         
            +
              # @return [String] replaced text
         
     | 
| 
      
 59 
     | 
    
         
            +
              def self.replace(txt)
         
     | 
| 
      
 60 
     | 
    
         
            +
                unless txt
         
     | 
| 
      
 61 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 62 
     | 
    
         
            +
                else
         
     | 
| 
      
 63 
     | 
    
         
            +
                  txt
         
     | 
| 
      
 64 
     | 
    
         
            +
                    .gsub("%d", File.basename(Dir.pwd))
         
     | 
| 
      
 65 
     | 
    
         
            +
                    .gsub("%h", `hostname`)
         
     | 
| 
      
 66 
     | 
    
         
            +
                    .gsub("%Y", "%04d" %[Time.now.year])
         
     | 
| 
      
 67 
     | 
    
         
            +
                    .gsub("%M", "%02d" %[Time.now.month])
         
     | 
| 
      
 68 
     | 
    
         
            +
                    .gsub("%D", "%02d" %[Time.now.day])
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              # parse config with given filepath or text
         
     | 
| 
      
 73 
     | 
    
         
            +
              # @param config_filepath_or_data [String] filepath or text
         
     | 
| 
      
 74 
     | 
    
         
            +
              # @return [Hash] parsed config
         
     | 
| 
      
 75 
     | 
    
         
            +
              def self.parse_config(config_filepath_or_data)
         
     | 
| 
      
 76 
     | 
    
         
            +
                if File.exists? config_filepath_or_data
         
     | 
| 
      
 77 
     | 
    
         
            +
                  YAML.load_file(config_filepath_or_data)
         
     | 
| 
      
 78 
     | 
    
         
            +
                else
         
     | 
| 
      
 79 
     | 
    
         
            +
                  YAML.load(config_filepath_or_data)
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
              rescue
         
     | 
| 
      
 82 
     | 
    
         
            +
                puts "# yml parse error: #{$!}"
         
     | 
| 
      
 83 
     | 
    
         
            +
                return nil
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
              class Exec < Thor
         
     | 
| 
      
 87 
     | 
    
         
            +
                desc "launch [SESSION]", "Starts/resumes a session with given SESSION name"
         
     | 
| 
      
 88 
     | 
    
         
            +
                long_desc <<LAUNCH_DESC
         
     | 
| 
      
 89 
     | 
    
         
            +
            You can preset sessions by placing a yml file named '.rtmux.conf' on $HOME.
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            $ rtmux
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            or
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            $ rtmux launch
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            => Starts/resumes a session with default name(= hostname)
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            $ rtmux [SESSION]
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            or
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            $ rtmux launch [SESSION]
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            => Starts/resumes a session with given SESSION name
         
     | 
| 
      
 107 
     | 
    
         
            +
            LAUNCH_DESC
         
     | 
| 
      
 108 
     | 
    
         
            +
                method_option :verbose, type: :boolean
         
     | 
| 
      
 109 
     | 
    
         
            +
                def launch(session = nil)
         
     | 
| 
      
 110 
     | 
    
         
            +
                  verbose = options.verbose?
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                  # read config
         
     | 
| 
      
 113 
     | 
    
         
            +
                  if File.exists? CONFIG_FILEPATH
         
     | 
| 
      
 114 
     | 
    
         
            +
                    puts "> Loading config file: #{CONFIG_FILEPATH}" if verbose
         
     | 
| 
      
 115 
     | 
    
         
            +
                    configs = RTmux::parse_config(CONFIG_FILEPATH) || {}
         
     | 
| 
      
 116 
     | 
    
         
            +
                  else
         
     | 
| 
      
 117 
     | 
    
         
            +
                    puts "> Loading sample config" if verbose
         
     | 
| 
      
 118 
     | 
    
         
            +
                    configs = RTmux::parse_config(RTMUX_CONFIG_EXAMPLE) || {}
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
      
 120 
     | 
    
         
            +
                  config = configs[session] || {}
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                  # create/resume session
         
     | 
| 
      
 123 
     | 
    
         
            +
                  RTmux::TmuxHelper.new(RTmux::replace(config["session_name"]) || session){|tmux|
         
     | 
| 
      
 124 
     | 
    
         
            +
                    unless tmux.session_created?
         
     | 
| 
      
 125 
     | 
    
         
            +
                      # create, split windows and run commands in them
         
     | 
| 
      
 126 
     | 
    
         
            +
                      if windows = config["windows"]
         
     | 
| 
      
 127 
     | 
    
         
            +
                        windows.each{|window|
         
     | 
| 
      
 128 
     | 
    
         
            +
                          window_name = RTmux::replace(window["name"])
         
     | 
| 
      
 129 
     | 
    
         
            +
                          tmux.create_window(window_name, cmd: RTmux::replace(window["cmd"]))
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                          if split = window["split"]
         
     | 
| 
      
 132 
     | 
    
         
            +
                            tmux.split(window_name, vertical: split["vertical"], percentage: split["percentage"])
         
     | 
| 
      
 133 
     | 
    
         
            +
                            if panes = split["panes"]
         
     | 
| 
      
 134 
     | 
    
         
            +
                              panes.each{|pane|
         
     | 
| 
      
 135 
     | 
    
         
            +
                                tmux.cmd(RTmux::replace(pane["cmd"]), window_name, pane: pane["pane"])
         
     | 
| 
      
 136 
     | 
    
         
            +
                              }
         
     | 
| 
      
 137 
     | 
    
         
            +
                            end
         
     | 
| 
      
 138 
     | 
    
         
            +
                          end
         
     | 
| 
      
 139 
     | 
    
         
            +
                        }
         
     | 
| 
      
 140 
     | 
    
         
            +
                      else
         
     | 
| 
      
 141 
     | 
    
         
            +
                        tmux.create_window  # blank window
         
     | 
| 
      
 142 
     | 
    
         
            +
                      end
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
                      # focus on window
         
     | 
| 
      
 145 
     | 
    
         
            +
                      if focus = config["focus"]
         
     | 
| 
      
 146 
     | 
    
         
            +
                        tmux.focus(RTmux::replace(focus["name"]), pane: focus["pane"])
         
     | 
| 
      
 147 
     | 
    
         
            +
                      end
         
     | 
| 
      
 148 
     | 
    
         
            +
                    end
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                    # finally, attach to it
         
     | 
| 
      
 151 
     | 
    
         
            +
                    tmux.attach
         
     | 
| 
      
 152 
     | 
    
         
            +
                  }
         
     | 
| 
      
 153 
     | 
    
         
            +
                end
         
     | 
| 
      
 154 
     | 
    
         
            +
                
         
     | 
| 
      
 155 
     | 
    
         
            +
                desc "genconfig", "Generate a sample config file at #{CONFIG_FILEPATH}"
         
     | 
| 
      
 156 
     | 
    
         
            +
                method_option :overwrite, type: :boolean
         
     | 
| 
      
 157 
     | 
    
         
            +
                def genconfig
         
     | 
| 
      
 158 
     | 
    
         
            +
                  overwrite = options.overwrite?
         
     | 
| 
      
 159 
     | 
    
         
            +
                  if !overwrite && File.exists?(CONFIG_FILEPATH)
         
     | 
| 
      
 160 
     | 
    
         
            +
                    puts "* config file already exists at: #{CONFIG_FILEPATH}"
         
     | 
| 
      
 161 
     | 
    
         
            +
                  else
         
     | 
| 
      
 162 
     | 
    
         
            +
                    File.open(CONFIG_FILEPATH, "w"){|f|
         
     | 
| 
      
 163 
     | 
    
         
            +
                      f.write RTMUX_CONFIG_EXAMPLE
         
     | 
| 
      
 164 
     | 
    
         
            +
                    }
         
     | 
| 
      
 165 
     | 
    
         
            +
                    puts "* sample config file was written at: #{CONFIG_FILEPATH}"
         
     | 
| 
      
 166 
     | 
    
         
            +
                  end
         
     | 
| 
      
 167 
     | 
    
         
            +
                end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                def method_missing(method, *args)
         
     | 
| 
      
 170 
     | 
    
         
            +
                  launch method.to_s
         
     | 
| 
      
 171 
     | 
    
         
            +
                end
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                # when run without any command, it just launches with no parameter
         
     | 
| 
      
 174 
     | 
    
         
            +
                default_task :launch
         
     | 
| 
      
 175 
     | 
    
         
            +
              end
         
     | 
| 
      
 176 
     | 
    
         
            +
            end
         
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
            RTmux::Exec::start(ARGV)
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
    
        data/lib/rtmux.rb
    ADDED
    
    | 
         @@ -0,0 +1,104 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # coding: UTF-8
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # lib/rtmux.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            # 
         
     | 
| 
      
 6 
     | 
    
         
            +
            # help create/resume tmux sessions
         
     | 
| 
      
 7 
     | 
    
         
            +
            # 
         
     | 
| 
      
 8 
     | 
    
         
            +
            # created on : 2012.11.22
         
     | 
| 
      
 9 
     | 
    
         
            +
            # last update: 2013.08.13
         
     | 
| 
      
 10 
     | 
    
         
            +
            # 
         
     | 
| 
      
 11 
     | 
    
         
            +
            # by meinside@gmail.com
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            module RTmux
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 16 
     | 
    
         
            +
              tmux helper class
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              @note example:
         
     | 
| 
      
 19 
     | 
    
         
            +
                tmux = TmuxHelper.new("some_session_name")
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                tmux.create_window("window1")
         
     | 
| 
      
 22 
     | 
    
         
            +
                tmux.create_window("window2")
         
     | 
| 
      
 23 
     | 
    
         
            +
                tmux.create_window("logs", cmd: "cd /var/log; ls")
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                tmux.split("window1")
         
     | 
| 
      
 26 
     | 
    
         
            +
                tmux.focus("window1", pane: 2)
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                tmux.split("window2", vertical: false, percentage: 30)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                tmux.attach
         
     | 
| 
      
 31 
     | 
    
         
            +
            =end
         
     | 
| 
      
 32 
     | 
    
         
            +
              class TmuxHelper
         
     | 
| 
      
 33 
     | 
    
         
            +
                # initializer
         
     | 
| 
      
 34 
     | 
    
         
            +
                # @param session_name [String] session name
         
     | 
| 
      
 35 
     | 
    
         
            +
                def initialize(session_name, &block)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @session_name = session_name || `hostname`.strip
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  if block_given?
         
     | 
| 
      
 39 
     | 
    
         
            +
                    yield self
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                # check if session is already created or not
         
     | 
| 
      
 44 
     | 
    
         
            +
                # @return [true,false]
         
     | 
| 
      
 45 
     | 
    
         
            +
                def session_created?
         
     | 
| 
      
 46 
     | 
    
         
            +
                  `tmux has-session -t #{@session_name} 2> /dev/null`
         
     | 
| 
      
 47 
     | 
    
         
            +
                  $?.exitstatus != 1
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                # check if window is already created or not
         
     | 
| 
      
 51 
     | 
    
         
            +
                # @param window_name [String] window name
         
     | 
| 
      
 52 
     | 
    
         
            +
                # @return [true,false]
         
     | 
| 
      
 53 
     | 
    
         
            +
                def window_created?(window_name)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  window_name ? `tmux list-windows -t #{@session_name} -F \"\#{window_name}\" 2> /dev/null` =~ /^#{window_name}$/ : false
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                # create window with given name and options
         
     | 
| 
      
 58 
     | 
    
         
            +
                # @param name [String] window name
         
     | 
| 
      
 59 
     | 
    
         
            +
                # @param options [Hash] options
         
     | 
| 
      
 60 
     | 
    
         
            +
                def create_window(name = nil, options = {cmd: nil})
         
     | 
| 
      
 61 
     | 
    
         
            +
                  if session_created?
         
     | 
| 
      
 62 
     | 
    
         
            +
                    unless window_created?(name)
         
     | 
| 
      
 63 
     | 
    
         
            +
                      `tmux new-window -t #{@session_name} #{name.nil? ? "" : "-n #{name}"}`
         
     | 
| 
      
 64 
     | 
    
         
            +
                    else
         
     | 
| 
      
 65 
     | 
    
         
            +
                      return  # don't create duplicated windows
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
                  else
         
     | 
| 
      
 68 
     | 
    
         
            +
                    `tmux new-session -s #{@session_name} #{name.nil? ? "" : "-n #{name}"} -d`
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
                  cmd(options[:cmd], name) if options && options[:cmd]
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                # execute command
         
     | 
| 
      
 74 
     | 
    
         
            +
                # @param cmd [String] command
         
     | 
| 
      
 75 
     | 
    
         
            +
                # @param window [String] window
         
     | 
| 
      
 76 
     | 
    
         
            +
                # @param options [Hash] options
         
     | 
| 
      
 77 
     | 
    
         
            +
                def cmd(cmd, window, options = {pane: nil})
         
     | 
| 
      
 78 
     | 
    
         
            +
                  `tmux send-keys -t #{@session_name}:#{window}#{options && options[:pane] ? ".#{options[:pane]}" : ""} '#{cmd}' C-m`
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                # focus on given window
         
     | 
| 
      
 82 
     | 
    
         
            +
                # @param window [String] window
         
     | 
| 
      
 83 
     | 
    
         
            +
                # @param options [Hash] options
         
     | 
| 
      
 84 
     | 
    
         
            +
                def focus(window, options = {pane: nil})
         
     | 
| 
      
 85 
     | 
    
         
            +
                  `tmux select-window -t #{@session_name}:#{window}`
         
     | 
| 
      
 86 
     | 
    
         
            +
                  `tmux select-pane -t #{options[:pane]}` if options && options[:pane]
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                # split given window
         
     | 
| 
      
 90 
     | 
    
         
            +
                # @param window [String] window
         
     | 
| 
      
 91 
     | 
    
         
            +
                # @param options [Hash] options
         
     | 
| 
      
 92 
     | 
    
         
            +
                def split(window, options = {vertical: true, percentage: 50, pane: nil})
         
     | 
| 
      
 93 
     | 
    
         
            +
                  `tmux split-window #{options && options[:vertical] ? "-h" : "-v"} -p #{options[:percentage]} -t #{@session_name}:#{window}#{options && options[:pane] ? ".#{options[:pane]}" : ""}`
         
     | 
| 
      
 94 
     | 
    
         
            +
                end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                # attach to current session
         
     | 
| 
      
 97 
     | 
    
         
            +
                def attach
         
     | 
| 
      
 98 
     | 
    
         
            +
                  `tmux attach -t #{@session_name}`
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                attr_reader :session_name
         
     | 
| 
      
 102 
     | 
    
         
            +
              end
         
     | 
| 
      
 103 
     | 
    
         
            +
            end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,60 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: rtmux
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Sungjin Han
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-08-13 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: thor
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            description: help create/resume tmux sessions
         
     | 
| 
      
 28 
     | 
    
         
            +
            email: meinside@gmail.com
         
     | 
| 
      
 29 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 30 
     | 
    
         
            +
            - rtmux
         
     | 
| 
      
 31 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 32 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 33 
     | 
    
         
            +
            files:
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/rtmux.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - bin/rtmux
         
     | 
| 
      
 36 
     | 
    
         
            +
            homepage: http://github.com/meinside/rtmux
         
     | 
| 
      
 37 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 38 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 39 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 40 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 41 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 42 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 43 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 44 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 45 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 46 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 47 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 48 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 49 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 50 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 51 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 52 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 53 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 54 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 55 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 56 
     | 
    
         
            +
            rubygems_version: 2.0.3
         
     | 
| 
      
 57 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 58 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 59 
     | 
    
         
            +
            summary: tmux helper
         
     | 
| 
      
 60 
     | 
    
         
            +
            test_files: []
         
     |