Blink tmux instead of sound

gnu-screentmux

Today I finally decided to reinstall OS on my home server from CentOS 5 to CentOS 7. Along with that, I decided to try tmux instead of screen that I was using for ages.
I was able to reconfigure its look&feel almost perfectly for my needs but there is still one annoying thing.
In screen, when I do some actions (for example in vi – trying to move cursor up while on first line, or press unknown hotkey, etc.) – background blinks for a moment – I suppose this is kind of warning or something like that. Anyway, I like this feature.

Now in tmux, it doesn't blink. More than that, it plays system default sound. This is really annoying. How do I change this sound to visual blinking?

I'm connecting to this server via putty from win desktop, if this matters.

Best Answer

short: in your .tmux.conf

set -g visual-bell on

long: Some applications check both the bel and flash terminal capabilities, and allow you to choose which will be used. tmux does not. It reads only bel, so you could modify your terminal description to change the bel to a string for flashing the display.

That might work, except that while tmux reads terminfo data, it does not use the corresponding tputs or putp functions for sending terminfo data which includes time-delays. You need those delays on most terminals (including all of those imitating xterm) to implement flash.

Interesting, the terminal description for screen has flash=\Eg, but neither it or tmux do anything with that (screen uses it internally as part of its visual-bell feature). tmux likewise has a visual-bell feature, which you can set in your configuration file. That will not blink the screen, but just put a momentary alert in the status line.

Further reading:

visual-bell [on | off]
If this option is on, a message is shown on a bell instead of it being passed through to the terminal (which normally makes a sound). Also see the bell-action option.

bell-action [any | none | current | other]
Set action on window bell. any means a bell in any window linked to a session causes a bell in the current window of that session, none means all bells are ignored, current means only bells in windows other than the current window are ignored and other means bells in the current window are ignored but not those in other windows.

Related Question