tmux: New Windows in the Current Working Directory

I could have sworn that tmux used to launch new shells in the current working directory of my active shell when it spawned new windows/panes. In this post, I discover that it wasn't my imagination, that it no longer happens by default, and how I can get the behaviour back again.

Continue reading… Save to Instapaper

For a while, tmux would default to creating new windows (and splits) with the shell in the current working directory (CWD) of my existing pane. As of quite recently, that seems to have stopped working; now all my new shells are popping up with the CWD set to my home directory. That’s almost never where I want to be, and the CWD of the previous window is at least as good a starting point as any.

It turns out, according to this question on Stack Exchange, that the default behaviour used to be, on tmux 1.7:

  • If default-path is set on the session, set the current working directory of a new window (or split) to that directory; or

  • if default-path is unset, use the current working directory of the current window.

In tmux 1.9, the default-path option was apparently removed. It’s definitely not mentioned in the man page on my installed version (1.9a). That’s kind of a shame, because setting the default path for a session would be a useful feature (say, for example, setting it to the root of a project). Still, let’s see about making sure the new-window-related shortcuts within tmux do the right thing. Add the following to ~/.tmux.conf:

# Set the current working directory based on the current pane's current
# working directory (if set; if not, use the pane's starting directory)
# when creating # new windows and splits.
bind-key c new-window -c '#{pane_current_path}'
bind-key '"' split-window -c '#{pane_current_path}'
bind-key % split-window -h -c '#{pane_current_path}'

which updates the current key bindings to use the current pane’s working directory. I’ve also updated my new-session shortcut, too:

bind-key S command-prompt "new-session -A -c '#{pane_current_path}' -s '%%'"

Much better! You can find my entire tmux configuration up on GitHub: tmux.conf. Most of the rest of the configuration is around customising the status bar.

About this article

Article metadata
Attribute Value
First published
Last updated
Category Internet
License Creative Commons Licence