How can I make GNU Screen start a new window at the CURRENT working directory?

By default, when you create a new window in GNU Screen, it will start in the directory where Screen is invoked. I want to start a new window in GNU Screen at the current working directory of the window I'm currently in. How can I do that?


Solution 1:

See the GNU Screen chdir command. All new windows created in Screen use this as their initial directory. Using this, you can do something like:

chdir /home/dan/newscreendir
screen

And your new window (along with any future created windows) will be in the set directory. If it's always going to be the current working directory you may be able to set something up in your screenrc to do this one in one command.

See the GNU Screen man page. It's quite comprehensive.

Screen chdir command

Screen cannot access your shell variable nor execute backticked commands. The closest I can get to doing it in one click is with a small Bash script like this:

screen -X setenv currentdir `pwd`
screen -X eval 'chdir $currentdir' screen

Or more compactly:

screen -X eval "chdir $PWD"

screen -X sends the command to the currently running Screen session. The first line creates a variable called currentdir. The second line sends the currentdir to the chdir command and then creates a new Screen window.

Solution 2:

The simple solution is to put the following strings in your ~/.screenrc file and then use Ctrl + X to open new windows:

bind ^x

bind ^x stuff "screen -X chdir \$PWD;screen^M"

http://www.michaelkelleher.info had more tips for intermediate/advanced screen users, but since that site seems to have gone away, you can find the archive of it in Michael Kelleher's Personal Website on Archive.org.

Solution 3:

I didn't find any solution that would work when you already had a process running in a window, so I came up with my own idea. I added following lines to my .bash_profile file:

scr_cd()
{
    cd $1
    screen -X chdir $PWD
}
if [ "$TERM" == 'screen' ]; then
    alias cd=scr_cd
fi

The screen's working directory is updated every time you change a directory. Someone may not like this approach, but it works like a charm.

Solution 4:

Perhaps this is specific to Byobu, but simply typing screen opens a new window in the current directory.