Question

I'm using tmux 1.8 on Mac OS X 1.9.3 in the Terminal.app with an Apple magic mouse. I'm also using oh-my-zsh.

I can't scroll at all with the mouse when tmux is running. It just scrolls the whole terminal window up which goes beyond the output of tmux.

I've tried these settings in the tmux.conf file but nothing works:

set -g mode-mouse on
setw -g mode-mouse on
set -g terminal-overrides 'xterm*:smcup@:rmcup@' 

I made sure to reload the tmux.conf and also killed a sessions and created new ones just to make sure. And it still doesn't work.

Please help. Here is my entire tmux.conf

set -g default-terminal "xterm-256color"
set -g history-limit 10000
set -g status-interval 60

# status config
set -g status-utf8 on
set -g status-position top
set -g status-fg colour15
set -g status-bg colour24


# status line left side
set -g status-left-length 40
set -g status-left "#[fg=colour214,bold] #S #[fg=colour45] "

# status line right side
set -g status-right "#(~/.dotfiles/bin/tmux_battery_status) | %I:%M %p | %D "

# no more machine counting
set -g base-index 1
setw -g pane-base-index 1

# enable activity alerts
setw -g monitor-activity on
set -g visual-activity on

# window list colors
setw -g window-status-fg colour250
setw -g window-status-bg default
setw -g window-status-format " #I #W "
setw -g window-status-current-format "  #W "
setw -g window-status-current-fg colour118
setw -g window-status-current-bg default
setw -g window-status-activity-attr underscore,bold

# center the window list
set -g status-justify left

# pane colors
set -g pane-border-fg colour24
set -g pane-border-bg default
set -g pane-active-border-fg colour15
set -g pane-active-border-bg colour15

# command / message line colors
set -g message-fg colour15
set -g message-bg black
set -g message-attr bright

# rebind clear screen with Ctrl-l
bind C-l send-keys 'C-l'

# reload tmux conf
bind r source-file ~/.tmux.conf \; display "Reloaded tmux.conf!"

# setup reattach-to-user-namespace for copy and paste
set-option -g default-command "reattach-to-user-namespace -l $SHELL"

# use vim keybindings in copy mode
setw -g mode-keys vi

setw -g mode-mouse on
setw -g mouse-utf8 on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mouse-resize-pane on

# setup 'v' to begin selection as in vim
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

# update default binding of 'enter' to also use copy-pipe
unbind -t vi-copy Enter
bind -t vi-copy enter copy-pipe "reattach-to-user-namespace pbcopy"

# splitting panes
bind | split-window -h
bind - split-window -v

# fast resizing (-r for repeatable)
bind -r h resize-pane -L 5
bind -r j resize-pane -D 5
bind -r k resize-pane -U 5
bind -r l resize-pane -R 5

# tmux navigator with vim (-n allows binding without tmux prefix)
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-h) || tmux select-pane -L"
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-j) || tmux select-pane -D"
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-k) || tmux select-pane -U"
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-l) || tmux select-pane -R"
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys 'C-\\') || tmux select-pane -l"
Was it helpful?

Solution

I figured out the problem. If you use the default Terminal.app, the mouse events are not being passed to the applications running inside the terminal. To fix this problem, you need to install MouseTerm, which requires SIMBL to be installed. You can find all of the instructions here:

https://bitheap.org/mouseterm/

Note that if you're using Mac OS X 10.9, when you try to run the install script for MouseTerm it will say that the file is corrupted. To solve this problem, just manually copy the bundle file to the SIMBL plugins folder and restart Terminal.app for it to work. You can find the SIMBL plugins folder at this path:

/Library/Application Support/SIMBL/Plugins

OTHER TIPS

As of OS X 10.11 (Beta) El Capitan, neither SIMBL or MouseTerm is needed.

I had the same question, but you answered it in the OP:

set -g mode-mouse on
setw -g mode-mouse on
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

is all that is needed in 10.11 with Terminal.app - note other terminal emulators may still need SIMBL; it's an update to Terminal that means it no longer seems to be required, not due to OS X being updated per se.

There are some changes for Tmux 2.1

  • Mouse-mode has been rewritten. There's now no longer options for:

    • mouse-resize-pane
    • mouse-select-pane
    • mouse-select-window
    • mode-mouse

    Instead there is just one option: 'mouse' which turns on mouse support entirely.

I guess that would be set -g mouse on

An simple and easy way to do scrolling without any configuration is press Ctrl-B then page up/down.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top