summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorDan McGregor <dan.mcgregor@usask.ca>2015-02-04 10:09:12 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-02-08 08:00:26 +0000
commit7c3b9a9a9fe0bcad7d7d3f0af84d6eb8546904f7 (patch)
tree0aea2ed7b6ec7b9901f6be00cc7f4fdd5f5ee76f /meta/lib
parentb7d91d30a59d591b96de5fad4a8fbf1f8158c40b (diff)
downloadast2050-yocto-poky-7c3b9a9a9fe0bcad7d7d3f0af84d6eb8546904f7.zip
ast2050-yocto-poky-7c3b9a9a9fe0bcad7d7d3f0af84d6eb8546904f7.tar.gz
terminal.py: add tmux new window option
Add a new terminal type that makes a new window in the running tmux session instead of splitting the window. 80x25 is not enough to run menuconfig inside a split window, so add the option to create a new window instead. Use the new window option by default when the split window would be less than 19 lines high. (From OE-Core rev: d7ef9e49b1c687279f6eb2c7abc32ff915714177) Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oe/terminal.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py
index 17d0904..54e3ffc 100644
--- a/meta/lib/oe/terminal.py
+++ b/meta/lib/oe/terminal.py
@@ -116,6 +116,24 @@ class TmuxRunning(Terminal):
if not os.getenv('TMUX'):
raise UnsupportedTerminal('tmux is not running')
+ if not check_tmux_pane_size('tmux'):
+ raise UnsupportedTerminal('tmux pane too small')
+
+ Terminal.__init__(self, sh_cmd, title, env, d)
+
+class TmuxNewWindow(Terminal):
+ """Open a new window in the current running tmux session"""
+ name = 'tmux-new-window'
+ command = 'tmux new-window -n "{title}" "{command}"'
+ priority = 2.70
+
+ 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 Tmux(Terminal):
@@ -184,6 +202,23 @@ def spawn(name, sh_cmd, title=None, env=None, d=None):
if pipe.returncode != 0:
raise ExecutionError(sh_cmd, pipe.returncode, output)
+def check_tmux_pane_size(tmux):
+ import subprocess as sub
+ try:
+ p = sub.Popen('%s list-panes -F "#{?pane_active,#{pane_height},}"' % tmux,
+ shell=True,stdout=sub.PIPE,stderr=sub.PIPE)
+ out, err = p.communicate()
+ size = int(out.strip())
+ except OSError as exc:
+ import errno
+ if exc.errno == errno.ENOENT:
+ return None
+ else:
+ raise
+ if size/2 >= 19:
+ return True
+ return False
+
def check_konsole_version(konsole):
import subprocess as sub
try:
OpenPOWER on IntegriCloud