Disable tab-completion sound

Everytime I use tab to auto-complete in the terminal, it beeps! How can I shut that off? I tried searching the forum and the web and unable to find an answer.

Which desktop enviroment are you using?

This can be done on several levels depending on your system environment and/or your use case.

If you want to disable the bell alert at the shell level, you can add lines to your shell configuration files. For bash, you can set the bell-style readline option to none. Simply add this line to your ~/.inputrc:

set bell-style none

For zsh, you can use the unsetopt command to disable specific types of beeps. For example, you can add the following lines to your .zshrc (uncomment the ones you actually want):

# Turn off all types of beeps
# unsetupt BEEP

# Turn off tab-completion/autocompletion beeps
# unsetopt LIST_BEEP

# Turn off history beeps
# unsetopt HIST_BEEP

Display server:
If you want to disable the bell alert at the display server level, and if you’re using X11, then you can use xset to simply turn the bell off.

$ xset b off

For wayland, this will depend on the compositor you’re using and you need to refer to the documentation of your compositor.

You can even disable the bell at the TTY level. For this, you can use the setterm command to set the bell frequency to 0.

$ setterm --bfreq=0

To disable the linux bell at the kernel level (might be a little too extreme, but it is an option), you need to unload the pcspkr kernel module.

$ modprobe --remove pcspkr

To make the changes persistent, just add a modprobe config. For example, create a /etc/modprobe.d/disablebeep.conf with the following contents:

blackist pcspkr

At the lowest level, you can try to disable the bell in your BIOS/UEFI.

Nice, I never knew this and now its in my notes :grin:

1 Like

While it can be disabled at low level, it’s probably best to disable it at the highest level, in the profile settings of your terminal emulator.

It’s a good philosophy to have in general. Changing settings at the highest possible level first means that your change has the least impact to the overall system, keeping it predictable.


I disabled it in my terminal’s config and it did the trick. Thank you to everyone who replied here & shared their different approaches to fix this.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.