mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
terminal: Open a new window instead of split on older tmux versions (<1.9)
If an old version is detected (<1.9), create a new window instead of split: the reason is that there is no easy way to get the active pane height if no nested formats are supported. (From OE-Core rev: 457bd6297ae99627c5f596c3c09086d787d5a5ab) Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
5056581b16
commit
e864f71f4c
+15
-5
@@ -131,7 +131,7 @@ class TmuxRunning(Terminal):
|
|||||||
raise UnsupportedTerminal('tmux is not running')
|
raise UnsupportedTerminal('tmux is not running')
|
||||||
|
|
||||||
if not check_tmux_pane_size('tmux'):
|
if not check_tmux_pane_size('tmux'):
|
||||||
raise UnsupportedTerminal('tmux pane too small')
|
raise UnsupportedTerminal('tmux pane too small or tmux < 1.9 version is being used')
|
||||||
|
|
||||||
Terminal.__init__(self, sh_cmd, title, env, d)
|
Terminal.__init__(self, sh_cmd, title, env, d)
|
||||||
|
|
||||||
@@ -218,6 +218,12 @@ def spawn(name, sh_cmd, title=None, env=None, d=None):
|
|||||||
|
|
||||||
def check_tmux_pane_size(tmux):
|
def check_tmux_pane_size(tmux):
|
||||||
import subprocess as sub
|
import subprocess as sub
|
||||||
|
# On older tmux versions (<1.9), return false. The reason
|
||||||
|
# is that there is no easy way to get the height of the active panel
|
||||||
|
# on current window without nested formats (available from version 1.9)
|
||||||
|
vernum = check_terminal_version("tmux")
|
||||||
|
if vernum and LooseVersion(vernum) < '1.9':
|
||||||
|
return False
|
||||||
try:
|
try:
|
||||||
p = sub.Popen('%s list-panes -F "#{?pane_active,#{pane_height},}"' % tmux,
|
p = sub.Popen('%s list-panes -F "#{?pane_active,#{pane_height},}"' % tmux,
|
||||||
shell=True,stdout=sub.PIPE,stderr=sub.PIPE)
|
shell=True,stdout=sub.PIPE,stderr=sub.PIPE)
|
||||||
@@ -229,14 +235,16 @@ def check_tmux_pane_size(tmux):
|
|||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
if size/2 >= 19:
|
|
||||||
return True
|
return size/2 >= 19
|
||||||
return False
|
|
||||||
|
|
||||||
def check_terminal_version(terminalName):
|
def check_terminal_version(terminalName):
|
||||||
import subprocess as sub
|
import subprocess as sub
|
||||||
try:
|
try:
|
||||||
p = sub.Popen(['sh', '-c', '%s --version' % terminalName],stdout=sub.PIPE,stderr=sub.PIPE)
|
cmdversion = '%s --version' % terminalName
|
||||||
|
if terminalName.startswith('tmux'):
|
||||||
|
cmdversion = '%s -V' % terminalName
|
||||||
|
p = sub.Popen(['sh', '-c', cmdversion], stdout=sub.PIPE,stderr=sub.PIPE)
|
||||||
out, err = p.communicate()
|
out, err = p.communicate()
|
||||||
ver_info = out.rstrip().split('\n')
|
ver_info = out.rstrip().split('\n')
|
||||||
except OSError as exc:
|
except OSError as exc:
|
||||||
@@ -251,6 +259,8 @@ def check_terminal_version(terminalName):
|
|||||||
vernum = ver.split(' ')[-1]
|
vernum = ver.split(' ')[-1]
|
||||||
if ver.startswith('GNOME Terminal'):
|
if ver.startswith('GNOME Terminal'):
|
||||||
vernum = ver.split(' ')[-1]
|
vernum = ver.split(' ')[-1]
|
||||||
|
if ver.startswith('tmux'):
|
||||||
|
vernum = ver.split()[-1]
|
||||||
return vernum
|
return vernum
|
||||||
|
|
||||||
def distro_name():
|
def distro_name():
|
||||||
|
|||||||
Reference in New Issue
Block a user