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.

  • Maybe you should also give info about your speakers & headhones (e.g. how they are connected). – JanC Oct 13 '10 at 21:32

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???

  • This is the best solution, but doesn't work the way I would like it to. I would like to either automatically do this or allow me to toggle this by running a command. – user415 Nov 19 '10 at 20:07
  • There is a way to do it via console, so there is a way to do it via script (and also by keystroke). I have to look into it. – Slink Dec 14 '10 at 6:08
  • figured it out! look at my answer for a new edit in a moment... – Slink Dec 14 '10 at 8:00
  • I just tested it with headphones. I have something enabled which I would call "auto-mute on headphone detect" (I edited some config file via tutorial in the past). My solution in the answer above works as well as I could possibly imagine it working! :) Cheers. Enjoy. – Slink Dec 16 '10 at 8:26
  • Update: you will notice that despite the master volume in alsamixer, your most recent system volume setting will "pick up where it left off" once you try to adjust the volume using the laptop's XF86Audio volume control buttons. – Slink Dec 17 '10 at 9:57

Just had the same problem and made a small script for it, really late but I thought I'd share it anyway

in /etc/acpi/events/ make a file headphone-plug with contents:

action=/usr/local/bin/headphone-plug.sh %e

this will run the script in 'action' when a plug event occurs

create /usr/local/bin/headphone-plug.sh with content:

case "$3" in
        su [USER] -c "DISPLAY=:0 xdotool key XF86AudioMute"

and make it executable.

It's a bit of a hack, as this will only work for a single user on a single x session. But it's enough for me


As far as I'm informed there is no default option on order to resolve this matter. You could try the following:

  1. Default mute the speakers.
  2. If this doesn't work then you could disable the speakers output to prevent this from happening.

Regards, Martijn

  • What do you mean "Default mute the speakers"? I understand the second suggestion, but this doesn't doe what I want. Is there a way to change this from the CLI? If I could just run a command to turn them on and off the second option would work much better. – user415 Oct 14 '10 at 22:32
  • I meant that you could mute the speakers. This way they wont make any sound when you unplug your headphone. If you decide that you want to use your speakers you simple unmute them. – KYI Oct 16 '10 at 10:24
  • I may not have mentioned this, but this on my laptop. I don't know of any way to mute my speakers without muting the headphones. – user415 Oct 18 '10 at 23:00

As KYI said, You could try mute the speakers. Maybe this page will help You.


How to unmute the auto muted speakers for acer? I don't know if it's applicable to other laptop. Just try the instructions or the flow of the instructions for non-acer laptop user.

  1. Go to "Start" menu and click "Control Panel".
  2. Click "Hardware and Sound".
  3. Go to "Windows Mobility Center", and find the volume and unmute the speakers.
  4. Restart your laptop.

I hope it helped you... (:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy