35

I am using tmux in a ssh session. I am using multiple panes and windows.

I have mouse-mode enabled which works great so far.

When I select text it gets automatically copied to the tmux-buffer and the window jumps to the end. So if i scroll up and click on something it jumps to the end... When I switch between panes a copy command is triggered and the output goes to the end. I really dislike this behaviour and I'd rather have to press a button to copy or click q to finish copy mode or something.

Is it possible to disable auto-copy // auto jump to the end on mouse button release?

I am running tmux 2.0 on the server through ssh. In Terminator on the client.

# config                                                                        
#{{{                                                                            
                                                                                
# 0 is too far from ` ;)                                                        
set -g base-index 1                                                             
                                                                                
# Automatically set window title                                                
# set-window-option -g automatic-rename on                                      
# set-option -g set-titles on                                                   
                                                                                
set -g default-terminal screen-256color                                         
set -g history-limit 10000                                                      
                                                                                
set -g status-keys vi                                                           
setw -g mode-keys vi                                                            
setw -g mode-mouse on                                                           
set -g mouse-select-window on                                                   
set -g mouse-select-pane on                                                     
set -g mouse-resize-pane on                                                     
                                                                                
# No delay for escape key press                                                 
set -sg escape-time 0                                                           
                                                                                
#}}}                                                                            
                                                                                
# bind keys                                                                     
#{{{                                                                            
# Reload tmux config                                                            
bind r source-file ~/.tmux.conf                                                 
                                                                                
# remap prefix to Control + a                                                      
set -g prefix C-a                                                                  
# bind 'C-a C-a' to type 'C-a'                                                     
bind C-a send-prefix                                                               
unbind C-b                                                                         
                                                                                   
# switch tabs with <b n>                                                           
bind b previous-window                                                             
                                                                                   
# vi like paste                                                                    
bind-key p paste-buffer                                                            
                                                                                   
# quick pane cycling                                                               
unbind a                                                                           
bind a select-pane -t :.+                                                          
                                                                                   
bind-key v split-window -h                                                         
bind-key s split-window -v                                                         
                                                                                   
bind-key J resize-pane -D 10                                                       
bind-key K resize-pane -U 10                                                       
bind-key H resize-pane -L 10                                                       
bind-key L resize-pane -R 10                                                       
                                                                                   
bind-key M-j resize-pane -D 2                                                      
bind-key M-k resize-pane -U 2                                                      
bind-key M-h resize-pane -L 2                                                      
bind-key M-l resize-pane -R 2                                                      
                                                                                   
# Vim style pane selection                                                         
bind h select-pane -L                                                              
bind j select-pane -D                                                              
bind k select-pane -U        
bind -n M-Down select-pane -D                                                   
                                                                                
# find asci keycodes with "sudo showkey -a" - works only tmux >1.7              
# us-keyboard like [ ]                                                          
bind-key -r 0xc3 display 'c3 prefix binding hack'                               
bind-key -r 0xb6 copy-mode # ö                                                  
bind-key -r 0xa3 paste-buffer # ä                                               
# us { }                                                                        
bind-key -r 0x96 swap-pane -U # Ö - swap pane to prev position                  
bind-key -r 0x84 swap-pane -D # Ä - to next pos  
                               
#}}}                         



       
Marcel
  • 1,034
  • 1
  • 17
  • 35
stfl
  • 553
  • 5
  • 12

6 Answers6

18

As of tmux 2.5 you should use

unbind -T copy-mode-vi MouseDragEnd1Pane
Evmorov
  • 1,134
  • 22
  • 28
  • 2
    If you also want this behavior for the keyboard use: `bind-key -T copy-mode-vi y send-keys -X copy-selection`. Then you can use `y` to yank the selection without jumping to the bottom. – gitaarik Feb 22 '19 at 12:27
  • Apparently this syntax has changed as of v2.8 – `unbind-key` instead of `unbind` is [reported to work](https://github.com/tmux/tmux/issues/140#issuecomment-443089576). – Alex Ryan Jun 28 '21 at 23:08
9

I'd say the easiest way nowadays is to just use the tmux-yank plugin and add the yank_action configuration option:

# ~/.tmux.conf

set -g @yank_action 'copy-pipe' # or 'copy-pipe-and-cancel' for the default

Additionally, tmux-yank also manages for you the differences between OS clipboards (Linux, macOS, WSL) and adds some very useful shortcuts for copying the current command line content and cwd. Highly recommended.

dlouzan
  • 675
  • 7
  • 16
6

i was able to get mouse selection to stop jumping to the bottom in tmux (version 2.2) by adding the following to my ~/.tmux.conf:

setw -g mouse on
setw -g mode-keys vi
unbind -t vi-copy MouseDragEnd1Pane

caveat: this has the side effect of turning on vi mode.

i found this issue to be relevant, and found the configuration above in these dotfiles.

schpet
  • 9,664
  • 6
  • 32
  • 35
6

The following worked for me. Thanks to @stagebind on github!

For vi-mode config, https://github.com/tmux/tmux/issues/140#issuecomment-321144647:

unbind -T copy-mode-vi MouseDragEnd1Pane

For non vi-mode config, https://github.com/tmux/tmux/issues/140#issuecomment-302742783:

# 2.4+
unbind -T copy-mode MouseDragEnd1Pane
# 2.2 - 2.3
unbind -t vi-copy MouseDragEnd1Pane

Took me some time to get the correct answer.

I am also using Alacritty and cannot enable copy on mouse select because of an issue with MouseDragEnd1Pane as described in: https://github.com/jwilm/alacritty/issues/1002.

Selecting the text with the mouse and then if I need copy it using the key y works for me with this config:

bind -T copy-mode-vi y send -X copy-pipe "reattach-to-user-namespace pbcopy"\; display-message "copied to system clipboard"

Complete config for copy and pasting with mouse and vi key binding support looks like this:

set-option -g default-command "reattach-to-user-namespace -l bash"
set -g mouse on

bind P paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send -X copy-pipe "reattach-to-user-namespace pbcopy"\; display-message "copied to system clipboard"
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle

## don't jump to bottom on mouse select - when vi-mode enabled - 2.4+
#unbind -T copy-mode MouseDragEnd1Pane
## don't jump to bottom on mouse select - when vi-mode enabled - 2.2 - 2.3
#unbind -t vi-copy MouseDragEnd1Pane
## don't jump to bottom on mouse select - when vi-mode enabled
unbind -T copy-mode-vi MouseDragEnd1Pane

I am using OS X.

krafts
  • 158
  • 1
  • 10
  • Have you noticed you can't copy more than X lines?.. it looks like cannot move huge buffers to the clipboard, how do you deal with it? – calbertts Jul 18 '20 at 12:50
  • 1
    Removing `reattach-to-user-namespace` before `pbcopy` fixes the clipboard limit issue. – calbertts Jul 18 '20 at 13:22
4

as of tmux 2.2 the feature copy-selection -x is available. With the following options tmux stays in copy mode after selecting. Choose the one that fits your mode setting.

bind-key -t vi-copy MouseDragEnd1Pane copy-selection -x
bind-key -t emacs-copy MouseDragEnd1Pane copy-selection -x
stfl
  • 553
  • 5
  • 12
1

Looks like upgrading to tmux 2.1 might solve your problem.

In version 2.1 they changed mouse-mode, mouse-select-window/pane etc with single mouse switch. Mouse actions now generates key events that can be mapped as ordinary keys.

Dean Rather
  • 31,756
  • 15
  • 66
  • 72