Categories
Linux Mastering Development Ubuntu

Inconsistent Resolution / Positions / Fractional Scaling for 4K Display & HD Display Using NVIDIA Drivers

Inconsistent Resolution / Positions / Fractional Scaling for 4K Display & HD Display Using NVIDIA Drivers


Background

So, I’ve recently moved back onto Ubuntu after deciding to take a break from Linux around just
over 1 year ago which is when I bought a 4K display. Reason being, I did not have much fun trying to support a 1920×1200 display + 3840×2160 display using xrandr scripts and whatnot.

I did some research again recently to see how support was coming along and I found the following information:-

  • Ubuntu Wiki: FocalFossa/ReleaseNotes

    X11 fractional scaling.

  • Multiple external monitors | HiDPI – ArchWiki

    The HiDPI setting applies to the whole desktop, so non-HiDPI external displays show
    everything too large. However, note that setting different scaling factors for different monitors is already supported in Wayland.

  • Requirements | Wayland – ArchWiki

    ┌-------------┬-----------------------┬---------------------------┐
    │Buffer API   │GPU driver support     │Wayland compositor support │
    ├-------------┼-----------------------┼---------------------------┤
    │GBM          │All except NVIDIA      │All                        │
    ├-------------┼-----------------------┼---------------------------┤
    │EGLStreams   │NVIDIA                 │GNOME, KDE                 │
    └-------------┴-----------------------┴---------------------------┘
    

And that, to me, basically said a combination of the following things…

  • Gnome / NVIDIA Drivers / Ubuntu

… would give me what I want; a system that can manage per-monitor fractional scaling without any issues out of the box.


Problems & Current Workarounds

Fractional scaling does appear to work and I can have different scaling options per-monitor albeit with the following caveats, which are at least bearable:

  • Login screen does not retain scaling settings (less of an issue)

  • Scaling options are not retained post-login (not so bad)

  • I set my display settings like so after each login (in this exact order otherwise the displays will overlap and / or switch off the 4K display):

    1. Right click –> Display Settings
    2. Revert from ‘Single Display’ to ‘Join Displays’ (only the lo-res display will be active at this point)
    3. Set the 4K display to primary
    4. Leave scaling at 100% on both displays and position them side-by-side
    5. Hit apply
    6. The scaling is still at 100% so change the 4K display to 175% and hit apply
    7. The displays will span across one another but will retain the 100% / 175% scaling settings, so… (trying to reposition the monitors in ARandR or Display Settings again will result in going back to step 1)
    8. Open NVIDIA X Server Settings
    9. Open the ‘X Server Display Configuration’ tab
    10. Drag apart the overlapping displays back to their correct positions.
    11. Apply
    12. Quit

System will now persist with per-monitor scaling until rebooted or if something refreshes the displays etc.


Summary

I hope that’s enough information. What I would ideally like is just for the settings to work without any workaround but it’s not the end of the world. If someone could help automate the above process using some other means, I would be very grateful.

Due to the odd nature, I was hoping that maybe it was just a bug that could be resolved in a future update too because, as stated, I can run per-monitor scaling. It just takes a bit of extra work…


Updates

I have just read the latest Linux Mint release notes and it appears that they may have cracked the problem. I don’t want to spend too much time setting up an OS from scratch again too soon but for those who are interested, here is the link (under header Cinnamon 4.6):

https://www.linuxmint.com/rel_ulyana_cinnamon_whatsnew.php

Thanks to those who have replied and/or reviewed my post.

Leave a Reply

Your email address will not be published. Required fields are marked *