39

When changing the volume on a Mac, you get a big ugly gray bezel showing the change in volume. This is super annoying when (say) watching a movie. Is there any way to disable this?

enter image description here

daviesgeek
  • 38,901
  • 52
  • 159
  • 203
Peter
  • 519
  • 1
  • 4
  • 5
  • Thanks Plastonick, I had a problem with the F5 key that goes nuts occasionally and auto-presses.....and this causes the annoying key brightness OSD to show up. I disabled all the OSD and even if I was a bit worried of losing the volume and lcd brightness notification, I have to say using the mac without EVERY overlay is a much better experience....they disturb you from concentrating and there's no need for an OSD when I can cleary see the effects of the keys we're pressing.... –  Apr 08 '15 at 23:31
  • I am looking to get rid of the Volume Overlay in Mac OS 10.15 Catalina. I know this thread is quite old so can anyone confirm the best way to do this in the current OS? – David Jenner May 26 '20 at 13:18

8 Answers8

38

Note: This solution no longer works on modern versions of macOS, unless you have System Integrity Protection disabled. See comments.


Hold up, don't modify important system files!
Mac OS has a nice way to start/stop services without doing permanent damage.

To turn off bezels for this user until next login:
launchctl unload -F /System/Library/LaunchAgents/com.apple.BezelUI.plist
To undo, change unload to load, or just log out and back in.

For macOS 10.12 Sierra: Disable System Integrity protection, then:
launchctl unload -F /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist
Don't forget to enable System Integrity protection when you're done.


To turn off bezels indefinitely for this user:
launchctl unload -wF /System/Library/LaunchAgents/com.apple.BezelUI.plist

For macOS 10.12 Sierra: Disable System Integrity protection, then:
launchctl unload -wF /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist
You can now enable System Integrity protection again -- your settings will persist.

To undo, change unload to load.


To turn off bezels indefinitely for all users:
sudo defaults write /System/Library/LaunchAgents/com.apple.BezelUI Disabled -bool YES

For macOS 10.11 Sierra: Disable System Integrity protection before doing the above.

To undo, change YES to NO, or:
sudo defaults delete /System/Library/LaunchAgents/com.apple.BezelUI Disabled

For macOS 10.12 Sierra: Disable System Integrity protection, then:
sudo defaults write /System/Library/LaunchAgents/com.apple.OSDUIHelper Disabled -bool YES
You can now enable System Integrity protection again -- your settings will persist.

To undo, change YES to NO, or:
sudo defaults delete /System/Library/LaunchAgents/com.apple.OSDUIHelper Disabled

Users can override this global setting using the two methods above.


More info: launchctl is the command-line interface to launchd, the program that manages services and jobs on Mac OS.

  • To reverse any of the above actions, just change unload to load.
  • -w means write preference to disk so that it will be used for subsequent logins
  • -F means force un/load regardless of the global Disabled key

You can read more about it in man launchctl.

interestinglythere
  • 1,234
  • 9
  • 9
  • From far the best answer! – OlivierLarue Dec 09 '15 at 08:49
  • 1
    Thanks! Only problem is that my answer came 4 years later… – interestinglythere Dec 09 '15 at 10:38
  • 3
    Looks like this solution won't work in 10.12 because the launch agent and BezelUIServer is removed. – Zorg Jul 04 '16 at 20:38
  • It works for this session, but it doesn't work indefinitely. It gives me com.apple.BezelUI.plist: Could not find specified service. Edit: It works!, It just needed to load the service again, so I can unload it.... – Francisco Corrales Morales Sep 12 '16 at 22:47
  • 1
    BezelUI changed to OSDUIHelper in 10.12 – the new file is /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist – Hawken MacKay Rives Dec 09 '16 at 18:17
  • Thanks for the tip @HawkenRives! I updated my answer. Unfortunately, it involves disabling System Integrity Protecting on 10.12+, so if anyone has a better solution, let me know. – interestinglythere Dec 31 '16 at 13:54
  • When I try the unload command, I get this message: /System/Library/LaunchAgents/com.apple.BezelUI.plist: No such file or directory – Bert Visscher Jul 21 '17 at 18:07
  • Are you on macOS 10.12? If so, please follow only the 10.12-specific instructions. – interestinglythere Jul 26 '17 at 23:35
  • What about on macOS High Sierra 10.13, got error "Unexpected argument YES" – minseong Mar 28 '18 at 13:45
  • It's actually -bool (single dash), my bad! I'll edit the answer too. – interestinglythere Mar 28 '18 at 23:31
  • @interestinglythere so is High Sierra the same as Sierra – minseong Mar 29 '18 at 23:15
  • I would assume so but I haven't tested it. Can you try it and let me know if it works? – interestinglythere Mar 30 '18 at 20:37
  • On mac os 10.15.3 it seems like the "big ugly gray bezel" get's reenabled after reenabling "System Integrity protection" (by booting to the recovery disk and csrutil enable). I followed the "To turn off bezels indefinitely for this user:" instruction. Am I doing something wrong? – Trond Hatlen Mar 20 '20 at 19:04
  • Hi, I haven't tried this recently but there's a good chance that there's no way to keep the overlay disabled with System Integrity Protection on. If anyone finds a way, feel free to reply here. – interestinglythere Mar 21 '20 at 06:24
  • Any update on getting this work in something newer than 10.15? – 1.21 gigawatts Jan 21 '21 at 05:32
  • It should work if you disable SIP. For getting it to work with SIP enabled, I unfortunately have no updates. If anyone else has an update, feel free to chime in. – interestinglythere Feb 05 '21 at 02:45
  • doesn't work with macos 14 Sonoma. After launchctl unload -wF /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist it works, but enabling back System Integrity protection resets it. For all users, it doesn't work at all: sudo defaults write /System/Library/LaunchAgents/com.apple.OSDUIHelper Disabled -bool YES results in 2023-10-27 01:44:40.529 defaults[2946:21219] Could not write domain /System/Library/LaunchAgents/com.apple.OSDUIHelper; exiting – Vladimir Fokow Oct 26 '23 at 23:45
