Setting monitor geometry and physical size for KWin 6 Wayland session

How do I set the monitor layout, geometry and their physical size for a KWin/Plasma 6 Wayland session?

Especially, the physical size of each monitor is important to such that the DPI values are calculated correctly such that 100% zoom (e.g. a DIN-A4 page in LibreOffice or Inkscape) appears at the same size as a DIN-A4 page in the real world. Unfortunately, my monitors report an incorrect physical size.

With KWin/Plasma 5 on XOrg I had the following settings in my XOrg configuration.

Section "Device"
    Identifier "AMD RX 6600 (Navi23 Dimgrey Cavefish Family)"
    Driver "amdgpu"
    Option "AccelMethod" "glamor"
    Option "DRI" "3"
    Option "Monitor-DisplayPort-0" "EIZO-0"
    Option "Monitor-DisplayPort-1" "EIZO-1"
    Option "Monitor-DisplayPort-2" "EIZO-2"
EndSection

Section "Monitor"
        Identifier "EIZO-0"
        DisplaySize 520 325
        Option "PreferredMode" "1920x1200"
        Option "Position" "3120 720"
        Option "DPI" "94"
EndSection

Section "Monitor"
        Identifier "EIZO-1"
        DisplaySize 520 325
        Option "Primary" "yes"
        Option "PreferredMode" "1920x1200"
        Option "Position" "1200 720"
        Option "DPI" "94"
EndSection

Section "Monitor"
        Identifier "EIZO-2"
        DisplaySize 520 325
        Option "PreferredMode" "1920x1200"
        Option "Rotate" "left"
        Option "Position" "0 0"
        Option "DPI" "94"
EndSection

I figured that there is a file named kwinoutputconfig.json. However, I did not find any documentation on its schema. Especially, I did not find an attribute which looked like a setting for DPI or physical size.

See Return DPI resolution adjustments in font settings support

And 486599 – Request for a use-native-DPI setting

I forgot about this other thread:

Thanks for all the links. I read through the posts and also tried the workaround with the environment variable QT_USE_PHYSICAL_DPI=1. But it didn’t help to solve the issue.

I added a rather long response in one of those threads. :see_no_evil: