Ubuntu – Automatic Mute Speakers When Headphones are Unplugged

aceraspire-oneheadphonesspeakers

I listen to music almost any time I am on my computer. I often accidentally unplug my headphones. This has resulted in disturbing others around me. Does any one know of a way to mute the speakers (and potentiality pause VLC) when headphones are unplugged?

I would like to do this on my Laptop. It is an Acer Aspire One D150. The speakers are built-in to the computer. My headphones are standard 1/8 in which connect through the headphone jack.

Best Answer

My original answer was simply "Just click on sound preferences, and choose to use "analog headphones" in the "output" settings. Let me know if this doesn't help."

EDIT/UPDATE: okay, this may not work nicely if you have your alsa configured so that it automatically mutes speakers when headphones are plugged in. You may need to disable that if you have it set.

Anyway, get some music anything with sound playing so you can test your sound output. Now open your Terminal console and type alsamixer. Check it out. Pretty cool, right? Here, you can adjust the volume levels for master, headphone, speaker, as well as other inputs/outputs.

In alsamixer, set your volume how you want it for when your speakers are on. Headphones can be at any volume you like. I'd put your "speaker" at 100% and your master at ~75%. We are going to save this in a profile now! Hit escape to exit alsamixer. If you open it again, you will see that your settings are still saved.

After you have set volume how you want it for having your speakers on, type in the console, alsactl -f filename store except change "filename" to whatever you want to call it. I called mine noheadph.alsa. Now go back into alsamixer and set your headphone volume up, and your speakers at 0%, leaving master volume wherever you prefer it. Exit alsamixer by hitting escape, and save this profile by typing alsactl -f filename store except this time, replace "filename" with something relevant, such as "headph.alsa". Now, you can recall/restore to either of these profiles by typing alsactl -f filename restore obviously replacing "filename" with whatever you named your stored profiles. Isn't this cool?! Note that the profiles should be stored in your home user directory.

What's left? Just bind a keystroke restore one profile, and another to restore the other one! How? On the OS menu Go to System> Preferences> Keyboard Shortcuts. Here, click "add" to add a new shortcut. I named mine "set soundout headphones only" and entered the command alsactl -f /home/username/headph.alsa restore except change "username" to your user account name. I think you get the gist! :)

Please tell me how it goes for you. Thanks to this thread for the alsamixer info, etc.

P.S. Unfortunately, I can't just use $home/filename in the keystroke command for some reason. Anyone know why this is???