softbeep is Copyright (C) 2002 Lennart Poettering firstname.lastname@example.org
This Linux utility program may be used for redirecting beeps of the internal PC speaker to your sound card. It is implemented entirely in user space by using LD_PRELOAD. It catches four different types of beeps, which can be produced on a Linux system:
These together catch most of the beeps of most of the programs I use.
To redirect the beep to the sound card, just run
If you omit foo then a sub shell will be spawned where all children processes will have their beep redirected.
Two environment variables SB_REMOVE_BEL and SB_RUN may be used for adjusting softbeep to your needs. When SB_REMOVE_BEL is set to "yes" every caught BELL character written to a TTY is dropped, otherwise it is passed to the next layer. SB_RUN specifies the program to run when a beep occurs. You may adjust these parameters to your needs in the top of the script softbeep. sb-beep (a short script playing a wave file via esdplay(1), which is shipped with the EsounD distribution) is used for emitting a beep by default. You might want to adjust this script to your individual needs, e.g. for playing different wave files for different programs. You can also set the SB_PLAYER environment variable to change the program used to play the sound file.
softbeep has not been tested intensively with multi threaded programs yet; maybe it works seamlessly, maybe it does not.
Processes with access to several different TTYs at the same time may not be handled correctly. This is a minor bug since there are only very few programs which make use of more than one TTY at once.
SUID/SGID programs like xterm(1) do not work with softbeep. This is a limitation of LD_PRELOAD (due to security considerations) and not a bug in softbeep! Solution for xterm(1): For catching all the beeps of xterm(1) you should preload the library to the shell running inside of the xterm(1), which is not SUID/SGID.
ssh(1) is a SUID/SGID program on several installations. I currently do not know a way how to work around this.
This man page was written by Helge Kreutzmann email@example.com for the Debian GNU/Linux project but may be used by others.