Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Placement forgotten after restart #100

Open
NeighNeighNeigh opened this issue Sep 6, 2022 · 10 comments
Open

Placement forgotten after restart #100

NeighNeighNeigh opened this issue Sep 6, 2022 · 10 comments

Comments

@NeighNeighNeigh
Copy link

When I use Displayplacer to fine tune the placement of my triple display arrangement, it works great! that is until I restart the computer, where the placement is now lost. Is there any way to bake the adjustment into the system preferences?

Displayplacer version: v1.2.0
macOS version: 12.5.1

@alxw
Copy link

alxw commented Sep 9, 2022

Here's my workaround to swap position of two displays set to the same resolution (so if you have 3 displays, like a laptop built-in and 2 external, it won't swap an external with the laptop, unless they are set to the same resolution, in which case you will need additional regex customization):
Setup:

echo "displayplacer list | tail -n1 | sed 's/displayplacer //;s/id:\(.\{36\}\) res:\([0-9x]\{7,9\}\) \(.*\)id:\(.\{36\}\) res:\2/id:\4 res:\2 \3id:\1 res:\2/g' | xargs displayplacer" > swap_display.sh
chmod +x swap_display.sh

Execution:

./swap_display.sh

Works for me on an M1 Max running macOS 12.5.1 and displayplacer v1.2.0. Best of luck!

@NeighNeighNeigh
Copy link
Author

Oh okay, so my problem is that when I restart the computer my left display is now -127 on the Y instead of -200. My right display is -150 instead of -200. These seem to be the values from when I set them manually in display preferences. So after every reboot I need to use displayplacer to make them both be -200 on Y. What I’m wondering about is why this isn’t remembered between restarts?

@alxw
Copy link

alxw commented Sep 13, 2022

I don't know if it's possible to put this into the system preferences, and I have no idea why that's happening.

displayplacer lets you set things how you like, and then "export" the setting using displayplacer list (which you'll need to save somewhere so that you can later execute it). displayplacer does not automatically apply the setting, but it gives you the ability to set it via command-line, which I believe you can set to run upon log-in using Automator.

However, displayplacer can get the display ids mixed up even still (if you have two identical displays), especially on M1, so my workaround above can address that. (For me, it's a 50% chance they get mixed up every time the displays go to sleep). Perhaps this wasn't relevant to your issue, I just thought my fix might have a chance at helping you.

@NeighNeighNeigh
Copy link
Author

Ah thanks that's a good idea, I just set up an automator application to run at startup. Still, it seems weird that changes made by display placer are not persistent between restarts. So far I haven't had a confused id's situation as yet, so fingers crossed it stays that way.

@jleatham
Copy link

jleatham commented Oct 5, 2022

My displays mix up randomly after sleep or after undock/docking . I set up the displayplacer list command as an automator workflow service and it works sometimes and othertimes it still gets switched up.

So I took @alxw 's script and put it into another workflow:
/opt/homebrew/bin/displayplacer list | tail -n1 | sed 's/displayplacer //;s/id:\(.\{36\}\) res:\([0-9x]\{7,9\}\) \(.*\)id:\(.\{36\}\) res:\2/id:\4 res:\2 \3id:\1 res:\2/g' | xargs /opt/homebrew/bin/displayplacer

So now I have two shortcut commands, and between the two, so far, I can get the displays correct. Technically, the swap workflow throws an error, but the command works, so it still saves a ton of time.

@mgumz
Copy link
Contributor

mgumz commented Nov 5, 2022

@NeighNeighNeigh i would argue that osx is forgetting the monitor settings. displayplacer is doing what you would otherwise do via the settings-pane, there is essentially no difference. why osx is doing something interesting after the reboot is beyond me … but i can't really see a way on how displayplacer could "fix" this.

@alxw
Copy link

alxw commented Nov 21, 2022

@jleatham I think this might solve the workflow error - LMK:

/opt/homebrew/bin/displayplacer list | tail -n1 | sed 's/displayplacer //;s/id:\(.\{36\}\) res:\([0-9x]\{7,9\}\) hz.*color_depth:. \(.*\)id:\(.\{36\}\) res:\2 hz.*color_depth:.\(.*\)/id:\4 res:\2 \3id:\1 res:\2\5/g' | xargs /opt/homebrew/bin/displayplacer

@ahaverty
Copy link

Apologies if this isn't relevant, but in my case I was just losing the resolution and my script was failing due to differing ID's (I have a second user account, perhaps that's messing with things?)

I've hardcoded the above suggestions, with a specific resolution for both of my matching screen.
Script in case it's useful for anyone else:

/opt/homebrew/bin/displayplacer list | tail -n1 | sed 's/displayplacer //;s/\(id:[0-9A-F-]* \)res:[0-9]*x[0-9]*/\1res:3008x1692/g' | xargs /opt/homebrew/bin/displayplacer

@jakehilborn
Copy link
Owner

@NeighNeighNeigh @alxw @jleatham @mgumz @ahaverty displayplacer v1.4.0 supports addressing screens by serial id. If all of the screens in your setup have unique serial ids, this should fix the id switching issue.

Could you try out the new version and let me know if it works on your setup?

@jleatham
Copy link

jleatham commented Jun 12, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants