oe.terminal: add tmux classes
This adds two new Terminal classes. It's separated into two, so that opening a split inside a tmux window is preferred to the other terminal types, but opening a tmux session is prioritized only slightly higher than screen. - tmuxrunning: Open a new pane in the current running tmux window. Requires that the TMUX variable be added to the env whitelist to use it. - tmux: Open a new tmux session (From OE-Core rev: 31c58d584f838738a6b6258b87b1c7e6ca173086) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
078d3cbc28
commit
59e425455f
|
@ -105,6 +105,43 @@ class Screen(Terminal):
|
|||
else:
|
||||
logger.warn(msg)
|
||||
|
||||
class TmuxRunning(Terminal):
|
||||
"""Open a new pane in the current running tmux window"""
|
||||
command = 'tmux split-window {command}'
|
||||
priority = 2.75
|
||||
|
||||
def __init__(self, sh_cmd, title=None, env=None, d=None):
|
||||
if not bb.utils.which(os.getenv('PATH'), 'tmux'):
|
||||
raise UnsupportedTerminal('tmux is not installed')
|
||||
|
||||
if not os.getenv('TMUX'):
|
||||
raise UnsupportedTerminal('tmux is not running')
|
||||
|
||||
Terminal.__init__(self, sh_cmd, title, env, d)
|
||||
|
||||
class TmuxNewSession(Terminal):
|
||||
"""Start a new tmux session and window"""
|
||||
command = 'tmux new -d -s devshell -n devshell {command}'
|
||||
priority = 0.75
|
||||
|
||||
def __init__(self, sh_cmd, title=None, env=None, d=None):
|
||||
if not bb.utils.which(os.getenv('PATH'), 'tmux'):
|
||||
raise UnsupportedTerminal('tmux is not installed')
|
||||
|
||||
# TODO: consider using a 'devshell' session shared amongst all
|
||||
# devshells, if it's already there, add a new window to it.
|
||||
window_name = 'devshell-%i' % os.getpid()
|
||||
|
||||
self.command = 'tmux new -d -s {0} -n {0} {{command}}'.format(window_name)
|
||||
Terminal.__init__(self, sh_cmd, title, env, d)
|
||||
|
||||
attach_cmd = 'tmux att -t {0}'.format(window_name)
|
||||
msg = 'Tmux started. Please connect in another terminal with `tmux att -t {0}`'.format(window_name)
|
||||
if d:
|
||||
bb.event.fire(bb.event.LogExecTTY(msg, attach_cmd, 0.5, 10), d)
|
||||
else:
|
||||
logger.warn(msg)
|
||||
|
||||
class Custom(Terminal):
|
||||
command = 'false' # This is a placeholder
|
||||
priority = 3
|
||||
|
|
Loading…
Reference in New Issue