I suspect that this may be more of a feature request than a question but...
PROBLEM
Correct me if I'm wrong, but it seems that this is the model that DisplayFusion uses to reference or locate window positions...
The entire desktop (including all displays) is a single map or field.
It has 2 axes, X and Y.
The origin, the point where the 2 axes cross, is determined by the top left pixel of the primary display.
This is position 0,0.
Each window is located within the single map of the desktop, as an offset from, or relative to, that point.
X values are negative left of that point and positive right of that point.
Y values are negative above that point and positive below that point.
Therefore, windows on secondary displays must be referred to relative to this single origin (the top left pixel of the primary display).
There is no way to refer to a window on a secondary display relative to the top left pixel of the display that it is on, is there?
I can see why it would make sense to design the backend of the application this way.
But, from a user's perspective, this can annoying. It involves a lot of extra calculations to work out the offsets initially. And then, if the display arrangement changes (a display is added, removed, rotated or moved left or right) then every function that depends on specific X Y positions needs to be recalculated.
I have several displays including 2x monitors and 2x TVs. Yesterday, I added a phone, acting as a little portable touch display (using a nifty free utility called SpaceDesk). The vertical resolutions of the 5 displays range from 576 to 2160 pixels).
Previously, I had aligned the displays by their top edges (in Windows). This was handy for calculations in DisplayFusion because the Y position on a secondary display was always a simple offset from 0 (the same as the primary display).
But that alignment caused practical problems moving the mouse pointer from one display to the next. So, I decided to align all the displays by their bottom edge, because I find I am more likely to slide the mouse along the taskbar from one to the other than to slide it along the top edge.
But now, in order to calculate the Y position, I can't just state how far from the top edge of that display it is (eg top 0 + offset 300 = 300). Now I have to first work out the offset of the top of that display relative to the origin (the primary display, which is 1200 high). For example, for the 2160 high secondary display, the top is 1200 - 2160 = -960. If I want a window to be positioned 300 from the top of that display, I have to set the Y position to be 300 - 960 = -660.
That makes my brain hurt!
FEATURE REQUEST
So, if I am right about everything above, then I'd like to request this feature...
When a user is creating a custom function, please add the option to:
"Move to Monitor X" AND "Specify Location" (on that monitor)
That is, to be able
specify a particular display, and then to simply
specify the X,Y position relative to (or offset from) the
top left of that specific monitor.
I suspect that that would be quite easy to implement in DisplayFusion. It would need to store information about the environment (eg the resolution of each display, and the relative positions and offsets of each display relative to the primary display). But I'm pretty sure that the application must already need to gather that information, given the other options which are currently available.
Please consider it. I think that many people would find it easier. Not just to simplify initial calculations, but also to remove the need to recalculate after rearranging displays. Even if the index number of the display changed, it would be far easier for the user to select the new display number than to start calculating the new X axis offset.
And for those who like the current system and are happy to do the maths, there could be a toggle (either a global one in the settings, or a per function one on the "create custom function" form). If using the latter, it could even calculate the offsets on the fly.
TIA