ubuntutmuxbyobu

Make Byobu open new screens in home directory


I don't know if this is something that's changed in a recent version of byobu, but now when I create a new screen, the new screen is in the same directory as my current window. At first this wasn't too annoying, a simple "cd ~" would get me where I wanted. But I've been noticing strange things. During a gem install, if I create a new window, I end up inside the directory that the gem is being installed to ( when using rbenv ).

I just want this to stop. How do I set up byobu/tmux so that it opens all new windows in my home directory?

I've looked through a few files, but I can't seem to see any commands ( such as errant 'chdir' ) that would be causing this.


Solution

  • In Ubuntu, I can get the desired behavior by adding the following line to ${HOME}/.byobu/.tmuxrc :

    set-option -g default-path $HOME
    

    This option is document in tmux's manual page:

    set-option [-agoqsuw] [-t target-session | target-window] option value
                  (alias: set)
            Set a window option with -w (equivalent to the set-window-option
            command), a server option with -s, otherwise a session option.
    
            If -g is specified, the global session or window option is set.
            With -a, and if the option expects a string, value is appended
            to the existing setting.  The -u flag unsets an option, so a session
            inherits the option from the global options.  It is not possible to
            unset a global option.
    
            The -o flag prevents setting an option that is already set.
    
            The -q flag suppresses the informational message (as if the quiet
            server option was set).
    
            Available window options are listed under set-window-option.
    
            value depends on the option and may be a number, a string, or a flag
            (on, off, or omitted to toggle).
    
            Available server options are:
    
            <snip>
    
            default-path path
    
            Set the default working directory for new panes.  If empty (the
            default), the working directory is determined from the process running
            in the active pane, from the command line environment or from the
            working directory where the session was created.  Otherwise the same
            options are available as for the -c flag to new-window.
    

    I initially tried with set-option -g default-path ~, but it appears that tmux doesn't understand that alias.

    Update: the above doesn't work with byobu 5.92 (maybe other versions) and tmux 1.9, as tmux has removed the default-path option. It seems the byobu dev was using that to get the behavior where new windows open in the CWD, whereas I and the questioner wanted it to open in the HOME dir by default. In the new default bindings in /usr/share/byobu/keybindings/f-keys.tmux I found this:

    bind-key -n F2 new-window -c "#{pane_current_path}" \; rename-window "-"
    bind-key -n C-F2 display-panes \; split-window -h -c "#{pane_current_path}"
    bind-key -n S-F2 display-panes \; split-window -v -c "#{pane_current_path}"
    

    To get the desired behavior of always making byobu open new screens in your home directory, add the following to ~/.byobu/keybindings.tmux:

    bind-key -n F2 new-window -c "$HOME" \; rename-window "-"
    bind-key -n C-F2 display-panes \; split-window -h -c "$HOME"
    bind-key -n S-F2 display-panes \; split-window -v -c "$HOME"