regolith-linux / remontoire

A keybinding viewer for i3 and other programs.
GNU General Public License v3.0
68 stars 8 forks source link

Problem with multiple monitors, different display sizes, placement of Remontoire #8

Closed royrwood closed 3 years ago

royrwood commented 4 years ago

With multiple monitors, Remontoire shows up and moves unpredictably. If the secondary monitor has focus, Remontoire initially shows up centered on the secondary display, but then jumps back to the primary display (and warps the pointer with it) once you interact with Remontoire.

As well, if Remontoire is set to align "east", odd things happen with placement if the primary display size is smaller than the secondary monitor. Remontoire tries to align to the right edge, but spills over into the secondary display, particularly when the dropdowns are toggled and the window size increases in width. This may be because my primary display native size is 1920x1080 and I'm only running it at 1200x900. The secondary is 1920x1080, and I'd need a different secondary that is a different size to confirm (I'll try to get access to another monitor to confirm).

m10d commented 4 years ago

similar problem. I glanced at the code, the positioning logic is quite simple, but only half of my problem is easily explained by the code.

My setup:

I see two issues:

  1. I'm not able to get remontoire to open on the portrait screen at all. It only opens on the landscape/primary no matter where I launch it from. The code seems to get the monitor from the window object state ... should be grabbing the active display at that time? So it's not clear to me what this issue is; although not being that familiar with GTK I don't have much insight here.

  2. then I have the same layout issue as the OP. I think this is a simple omission; My portrait rises "higher" than the landscape/primary, so the actual virtual geometry of the 'canvas' really includes a 'nop pixels' in the upper-left; the logic needs to factor in screen offsets in addition to overall geometry/size of the monitor, not just its size, for the call to window.move()

kgilmer commented 4 years ago

Thanks for the details @mikemaxfield! I believe the GTK API's used to retrieve the dimensions of the monitors is not accounting for portrait/landscape modes. There may be other issues in which the reported dimensions are merged across screens. I haven't had a chance to look into it recently, but you may be able to work around the issue in the short term by changing the orientation setting in Remontoire to West or North (depending on your setup).

kgilmer commented 3 years ago

This was fixed in 1.4