Skip to content

Conversation

@FreddyFunk
Copy link
Contributor

I got annoyed so much by the unreliable display arrangement interface that I actually went ahead and have rewritten this from scratch. After multiple wrestling attempts with iced/libcosmic I just decided to write a custom renderer for this use case (#1541 (comment)).

I also added proper display arrangement validation with graph traversals and prevent the user from applying an invalid arrangement. This does not prevent you from creating subjectively ugly layouts but at least it is guaranteed that you can reach any screen from any screen via the mouse.

closes #1541

fixes #1473
fixes #1107
should fix #890
fixes #888
fixes #817

before:

before.mp4

after:

after.mp4

@FreddyFunk FreddyFunk changed the title Feature/display arragement rewrite display arragement rewrite Nov 19, 2025
@FreddyFunk FreddyFunk force-pushed the feature/display-arragement-rewrite branch from 39a4fdb to a22f954 Compare November 19, 2025 00:55
@mmstick mmstick requested a review from a team November 19, 2025 01:49
@FreddyFunk FreddyFunk changed the title display arragement rewrite display arrangement rewrite Nov 19, 2025
@garrettjwilke
Copy link

  1. if you begin to drag a display and the mouse cursor leaves the "window" or "draggable area" and then release the mouse button, the settings window still thinks the mouse is active when it returns back to the settings window. this can create the illusion that your displays are set up and ready to go, and when you bring your cursor back to the window, the displays get reset

  2. if you attempt to drag a display up/down, it will appropriately move the display around, but when you reach a corner, it begins to wobble/shake very fast, making it difficult to place the display where you prefer.

  3. sometimes when dragging a display to adjust it's position, after releasing the mouse button to set the position, the mouse cursor ends up in random places (sometimes on completely different displays).

  4. some combinations of display positions/configurations work, while others with very similar positions will not work. i don't suspect this will happen to many users, but it feels like it should work (see photos below)
    the config below works:
    IMG_3238

but the following config will fail:
IMG_3239

@maria-komarova
Copy link
Contributor

I also added proper display arrangement validation with graph traversals and prevent the user from applying an invalid arrangement. This does not prevent you from creating subjectively ugly layouts but at least it is guaranteed that you can reach any screen from any screen via the mouse.

It would make for a better user experience if we don't show "Invalid arrangement..." message and instead find an automatic solution without resorting to invalid layouts. The invalid layout message frustrates the user when the user is still trying to achieve the layout that is valid. For example, using your screen recording. If I have laptop (display 1 on the recording) sitting underneath an external display (display 3) and another external display vertically to the right of those two (display 2).
IMG_9972
My first inclination in this case is to move display 3 above display 1 but the UI prevents me from doing it because then we get a gap to display 2. If we automatically remove the gap and move display 2 towards 1 and 3, that would eliminate the need for what looks like an error message. Alternatively we can move display 2 to the area that was left open by the previously moved display (whatever logic would account for more cases).
I also failed to move display 3 to the left of display 1 regardless of how I tried but that is a possible layout and should be possible to do through the UI. Preventing the user from doing it will result in a lot of frustration and annoyance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants