Login screen display preferences

jkarpenske
New Contributor III

We have a Mac Studio running macOS Ventura. it's connected to a Studio Display via Thunderbolt, and to a Crestron system via HDMI, which feeds two large displays at the front of the classroom. The problem is that on power-on, the login screen defaults to the large displays, which are to the instructors' backs. We'd like to either force the login screen to be on the Studio Display, or if that's not possible, at least have the displays mirrored at startup so the instructors can see where they're typing (and hopefully avoid typing their password into the username field for all to see!).

 

I read that if an admin set the primary display to be the Studio Display, that it should respect that setting on future reboots, including for the login screen, but that doesn't seem to be the case.

We're looking for a solution that "just works," i.e. doesn't involve instructors having to disconnect cables before login, etc. We didn't seem to have this problem last year when we were running macOS Monterey on the same hardware.

 

Any help folks can offer would be greatly appreciated. If you have any questions, please don't hesitate to ask.

 

Thanks!

Jeremy

7 REPLIES 7

AJPinto
Honored Contributor III

The "It just works" only apple is when you are using a device the way Apple designed it to work. There is not a way that I am aware of to change display settings from the log in window, to the logged in session (ie mirrored display to extended display).

 

The default display could be set to whichever display is say in front of the user in display settings. The login window displays on the default display.

jkarpenske
New Contributor III

I agree - the login should show up on the default display - and we've set the Apple Studio Display to be default as an admin user, but it doesn't seem to persist after a reboot.  We're continuing to experiment to hopefully find a solution.

EDmsm
New Contributor II

Sorry to rehash an old threat, but I'm curious to know if you ever found a solution to this. Having a similar issue at my site - we need the refresh rate to be set to 60hz for all user due to capture cards but I can't find a way to make this stick!

jkarpenske
New Contributor III

Unfortunately, no, we never found a solution to make the settings stick.  I'm sorry I don't have a better answer.

wandyle
New Contributor

I made a workaround for this that is working, but very annoying to set up if you have alot of lecterns.

 

1. Login as an admin / root user
2. navigate to /Library/Preferences/

3. delete the file com.apple.windowserver.displays.plist

4. restart the device

5. log back in as admin / root user

6. change the settings on system settings > displays to what you want it to be. In my case I want all additional screens ( crestron and wacom tablets ) to mirror the monitor / imac screen.

7. After all screens are mirrored, or as you want it to be - restart the device ( important )

8. Login again under an admin / root user & navigate back to /Library/Preferences

9. Copy the com.apple.windowserver.displays.plist file that exists now to a shared location
I used /Users/Shared/<a directory i made>/
You can also use /usr/local/

10. On Jamf Pro, make a script to delete the current windowserver plist, and replace it with the one we copied to the shared location.

Your script might look like this:

#!/bin/zsh

# Define the source and destination paths
SOURCE="/Users/Shared/admin/com.apple.windowserver.displays.plist"
DESTINATION="/Library/Preferences/com.apple.windowserver.displays.plist"

# Check if the source file exists
if [[ -f "$SOURCE" ]]; then
    # Copy the file to the destination, preserving the original file's permissions and ownership
    cp -fp "$SOURCE" "$DESTINATION"
    
    # Set the correct ownership and permissions explicitly
    chown root:wheel "$DESTINATION"
    chmod 644 "$DESTINATION"
    
    # Verify if the operations were successful
    if [[ $? -eq 0 ]]; then
        echo "File successfully copied to $DESTINATION with permissions root:wheel and -rw-r--r--"
        
        # Restart the WindowServer to apply the new plist
        echo "Restarting WindowServer to apply the new plist..."
        killall -HUP WindowServer
        
        if [[ $? -eq 0 ]]; then
            echo "WindowServer restarted successfully. New plist has been loaded."
        else
            echo "Failed to restart WindowServer. Please try manually."
            exit 1
        fi
    else
        echo "Failed to copy the file or set permissions. Please check for potential issues."
        exit 1
    fi
else
    echo "Source file does not exist: $SOURCE"
    exit 1
    
fi


11. Create a policy to run this script once a day, and reboot afterwards.

You will need to do steps 1 - 9 for each device you have that you want to apply this for, as the plist is unique to each device...

This has worked for me with multiple different displays incl crestrons, other monitors and wacom tablet displays.

Hope this helps anyone..

And yes, I have tried managed preferences via a configuration profile. - it did not work.

Unfortunately we cannot get your script above to work in Sonoma 14.6.1. When it's enabled via Jamf Pro, upon reboot/log-out: mirroring, (default) primary screen settings are lost & log-in fields migrate randomly. In our case, similar to the original poster's, Sonoma's signature landscape screen, bearing its hyper-minuscule login field that dusts the very bottom edge of screen, inevitably ends up on house projection output ... that's frequently off, or the last to be powered. Another aspect: Sonoma exacerbates legibility for those with visual impairment challenges.  As a result usernames/passwords get typed into inappropriate fields & password are exposed to audiences(!). This causes copious problems, a plethora of tech-support calls/tickets. Has anyone sorted out the behavior of the windowserver.displays plist? What's the secret to taming its chaotic misbehavior? And, yes, managed preferences bundled into configuration profiles fail every time.