18

In automator, create a new service that takes no input. Give it a single action: Run AppleScript Enter the following AppleScript:

set x to get output volume of (get volume settings)
if x >  10 then 
    set volume output volume (x-10)
else
    set volume output volume 0
end if

Save the service with the name "Volume down", and bind the service to F11.

Create another new service that takes no input. Give it a single action: Run AppleScript Enter the following AppleScript:

set x to get output volume of (get volume settings)
if x < 90 then 
    set volume output volume (x+10)
else
    set volume output volume 100
end if

Save the service with the name "Volume up" and bind the service to F12.

Goodbye volume overlay.

Daniel
  • 34,803
  • And thanks for the AppleScript blog posts, @Nathan Greenstein, that helped me to do this. I'm new to AppleScript. – Daniel Nov 03 '11 at 00:01
  • 6
    Awesome answer! What a great idea. Just FYI, those checks are unnecessary; the volume will automatically bottom out at 0 and top out at 100. – Nathan Greenstein Nov 03 '11 at 00:26
  • Don't go through all this hassle just run some of the commands interestinglythere mentioned in his answer. – WeDoTDD.com Apr 10 '16 at 19:25
4

If you just want a minimal HUD I've written one that works with mySIMBL. It just draws a bar in the top center of your screen. It may get more functionality in the future.

picture

https://github.com/w0lfschild/mySIMBL

https://github.com/w0lfschild/cleanHUD

w0lf
  • 91
3

Simple solution:

/System/Library/LoginPlugins/BezelServices.loginPlugin/Contents/Resources/Bezel‌ UI/

'Show Package Contents' on 'BezelServices.loginPlugin' to access through Finder

Rename “BezelUIServer” to something else (I just put a space at the front of it) - this will disable the volume overlay.

grg
  • 201,078
1

There's no built-in method for doing so, but Googling brings up suggestions such as overriding the image used for it so that it's less obtrusive.

Chuck
  • 1,780
1

I found the AppleScript solution didn't work for me, I wasn't able to bind the scripts to my volume up and down buttons (on my remote or keyboard). Due possibly to the much newer OS X.

Playing around however, I've found a solution which disables ALL Bezel services (anything that comes up in the grey translucent square; volume, screen brightness, keyboard brightness, etc.).

Working off patrix' information concerning where the relevant files are located, I renamed "BezelUIServer" to "mBezelUIServer" (although any rename is adequate, this one is easily reversed).

Find the file here: /System/Library/LoginPlugins/BezelServices.loginPlugin/Contents/Resources/Bezel‌​UI/

Hope this can help you or any future googler's.

1

For anyone who's interested, this worked like a charm for me on Yosemite:

sudo /bin/chmod -x /System/Library/LoginPlugins/BezelServices.loginPlugin/Contents/Resources/BezelUI/BezelUIServer
manishie
  • 119
1

Don't use the volume keys. If you change the volume with the menu bar control the overlay does not display.

Note you only need to activate the menu item, and then the cursor keys can be used to manipulate it

Kevin
  • 4,142
  • 2
    Is there a way to do this easily from the keyboard? The question mentions watching a movie, and showing the menu bar isn't really an improvement over the bezel in that case. – Nathan Greenstein Nov 01 '11 at 22:04
  • 1
    ^F8 will move focus to the status menus...cursor across to the volume control and up/down to adjust. Make sure this setting is enabled in System Preferences -> Keyboard -> Keyboard Shortcuts - Keyboard and Text Input – Kevin Nov 01 '11 at 22:11