diff -urN a/lib/portage/output.py b/lib/portage/output.py --- a/lib/portage/output.py 2019-02-20 09:44:36.000000000 +0900 +++ b/lib/portage/output.py 2019-03-11 12:13:16.957281932 +0900 @@ -235,6 +235,7 @@ return len(tmp) _legal_terms_re = re.compile(r'^(xterm|xterm-color|Eterm|aterm|rxvt|screen|kterm|rxvt-unicode|gnome|interix|tmux|st-256color)') +_screen_tmux_re = re.compile(r'^(screen|tmux)') _disable_xtermTitle = None _max_xtermTitle_len = 253 @@ -251,7 +252,10 @@ if len(mystr) > _max_xtermTitle_len: mystr = mystr[:_max_xtermTitle_len] if not raw: - mystr = '\x1b]0;%s\x07' % mystr + if _screen_tmux_re.match(os.environ['TERM']) is None: + mystr = '\x1b]0;%s\x07' % mystr + else: + mystr = '\x1bk%s\x1b\\' % mystr # avoid potential UnicodeEncodeError mystr = _unicode_encode(mystr, @@ -294,9 +298,13 @@ home = os.environ.get('HOME', '') if home != '' and pwd.startswith(home): pwd = '~' + pwd[len(home):] - default_xterm_title = '\x1b]0;%s@%s:%s\x07' % ( + default_xterm_title = '%s@%s:%s' % ( os.environ.get('LOGNAME', ''), os.environ.get('HOSTNAME', '').split('.', 1)[0], pwd) + if _screen_tmux_re.match(os.environ['TERM']) is None: + default_xterm_title = '\x1b]0;%s\x07' % default_xterm_title + else: + default_xterm_title = '\x1bk%s\x1b\\' % default_xterm_title xtermTitle(default_xterm_title, raw=True) def notitles():