from subprocess import call session_name = 'myservices' class Tmux: def __init__(self, panes, view_count): self.panes = panes self.view_count = view_count def setup(self): call(['tmux', '-2', 'new-session', '-d', '-s', session_name, '-x', '120', '-y', '120']) if self.panes: call(['tmux', 'set', '-g', 'aggressive-resize', 'on']) call(['tmux', 'set', '-g', 'pane-border-status', 'top']) call([ 'tmux', 'set', '-g', 'pane-border-format', '\'#{pane_index} #{pane_title}\'']) def run_command(self, index, title, command): if self.panes: if index < (self.view_count - 1): call(['tmux', 'split-window', '-v']) call(['tmux', 'select-layout', 'tiled']) call(['tmux', 'select-pane', '-t', str(index)]) call([ 'tmux', 'send-keys', 'printf \'\\033]2;{}\\033\\\\\''.format(title), 'C-m']) else: if index < (self.view_count - 1): call(['tmux', 'new-window']) call(['tmux', 'select-window', '-t', str(index)]) call(['tmux', 'rename-window', title]) call(['tmux', 'send-keys', command, 'C-m']) def attach(): call(['tmux', '-2', 'attach-session', '-t', session_name]) def stop(): call(['tmux', 'kill-session', '-t', session_name])