diff --git a/tests/fixtures/workspacebuilder/window_title_empty.yaml b/tests/fixtures/workspacebuilder/window_title_empty.yaml new file mode 100644 index 00000000000..fd840c6e00a --- /dev/null +++ b/tests/fixtures/workspacebuilder/window_title_empty.yaml @@ -0,0 +1,12 @@ +session_name: Window index example +windows: + - window_name: '' + panes: + - echo "This window has an empty title" + - window_name: "" + panes: + - echo "So is this." + window_index: 5 + - window_name: + panes: + - echo "And this one too." diff --git a/tests/test_workspacebuilder.py b/tests/test_workspacebuilder.py index 4aab73dafe8..d6fb9658291 100644 --- a/tests/test_workspacebuilder.py +++ b/tests/test_workspacebuilder.py @@ -673,3 +673,33 @@ def test_before_load_true_if_test_passes_with_args(server): with temp_session(server) as session: builder.build(session=session) + +def test_window_title(session): + yaml_config = loadfixture("workspacebuilder/window_title_empty.yaml") + s = session + sconfig = kaptan.Kaptan(handler='yaml') + sconfig = sconfig.import_config(yaml_config).get() + sconfig = config.expand(sconfig) + + builder = WorkspaceBuilder(sconf=sconfig) + + window_count = len(session._windows) # current window count + assert len(s._windows) == window_count + for w, wconf in builder.iter_create_windows(s): + if w['window_name'] == '': + assert True + else: + print("Wname: ", w['window_name']) + assert False + ''' + for w, wconf in builder.iter_create_windows(s): + for p in builder.iter_create_panes(w, wconf): + p = p + assert len(s._windows) == window_count + assert isinstance(w, Window) + assert w.show_window_option('main-pane-height') == 5 + + assert len(s._windows) == window_count + window_count += 1 + w.select_layout(wconf['layout']) + ''' diff --git a/tmuxp/config.py b/tmuxp/config.py index bea1df00811..063fe5ffb7b 100644 --- a/tmuxp/config.py +++ b/tmuxp/config.py @@ -209,7 +209,10 @@ def expand(sconf, cwd=None, parent=None): if 'session_name' in sconf: sconf['session_name'] = expandshell(sconf['session_name']) if 'window_name' in sconf: - sconf['window_name'] = expandshell(sconf['window_name']) + if not (sconf['window_name'] is None): + sconf['window_name'] = expandshell(sconf['window_name']) + else: + sconf['shell_command'] = 'tmux rename-session \'\'' if 'environment' in sconf: for key in sconf['environment']: val = sconf['environment'][key] diff --git a/tmuxp/workspacebuilder.py b/tmuxp/workspacebuilder.py index 2cb36492609..a4326e32426 100644 --- a/tmuxp/workspacebuilder.py +++ b/tmuxp/workspacebuilder.py @@ -384,6 +384,9 @@ def pane_has_same_path(p): if all(pane_has_same_path(p) for p in w.panes): wconf['start_directory'] = w.panes[0].current_path + if w.name == '': + empty_window_title = True + for p in w.panes: pconf = {'shell_command': []} @@ -410,6 +413,8 @@ def filter_interpretters_and_shells(): pconf = 'pane' wconf['panes'].append(pconf) + if empty_window_title: + pconf['shell_command'].append('tmux rename-session \'\'') sconf['windows'].append(wconf)