New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sddm is super tiny with external screen since 0.14 #692
Comments
Same behaviour with my laptop. |
I think it is related with this commit 1af96a0 It enables Qt::AA_EnableHighDpiScaling. https://doc-snapshots.qt.io/qt5-5.6/qtlabscontrols-highdpi.html |
Yeah that's related to hidpi, apparently it's not always handled correctly on Xorg :-/ |
@darkbasic if you want to build a patched version of sddm to disable hi-dpi in sddm.conf for archlinux. Here is my abs tree with modified PKGBUILD abs.zip |
Thanks, I will also have to patch my systemd unit file because I want EnableHiDPI in sddm.conf to be set while my external monitors are not attached (my laptop's main screen is hidpi), while I want it disabled while the external screens are connected. Running something like this just before sddm should do the trick: xrandr -q | grep -v eDP1 | egrep "DP1 connected|DP1-1 connected|DP1-8 connected|HDMI1 connected|DP-1 connected" if [ $? -eq 0 ]; then |
@darkbasic it might be easier to not enable it in sddm and use the QT_AUTO_SCREEN_SCALE_FACTOR=1 environment variable when you want it. |
Badly broken too: https://bugreports.qt.io/browse/QTBUG-52202 |
Yes but this environment flags set the same things as enabling the Qt::AA_EnableHighDpiScaling attribute. It seams to work on some setups and not on other that is why I made a patch to disable the activation of this attribute. |
A sizable amount of monitors have completely broken EDID information, which is what Qt uses as a base. There's a whole line of Samsung monitors that mix up inches and cm, others mix up mm and cm - and some just blatantly lie. In Plasma we turn off auto for this reason. I was a bit curious to see how SDDM would fare, where it's not as critical if this one screen is off. Given we can't physically fix monitors ideally we need robust checking in Qt, but maybe we can do something in SDDM. Like on startup we check screen.height < 2000, turn off scaling. Will prevent the super tiny cases. Won't stop SDDM being super massive though. |
@davidedmundson scaling involves device pixel ratio, each screen has a different device pixel ratio thus we should rather force devicePixelRatio to 1.0 if resolution has height < 2000 but we can't do that from SDDM without help from QPA. |
We can also add an option to change DPI see #672 (or maybe physical size assuming it's possible) |
With Nvidia driver it is possible to dump the screen EDID, patch it and configure nvidia driver to use the one in the file instead of the one within the I2C eeprom of the screen. I don't know if it is possible with other GPU. For patching The EDID directly in the screen you have to write the value to I2C. You might also have to make a physical modification (write protect pin of the I2C EEPROM connected to GND instead of VCC) if the screen's manufacturer used WP. I also used in the past a modified DVI cable where the I2C bus was connected to an external I2C EEPROM instead of the one in the screen, to fake the id of the screen. |
The one million dollar question is: how does Windows correctly handle this? |
I just noticed that Gnome on Fedora 25 beta correctly handles everything, on Wayland I even get per-output scaling when mixing standard and hidpi monitors. Why can't QT correctly handle this like GTK3 does? |
@ynsta @davidedmundson I dumped my monitors' EDID. This is my laptop's 3200x1800 13" HiDPI monitor: https://bpaste.net/show/0e34f12832d9 Both show Horizontal Display Size and Vertical Display Size in mm and the size information is correct. You can check it with http://www.edidreader.com/ So what's wrong with QT regarding EDID parsing? The EDID seems fine and it works in Gnome. |
Hello, I think you should fill a bug repport to Qt project with your edid files. On Thu, Oct 27, 2016 at 10:28 PM, Niccolò Belli notifications@github.com
|
Isn't this enough? https://bugreports.qt.io/browse/QTBUG-52202 |
Well, what Qt does on X11 is basically qRound(yourDpi/96) - which means you're getting 2x scaling even when you have just a DPI of 144. There's no centralized way how to set this except the QT_SCREEN_SCALE_FACTORS environment variable that applies only to Qt 5.6+ applications. It of course doesn't scale for coming and going monitors etc. @darkbasic I think I win the million dollar question: they just guess the scaling but let you set whatever you want yourself, per-monitor, in steps of 0.25. Works pretty good if you ask me. |
Are they crazy? No one wants a real 96 dpi scaling, even a 1280x720 13.3" monitor is 110 dpi: 96 dpi is 1024x768 on 13.3", which nobody wants. Personally I would like to target 1600x900 on 13.3" which is 138 dpi. Also if you don't offer decimal scaling you should NEVER round up, on the contrary you should always round down (especially if you target such a nonsense like 96 dpi). |
Setting X11 "ServerArgument=-nolisten tcp -dpi 333" in /etc/sddm.conf did the trick for me. (This DPI value is valid for my UHD 13.3in display) Although convenient when using the integrated HiDPI display on my laptop, I don't think that this will solve issues with multiple monitors / multiple DPI setups. I guess results may vary next time I hook up this laptop to a HD projector or external display. |
By the way I noticed that using xf86-video-intel I get super tiny characters on my low-dpi external monitor, while it works flawlessly with modesetting. |
Will this error be corrected in next release? And when will be available? Thanks. |
I have same issue in 0.15 version (openSUSE Tumbleweed): fonts and dialog are very small if nvidia proprietary driver selected and look ok with noveau. |
Try SDDM 0.16, you should be able now to activate HiDPI settings in the config file. |
Will do when it appears in openSUSE. |
Have just installed I wonder why did it get broken in |
I don't like the scaling as it usually looks blurry and unsharp on my 4k screens. Reading your comment I would recommend to try to really enable scaling with |
|
I also encountered this issue and invested some time in debugging this. For whatever reason, the physical display size was not set before the login which resulted in the default dpi setting. You can add I was able to fix this by manually setting the display size via an xorg configuration file:
Replace |
The correct syntax is something like this:
Would be nice if if could auto-detect the DPI automatically so this wasn't necessarty. |
After 4y of this report this is still doesn't work on fresh install on Kubuntu 21.10 :/ ? |
Yay necro on a super old issue 🫠. Just switched to Fedora 39 with KDE and I see the same problem as described. |
Hi, I just upgraded to 0.14 and HiDPI support worked as expected with my Dell XPS 13 QHD+ (3.200x1.800) out of the box. Unfortunately, when I boot with the LID closed and two 2560x1440 25" external monitors attached I get a super tiny sddm instead. I didn't have such a problem with 0.13 and earlier releases. I use my laptop mostly with the external monitors attached so this is quite annoying. Distro is Archlinux.
The text was updated successfully, but these errors were encountered: