hhannine / superpaper

A cross-platform multi monitor wallpaper manager.
MIT License
1.12k stars 46 forks source link

Advanced wallpaper adjustment resets custom positions #70

Closed jasonlovesgithub closed 3 years ago

jasonlovesgithub commented 3 years ago

Note: I will use keyboard layout metaphor to describe monitor position layouts. Use your US-EN keyboard as a visual reference.

Changing Advanced wallpaper adjustment features seems to wipe out Position settings to default "WASZ" centering. While this issue does not present a noticeable problem on [n]x1 or 1x[n] layouts, non-symmetrical layouts like "WASD" or "QWES" will see the layout default to a "WASZ" layout where the outermost left and right screens vertically align themselves to the the middle of the top plus bottom monitor span.

Span setting is confirmed: If your issue is with wallpaper spanning, check first that the OS background fitting style is set to 'span' (doesn't apply to KDE & XFCE).

To Reproduce Steps to reproduce the behavior: (You will need four monitors. For example, I have three Samsung SyncMaster 305T 2560x1600 monitors in a 3x1 portrait layout, plus a Dell 2007FP 1600x1200 monitor directly above the center monitor, for an inverted-T layout.)

  1. Open Superpaper. Notice that without a Settings profile selected, the monitor position layout matches the layout as described by the OS.

  2. Create a test profile where Span mode = Advanced span. Select a wallpaper path.

  3. Click Positions and arrange the monitors in a non-default layout, such as inverted-T. Click save. The layout will persist.

  4. In Advanced wallpaper adjustment, change any setting. The layout will revert to default "WASZ" layout.

Expected behavior Unless there is a specific reason to reset the entire layout when changing Advanced options, Positions should probably persist. If Positions cannot persist when changing Advanced options, then the default positions might return to the monitor positions as described by the OS.

Screenshots If applicable, add screenshots to help explain your problem. With spanning and perspective issues a photo of your screens showing the issue in the reproduced wallpaper would be invaluable.

*Context I have not tested this behavior with perspective profiles or other options. I don't expect something like Advanced span + Slideshow would cause this behavior. However, I can test other combinations of settings, or possibly with different hardware.

Desktop (please complete the following information):

positions_default_WASZ positions_custom_WASD

hhannine commented 3 years ago

The display positions as configured by the user are unfortunately lost if new bezel values are given. This is unfortunately by design since the OS does not know about the physical positions of the monitors, only about the digital topology of the desktop. And these two are not related one-to-one in complex setups, especially so if the displays have different PPI densities. This means that Superpaper needs to make a guess how you have your displays on your desk based on the desktop shape the OS gives. I've made the choice to center display columns vertically in this guess, which happens to give unideal results in your case.

So, is the setting you configured after the positions the bezel sizes? Then the solution is to set the bezel sizes first and then correct the positions. This is the only way, unfortunately.

I checked and regrettably I have not made any mention of this behavior in the help messages of these settings, I will add some warning, though it will still be easy to miss. One more option would be to let the user control this vertical centering behavior but it adds complexity to the UX and then the result is good only for some users after they try different guess algorithms.

hhannine commented 3 years ago

To elaborate a bit more why this is the case. Adding the bezel sizes changes the shapes and sizes of the displays unpredictably, and so I need to run the positions through the guessing algorithm again. The OS has no information about the bezel and gap sizes between the displays.

hhannine commented 3 years ago

Did I understand the issue correctly or is it something else?