Project

paned_repl

0.0
No commit activity in last 3 years
No release in over 3 years
A TMux wrapper for dynamic multiplexing in a REPL
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Installation

To launch a REPL (using Pry), first do this in Bash:

gem install paned_repl
paned_repl init
sh paned_repl.sh

Usage

inside the REPL, require whatever programs you need.

There is a Ruby wrapper over TMux commands. For example:

# the 'main pane' receives tmux commands
# this refers to a root Tmux session that is automatically created.
# launching subsequent Tmux sessions is not implemented
session = PanelRepl.sessions.values.first

# create a new pane, but maintain focus on main frame.
# swaps positions so the main pane is always last
session.split_horizontal

# make the panes equal size
session.even_horizontal

new_pane_id = 0 # There are 2 total panes, and the main pane is always the last
                # Therefore (with 0-indexing) the new pane has an id of 0.
                # When a new pane is added, it always has the index of 0 and all other indexes
                # need to be incremented by one..

session.send_keys "echo hello", new_pane_id

There is intended to be one pane that handles direct user input. The other panes just receive commands through send_keys.

See ./lib/paned_repl/tmux.rb for more commands that can be used.

The generated paned_repl.sh script can be customized to run commands when the repl begins.

Gif:

asciicast