Page MenuHome

Problem make Blender open in the wanted monitor.
Open, NormalPublic

Description

--- Operating System, Graphics card ---
Windows Ultimate 7 x64, GTX 580 3Gb x2

--- Blender version with error, and version that worked ---
2.66a x64, worked in 2.65 x64

--- Short description of error ---
Until today, Blender always opens in my 2nd monitor but just after worked with 2 instances of Blender, Blender now always opens on my third monitor.

--- Steps for others to reproduce the error (preferably based on attached .blend file) ---

To make it clear : I have 3 monitors, 2, each one on one of the 2 GTX 580 (as 1st and 2nd monitor) and 1 on an USB graphic adapter (as third monitor).

So, by copying the startup.blend from 2.65 folder in the 2.66 folder, Blender opens in my 2nd monitor as expected BUT if I save the startup file using CTRL + U in Blender 2.66a and want to open Blender again, it opens in my third monitor. So, the only way to keep Blender opening in my 2nd monitor and change the startup file is to using Blender 2.65.
If instead of using CTRL + U to save the startup file, I use CTRL + S, Blender opens in my first monitor ?!

It drives me crazy as it works perfectly until now. The only thing that I can do is to save the startup file but unfortunatly, I don't remember if I did it this morning or few days ago (I did many things between the work on Blender and searching the reason why it suddenly stopped to work that I forgot if I did a save for startup file) .

Anyway, I let you the startup file from Blender 2.65 and the same saved in 2.66a.

Details

Type
To Do

Event Timeline

That's very strange.

But I also notice the startup window position is not being saved correctly now...

Tested with r56284, on XP.

I tried the following, and all worked perfectly...
- Starting with factory settings, making a window in second and third screens, saving file, reloading blender with factory settings, reloading the saved file.
- same as above... but maximize both windows before saving to a file.
- Starting blender with factory settings, making 2 windows in the second and third monitors, then saving user defaults.

@Emmanuel, could you try test with a recent build?

@Ton, how are window coords not saved correctly?

I did the test with the last buld (r56352) but after doing it, it only starts with the 3 windows on my third screen. I let you the startup file that has been created.

Failed to attach the file, I put it on PasteAll : http://www.pasteall.org/blend/21009

Still exists in 2.67 :(.

I will assign this to myself for inspection. But I don't use multiple monitors... and need to find time to get back in concentration for code work again :)

@Emmanuel, Its just hard to fix bugs if a developer can't redo, I took the time to setup 3 monitors but its on Windows XP, so perhaps some difference to Windows7?

From your startup blend: http://www.pasteall.org/blend/21009 - this does load with 2 windows on one monitor, but when I move this onto the 3rd. save user defaults and restart - it loads on 3 monitors as expected.


Tried 2 other configurations but both worked ok.
- reversed monitor order, had 1,2,3 - reversed to 3,2,1 so primary screen was last.
- tried moving the blender icon to another monitor in case the screen you start blender from matters.

I understand that my setup is not usual. I don't know how startup file "knows" where window should be opened but as it worked in 2.65, can't you find what changed between 2.65 and 2.66 that could make this happen ?

I just wish that only one window of Blender to be opened in the monitor I want. I'm stuck with my 2.65 config and can't change it :(.

We can guess at what changed, but unless we can redo the bug we can't be sure

Hmm... where does Blender store the Window Positioning information?
If someone could lead me to the portion of code I could have a look into this.
I had similar problems with window placement in other projects recently.

@Juergen Herrmann (shadowrom)
source/blender/makesdna/DNA_windowmanager_types.h, struct wmWindow, posx, posy, sizex, sizey

Juergen Herrmann (shadowrom) lowered the priority of this task from Normal to Needs Information from User.Apr 1 2014, 9:41 AM

All I can tell after testing this is that Blender seems to work "as intended" I can not redo this bug on my system.
I tested this on my Dell CAD workstation with Win 7 and 3 Monitors on one Graphics card. Unfortunately I don't have a USB display adapter to test this.

As far as I can tell there is no logic error within Blender's handling of window positions. The window position is stored correctly within the startup .blend and is read correctly.

The code within blender that restores windows from the blend files is quite simple and could be improved for Windows but I fear this would break some things regarding portability. Win32 API in Vista,7 and 8 has a great deal of APIs for working with multiple monitors.

MSDN Magazine link ;)

I just tried with 2.69 but it doesn't work for me, Blender appears in my USB monitor (seen by Windows as my third monitor) instead of my 2nd monitor (where Blender is when I save Startup file).

Bastien Montagne (mont29) raised the priority of this task from Needs Information from User to Normal.

The issue reported can't be reproduced so far, and has been moved to the BF Blender: Unconfirmed project.
If 2 other people aren't able to redo the bug after 2 weeks, it will be closed.

We appreciate the effort that goes into making bug reports, but to be able to fix bugs we have to be able to redo them.
If there is anything you can provide to help others to reproduce the problem, be sure to include it.

I understand. The only thing I can tell is that it worked with 2.65 and has been broken (for my step at least) since.

I ran into a simular problem with a multi monitor setup.

Using Blender 2.71

Monitors were setup so that top monitor straddles two lower monitors.

monitor 2

monitor 3 monitor 1

Default setting works fine.
Save a Startup Setting that has window at full screen.
The next time you open Blender it will appear full screen on monitor 2.
If you make the window less then full screen then it will appear on Monitor 1.
If you reposition Monitor 2 so it does not overlap then, Blender will open full screen on monitor 1.

mon2
mon3 mon1

monitor 3 &1 are 1080
monitor 2 is 1024x768

If you stack the 2 1080 one on top of the other no overlap with mon2

mon2 [mon3]

mon1

Delete startup.blender
Open Blender. Every thing is ok. Save the Startup Settings at full screen.
Close and open Blender.
Blender will crash to desktop.
The two 1080 monitors are on separate video cards.

It appears that if the monitor are on the same video card then windows treats them as a single surface and for purposes of resizing will use the top surface.

I am not sure what logic windows is using for it assignments. It appears that the top monitor has priority.
The crash when on separate video cards is a problem. All it takes is a small overlap.

Not sure if my ascii graphics of the screen position will come out right. They are looking a bit funny in the post preview.

In Summary

One crash when monitor on different video cards are stacked on top of each other or have any surface in common when stacked.
Annoying feature of Blender not starting on the expected monitor.
Workaround, don't stack monitors on top of each other. This prevents the crash or the annoying behaviour.

Hope this is useful information.

Cheers

Another variation of the above.

mon1 [mon2]

Each monitor is on a different video card. Side by side.
mon1 is the main display.
Default everything works fine.
Move Blender to second monitor.
Save a Startup Setting and exist.
Blender crashes to desktop when you start it.

Workaround, don't move Blender to the second monitor and save a startup settings or make mon2 the main display.

Looks like you need to keep blender to one physical video card to make any startup file that will work.

video cards were a ati 7800 and on board intel 4000.

Is there any word on fixing this bug yet?
It is still happening to me in Blender 2.74.
There are no workarounds that work for me.
No matter what, after installing and launching Blender it starts on the correct monitor.
But after saving prefs and relaunching it always jumps to the monitor of a 2nd video card.
Because of this i have to move Blender back to the main monitor, ever, single, relaunch.
Seems like such a simple dumb problem for such an amazing piece of software.

It looks like two more people have confirmed this so we can say that it is a bug but more or less it is really a todo we have more important things to do

Campbell Barton (campbellbarton) closed this task as Resolved.EditedAug 26 2015, 4:44 PM

It seems no developers can redo the error (I tested as mentioned above and Blender worked properly),
Moving this to TODO. - http://wiki.blender.org/index.php/Dev:2.5/Source/Development/Todo/Install-OS#Windows

Campbell Barton (campbellbarton) changed the task status from Resolved to Archived.

I'm encountering the same issue, have been for some time. Was going to submit a bug report but decided to do a search first and found this. Noticed it wasn't some weird monitor enumeration issue when trying the 2.68RC; it opened on my #1 (as determined by Win10) monitor. As soon as I copied my previous settings, every subsequent time it opened on my #2 monitor. After some troubleshooting I discovered that saving a startup file did it. Steps (for me) to reproduce:

  1. Delete config folder in current version folder in %userapps% directory
  2. Open Blender (opens on primary monitor)
  3. Ctrl-U, confirm save startup file.
  4. Close and re-open Blender (opens on secondary monitor).

My setup:
Windows 10 (fully patched)
GTX 980Ti, latest Nvidia drivers, primary and secondary monitors both running off of this card
Blender 2.78 release

I've been experiencing this issue for over a year; in the intervening time I've built a new computer and upgraded to Win 10.

Hope this helps if anyone ever gets back to this.

Aaron Carlisle (Blendify) reopened this task as Open.

I think could be looked at again. @LazyDodo (LazyDodo)

Hi all, I would like to know if there are news about it cause there are a lot of things in 2.78 that can't be done in 2.65 so it becomes hard to me to have a useful startup file :( ?

There is no way to bring back how screen positions were saved in startup file in 2.65 ?

Hi again, could anyone take a look at this please ? It's very frustrating :(.

Hi, perhaps a clue if someone follows this : I changed the way I plug my monitors. Now, the 3 monitors are on the same graphic card (GTX 1060 6Gb). Blender always opens in the monitor that Windows 10 Pro x64 recognizes as the monitor "3" (whether I saved Startup file with Blender opened in monitor 1, 2 or 3). It was the same when this monitor was plugged in USB so it doesn't come from the way monitors are plugged.

I hope it will be fixed in a 2.79x release and not 2.8 :(. As I wrote, it's very frustrating to not have the ability to customize the startup file regarding all the new features.

I did further investigations to help understand what happens.

Here are different cases :

  • if I save startup.blend with Blender opened in fullscreen (Alt + F11) or maximized window (i.e with the square at the left of the "X" to close window) in monitor 1, 2 or 3, regardless the monitor I chose when saving the startup.blend, Blender opens next time in fullscreen or maximized window in monitor 3
  • if I save startup.blend with Blender opened whether at the half right of monitor 1 or half left of monitor 2 by dragging the window of Blender at the right or the left and "touch" the edge of the screen so Windows 10 put the window of Blender at half size, Blender opens next time at half size but in the right monitor !
  • in other cases, like just stretch the right half size window of Blender to the left by few pixels in monitor 1, Blender opens not in fullscreen in monitor 3

My monitors are like this in Windows 10 x64 :

@Emmanuel LORANT (asturias), if you change the layout to be horizontal [1, 2, 3] - does Blender open on the correct screen?

Yes.

I tried this :

  • 2 1 3 : Blender opens in the monitor 1 where I want Blender to be after I saved startup.blend with Blender maximized in monitor 1
  • 3 2 1 : works the same as above without saving startup.blend again
  • 2 3 1 : works, but I have to save startup.blend again with Blender maximized in monitor 1

It even works when monitor 3 is below monitor 1 and 2...

If I put my config again with monitor 3 above, using the previous saved startup.blend, it opens in monitor 1 but if I saved startup.blend again with Blender maximized in monitor 1, it opens next time in monitor 3 as described before. If I put the monitor 3 below without changing startup.blend, it opens on monitor 1.

Looks like this is caused by Win32 clamping windows bounds based on the default monitor.

Try remove clamping of these lines to see if it resolves: https://developer.blender.org/diffusion/B/browse/blender2.8/intern/ghost/intern/GHOST_WindowWin32.cpp;f84448d4a0019375cf01e52f3320846a98e8f2e8$134-150

See also: T36707

I don't know what to do with the link above. I guess I have to remove the part of the code that is highlighted but where I put the file after this ?

Workaround: I'm using v2.79 and experiencing same problem as described, where regardless of which monitor I was using as my main display, Blender was always opening up in the secondary monitor. I forgot to do a diff on the startup files, but this is how I worked around it: In Windows 10 I have a single video card with multiple monitors, but I think the problem is in the settings somewhere and doesn't matter the setup:

  1. I had to right-click on the Desktop and select Display Settings.
  2. Under "Multiple Displays" I changed it from "Extend These Displays" to "Duplicate These Displays"
  3. I opened Blender and with it selected in the primary display I Saved Startup File and then Close Blender.
  4. Under "Multiple Displays" I changed it from "Duplicate These Displays" back to "Extend These Displays"
  5. Reopen Blender, and it opens in the primary display as selected.

If I get a chance, I'll try to experiment to see exactly what is happening here, but in the meantime I hope this helps!

Gary's workaround unfortunately didn't work for me, but I did find another workaround for anyone else who might still be having this issue. I have an 8 monitor setup (I trade currencies during the week that's why all the monitors) and work on learning Blender on weekends. Similar to other's posts I too was having the issue of Blender opening on a monitor other than my primary monitor (which happens to be monitor 4 in my setup).

Re-saving the startup.blend file while Blender was on my primary monitor did not fix the problem, but adding the following to Blender's desktop icon target path forces it to startup on the monitor of your choice:

  • Right-click on the Blender desktop icon
  • If you're not on the Shortcut tab, switch to that tab
  • Edit the Target by adding a -p option at the end, as follows:

    "C:\Program Files\Blender Foundation\Blender\blender.exe" -p [blender window x start position] [blender window y start position] [blender window width] [blender window height]

Example: "C:\Program Files\Blender Foundation\Blender\blender.exe" -p 1920 0 1920 1080

Note1: The X and Y start positions must be for the lower left corner of the monitor you want Blender to startup in.

This is a useful workaround until the developers eventually fix whatever the problem is with saving the startup file.

Workaround: I'm using v2.79 and experiencing same problem as described, where regardless of which monitor I was using as my main display, Blender was always opening up in the secondary monitor. I forgot to do a diff on the startup files, but this is how I worked around it: In Windows 10 I have a single video card with multiple monitors, but I think the problem is in the settings somewhere and doesn't matter the setup:

  1. I had to right-click on the Desktop and select Display Settings.
  2. Under "Multiple Displays" I changed it from "Extend These Displays" to "Duplicate These Displays"
  3. I opened Blender and with it selected in the primary display I Saved Startup File and then Close Blender.
  4. Under "Multiple Displays" I changed it from "Duplicate These Displays" back to "Extend These Displays"
  5. Reopen Blender, and it opens in the primary display as selected.

If I get a chance, I'll try to experiment to see exactly what is happening here, but in the meantime I hope this helps!

This is it, I finally have blender opening in my primary monitor. thank you so much!

Greg (sok0) added a subscriber: Greg (sok0).EditedNov 19 2018, 10:05 PM

Blender 2.79b was opening on Monitor 4 every time, after doing the workaround:

Workaround: I'm using v2.79 and experiencing same problem as described, where regardless of which monitor I was using as my main display, Blender was always opening up in the secondary monitor. I forgot to do a diff on the startup files, but this is how I worked around it: In Windows 10 I have a single video card with multiple monitors, but I think the problem is in the settings somewhere and doesn't matter the setup:

  1. I had to right-click on the Desktop and select Display Settings.
  2. Under "Multiple Displays" I changed it from "Extend These Displays" to "Duplicate These Displays"
  3. I opened Blender and with it selected in the primary display I Saved Startup File and then Close Blender.
  4. Under "Multiple Displays" I changed it from "Duplicate These Displays" back to "Extend These Displays"
  5. Reopen Blender, and it opens in the primary display as selected.

If I get a chance, I'll try to experiment to see exactly what is happening here, but in the meantime I hope this helps!

I was able to get it to get it open on Monitor 1 as desired.

Monitor 3 and 4 are using on-board Intel video output. Monitor 1 and 2 use GTX 970 GPU.

Same issue in Blender 2.80: I saved two startup.blend files (startup-wrong.blend which sends to the monitor I don't want to use which is 3840x2160 and startup.blend which I saved after performing my workaround in my previous post which sends it to the correct monitor which is 1920x1080). They're binary files, so doing a file comparison (like fc.exe) just spits out the differences in hex which is meaningless to me right now. I do have a hex editor, but I'm not sure what I'm looking for. I'll upload the two files so someone who knows what they're doing can maybe figure out what is different that is causing the issue. Or, if someone gives me a clue what to search for, I can open them in a hex-editor and try to parse through them. I'd really like to have this fixed by the final release of v2.80 if possible. Thanks!

I've done some more digging but without much luck. In case it helps someone, this is what I've looked at so far:
To view the differences in the two startup.blend files, I switched to a Linux machine and did:
colordiff -y <(xxd startup-wrong.blend) <(xxd startup.blend)
(you can use diff but colordiff highlights the differences in color making them much easier to see)
the -y argument puts the two side-by-side for easier comparison
xxd converts the hex into ASCII so it's more human readable, so the entire command pipes that output into colordiff for comparison
Since I don't know what I'm looking for, I can see the differences but I'm unable to find the problem. Someone familiar with Blender code can probably spot it right away. I would paste my diff results but they'd lose the coloring and it would take too many screenshots to capture the whole file. Hopefully a Blender dev can easily compare the two startup files and find the problem.

To look for the Windows setting that controls the Primary Display I went to the Windows Registry with regedit.exe (not recommended for non-developers!):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY
That contains each display connected to the system, but I don't think it is related - but I wanted to include it in case it helps deciphering the other keys.

HKEY_LOCAL_MACHINE\Systems\CurrentControlSet\Control\GraphicsDrivers\Configuration
That contains each display configurations apparently for every display ever connected to the system. Again, I don't think it is related - but I wanted to include it in case it helps deciphering the other keys.

HKEY_LOCAL_MACHINE\Systems\CurrentControlSet\Control\GraphicsDrivers\Connectivity
I'm seeing keys here for "eXtend" and "Clone" on some displays, so I think this may be related to the problem.

There's a Windows command line utility "displayswitch.exe/clone" and "displayswitch.exe/extend" that allows you to duplicate or extend your displays, but I wish I knew exactly what they were doing behind-the-scenes! I'm assuming they're setting the magic registry key we're looking for... Since my workaround fixes the problem, I think there's a Windows setting that is confusing Blender - but I haven't been able to find it yet. I believe the secret lies in a Windows registry key setting and the Blender startup.blend file, but I could be wrong.

Short of decompiling the displayswitch.exe binary, I'm not sure with my current Blender knowledge I can make much more progress on this bug. Hopefully, what I've found so far can point the developers in the right direction. I know this is an issue that is difficult to duplicate, but it is beyond annoying and I'm afraid it will frustrate newbies or those with less patience.