MacBook Pro scherm op zwart houden na slaapstand

Als ik een externe monitor gebruik, wil ik het ingebouwde scherm van mijn MacBook Pro M4 uitschakelen. Je kunt de helderheid wel naar nul zetten, maar na wakker worden uit slaapstand, zet macOS het scherm altijd weer op stand 1 (op een schaal van 0 tot 15).

Ik las me in over systeeminstellingen en probeerde het op te lossen met apps, met name BetterDisplay, maar niets werkte. Ik gaf het op en liet het maar zo. Tot ik het zat werd en zelf deze betrekkelijk simpele oplossing bedacht: Bij het wakker worden van macOS roept Hammerspoon een AppleScript aan, dat de F1-toets indrukt c.q. via Systeemgebeurtenissen aanroept.

Macbook-scherm automatisch dimmen bij ontwaken

Geoptimaliseerd voor macOS op Apple Silicon M4 MacBook Pro met een oudere, externe monitor, waarvan de helderheid niet via de Mac in te stellen is.

Stap 1: De Homebrew Pakketbeheerder installeren

  1. Open de Terminal (via Spotlight: Cmd + Spatiebalk -> Terminal).
  2. Plak het volgende commando en druk op Enter:
    /bin/bash -c "$(curl -fsSL https://githubusercontent.com)"
  3. Typ je Mac-wachtwoord blind in en druk op Enter.
  4. Alleen voor Apple Silicon (M4): Activeer Homebrew door de drie echo en eval regels die aan het einde van de installatie in de Terminal verschijnen (onder ==> Next steps:) te kopiëren, te plakken en uit te voeren.

Stap 2: Het automatische dim-script aanmaken

  1. Voer in de Terminal het volgende commando uit om het script te openen in de Nano-editor:
    nano /Users/laptopleon/Scripts/schermDimmenBijWakkerWorden.sh
  2. Plak de onderstaande code exact in het venster van Nano:
#!/bin/bash

# RONDE 1: Direct bij het ontwaken
osascript -e 'tell application "System Events" to repeat 16 times' -e 'key code 145' -e 'delay 0.01' -e 'end repeat'

sleep 1

# RONDE 2: Na 1 seconde
osascript -e 'tell application "System Events" to repeat 16 times' -e 'key code 145' -e 'delay 0.01' -e 'end repeat'

sleep 2

# RONDE 3: Na 3 seconden nog een keer, voor het geval het systeem traag reageert
osascript -e 'tell application "System Events" to repeat 16 times' -e 'key code 145' -e 'delay 0.01' -e 'end repeat'
  1. Sla het bestand op: Druk op Control + O, druk op Enter en sluit af met Control + X.
  2. Maak het script uitvoerbaar met dit commando (in bash):
    chmod +x /Users/laptopleon/Scripts/schermDimmenBijWakkerWorden.sh

Stap 3: Hammerspoon installeren en instellen

  1. Installeer Hammerspoon via de Terminal in bash met het commando:
brew install hammerspoon
  1. Open de app Hammerspoon via Spotlight.
  2. Open de configuratiemap in de Terminal (in bash):
    mkdir -p ~/.hammerspoon && nano ~/.hammerspoon/init.lua
  3. Plak de volgende code die luistert naar het ontwaken van de Mac:
local watcher = hs.caffeinate.watcher.new(function(event)
    if (event == hs.caffeinate.watcher.systemDidWake or event == hs.caffeinate.watcher.screensDidWake) then
        hs.execute("/Users/laptopleon/Scripts/schermDimmenBijWakkerWorden.sh &")
    end
end)
watcher:start()
  1. Sla op met Control + O, Enter en sluit met Control + X.
  2. Klik bovenin de Mac-menubalk op het hamertje van Hammerspoon en kies Preferences. Vink Launch Hammerspoon at login aan en klik op Reload Config.

Stap 4: macOS Beveiligingsrechten verlenen

Om te zorgen dat het script op de achtergrond knoppen mag indrukken, moeten de juiste rechten aan staan in Systeeminstellingen > Privacy en beveiliging:

  1. Toegankelijkheid (Accessibility): Zet de schakelaars voor Terminal en Hammerspoon op AAN.
  2. Automatisering (Automation): Zoek naar Hammerspoon in de lijst en zorg dat de schakelaar onder Hammerspoon bij System Events.app op AAN staat.

Werking & Gebruik

  • Automatisch: Bij het openklappen of ontwaken van de Mac pikt Hammerspoon dit op. Het script dimt het ingebouwde M4-scherm direct, na 1 seconde én na 3 seconden volledig naar zwart. Dit voorkomt dat de videokaart-handshake met de externe monitor het dimsignaal verstoort. Of niet want mijn monitor ondersteunt geen extern dimmen, in ieder geval niet vanaf de Mac.
  • Handmatig herstellen: Druk simpelweg op de F2-toets (helderheid omhoog) op het toetsenbord om het laptopscherm weer te verlichten.