Horizontal panel widgets expand to incorrect display

Hi,

I’ve only been using Fedora as my daily driver for a few weeks now, but I love everything about it. I believe I will be here to stay. I am still working out some quirks, though. Some maybe relevant info:

OS: Fedora 38
Desktop Env: KDE Plasma
Windowing System: Wayland
GPU: 6950XT
Kernel driver in use: amdgpu
Displays: 3x -

  • 2560x1440 No rotation (Primary priority)
  • 1920x1080 90° Clockwise Rotation (Vertical, secondary priority)
  • 1920x1080 No rotation (Horizontal, tertiary priority)

The layout is like:

image

My problem is that I have left-docked panel on my primary display with a few widgets on it (Application Menu, Task Manager, System Tray, the like). When I open these widgets they “occasionally” (I can’t figure out any pattern to it) open the wrong way, leading them to expand on my vertical secondary monitor instead of the display the panel is docked on.

Here is a screenshot of the behavior:

(Note: The pink cat character is just a custom icon for the Application Menu widget).

This isn’t desired behavior, but I can’t figure out how to force the widgets to open on the correct display. The behavior isn’t consistent—When I log out and log back in, generally the widgets start opening on the desired display again, but at some point it shifts to the incorrect display and then I’m not sure how to reset it other than another relog.

It also does extra funky stuff sometimes like split the menu between both displays, for example here’s a RL photo of that behavior, making the Task Manager pretty tough to use:

If I can provide any other info or clarification just let me know. Thanks guys.

Edits 1-3: Clarifying stuff
Edit 4:

Some stuff I’ve already tried:

  • Re-positioning the vertical left display to different Y axis positions relative to the primary display, doesn’t seem to do anything.
  • Undocking the panel in edit mode and re-docking it, also doesn’t help.

It appears you may have set up the desktop to span the monitors, which could lead to behavior such as you show with things spanning between the screens, and potentially the appearing of windows on the other monitor.

If the system thinks it is one larger desktop spanning the screens then things tied to one monitor becomes irrelevant and position on the desktop becomes more relevant.

Interesting. Quick Google searches don’t show me how to edit the spanning properties of my desktop, though it did lead me to discover xrandr. My xrandr output looks like this (I removed all the irrelevant resolution lines that aren’t currently in use):

Screen 0: minimum 16 x 16, current 3640 x 2760, maximum 32767 x 32767
XWAYLAND1 connected primary 2560x1440+1080+1080 (normal left inverted right x axis y axis) 600mm x 340mm
   2560x1440    143.91*+
XWAYLAND5 connected 1920x1080+1080+0 (normal left inverted right x axis y axis) 530mm x 300mm
   1920x1080    143.80*+
XWAYLAND6 connected 1080x1920+0+840 left (normal left inverted right x axis y axis) 530mm x 300mm
   1920x1080    143.80*+

Of course I think xrandr is for X? So I found k-doctor, output of its json command is like this:

$ kscreen-doctor -j
{
    "features": 247,
    "outputs": [
        {
            "clones": [
            ],
            "connected": true,
            "currentModeId": "1",
            "enabled": true,
            "followPreferredMode": false,
            "icon": "",
            "id": 1,
            "modes": [
                {
                    "id": "0",
                    "name": "2560x1440@60",
                    "refreshRate": 59.95100021362305,
                    "size": {
                        "height": 1440,
                        "width": 2560
                    }
                },
                {
                    "id": "1",
                    "name": "2560x1440@144",
                    "refreshRate": 144.00599670410156,
                    "size": {
                        "height": 1440,
                        "width": 2560
                    }
                },
            ],
            "name": "DP-2",
            "overscan": 0,
            "pos": {
                "x": 1080,
                "y": 1080
            },
            "preferredModes": [
                "0"
            ],
            "priority": 1,
            "replicationSource": 0,
            "rotation": 1,
            "scale": 1,
            "size": {
                "height": 1440,
                "width": 2560
            },
            "sizeMM": {
                "height": 340,
                "width": 600
            },
            "type": 14,
            "vrrPolicy": 2
        },
        {
            "clones": [
            ],
            "connected": true,
            "currentModeId": "0",
            "enabled": true,
            "followPreferredMode": false,
            "icon": "",
            "id": 2,
            "modes": [
                {
                    "id": "0",
                    "name": "1920x1080@144",
                    "refreshRate": 143.9810028076172,
                    "size": {
                        "height": 1080,
                        "width": 1920
                    }
                },
            ],
            "name": "DP-1",
            "overscan": 0,
            "pos": {
                "x": 1080,
                "y": 0
            },
            "preferredModes": [
                "0"
            ],
            "priority": 3,
            "replicationSource": 0,
            "rotation": 1,
            "scale": 1,
            "size": {
                "height": 1080,
                "width": 1920
            },
            "sizeMM": {
                "height": 300,
                "width": 530
            },
            "type": 14,
            "vrrPolicy": 2
        },
        {
            "clones": [
            ],
            "connected": true,
            "currentModeId": "0",
            "enabled": true,
            "followPreferredMode": false,
            "icon": "",
            "id": 3,
            "modes": [
                {
                    "id": "0",
                    "name": "1920x1080@144",
                    "refreshRate": 143.9810028076172,
                    "size": {
                        "height": 1080,
                        "width": 1920
                    }
                },
            ],
            "name": "DP-3",
            "overscan": 0,
            "pos": {
                "x": 0,
                "y": 840
            },
            "preferredModes": [
                "0"
            ],
            "priority": 2,
            "replicationSource": 0,
            "rotation": 2,
            "scale": 1,
            "size": {
                "height": 1920,
                "width": 1080
            },
            "sizeMM": {
                "height": 300,
                "width": 530
            },
            "type": 14,
            "vrrPolicy": 2
        }
    ],
    "screen": {
        "currentSize": {
            "height": 2520,
            "width": 3640
        },
        "id": 0,
        "maxActiveOutputsCount": 3,
        "maxSize": {
            "height": 64000,
            "width": 64000
        },
        "minSize": {
            "height": 0,
            "width": 0
        }
    },
    "tabletModeAvailable": false,
    "tabletModeEngaged": false
}

NOTE: I removed all the unused ID entries from the above json, basically deleted all the stuff that wasn’t the currentModeId for a display.

I tried kanshi, wdisplays, and wlr-randr as well but they all gave me an unsupported message of some kind, akin to this:

$ wlr-randr
compositor doesn't support wlr-output-management-unstable-v1

I don’t really know what to make of any of this output. It looks like three separate displays instead of 1 big display here. But I’m new to the concept of the system seeing my displays as a single large desktop, do you have any pointers on where I can check that specifically?

EDIT: I realized when I move windows with meta+left/right/up/down it seems to snap to the sides of the displays individually. I don’t really know but I assume this means my desktop is respecting the concept of individual displays instead of spanning one big workspace.