SDDM dpi/resolution problems

Hi everyone! New to Endeavour OS. Just did a fresh install and first thing I did was to set up the nvidia drivers using instructions here. I installed optimus manager too and it’s currently on hybrid mode.

My 15.6" laptop supports 4k @ 3840 x 2160 but since this is too small for me, I ended up using 2560x1440 at 150% scaling.

Everything is okay so far but I can’t seem to get SDDM / log in screen to change resolution/DPI at all. It is still showing as 4k so text is very tiny.

Typing xdpyinfo | grep -B2 resolution shows the below

screen #0:
  dimensions:    2560x1440 pixels (676x380 millimeters)
  resolution:    96x96 dots per inch

Things I have tried after searching around:

  1. “Apply plasma settings” in SDDM settings

I initially tried this to change the background image, but noticed this would only apply once and reset every time I restart (it would go back to default image). So I just changed background according to theme.conf.user file as stated here.

Changing to another theme asides from the default breeze didn’t work either. In either case it never changed the resolution/DPI.


2. Adding
[X11]
ServerArguments=-nolisten tcp -dpi 96

to a number of different files:
/etc/sddm.conf - was intially blank
/etc/sddm.conf.d/dpi.conf - didn’t exist, tried creating the file
/etc/sddm.conf.d/hidpi.conf - didn’t exist, tried creating the file
/etc/sddm.conf.d/kde_settings.conf - changed the DPI
/usr/lib/sddm/sddm.conf.d/default.conf - along with setting EnableHiDPI=true

  1. https://www.dedoimedo.com/computers/plasma-hd-uhd-scaling-sddm-login-screen.html

  2. Switching off hybrid mode to use Intel GPU/Nvidia GPU at startup

  3. Changing the dpi number to something else ex. 142

When I try sddm-greeter --test-mode --theme /usr/share/sddm/themes/breeze , it shows fine and in the right resolution.

Hoping someone can help point me in the right direction of where to look! Not system breaking but it is quite annoying.

  1. Undo all your changes, to start from a clean start.
  2. The proper way to apply custom SDDM settings is as a drop-in file in this folder, with .conf extension
/etc/sddm.conf.d/
  1. Don’t use /etc/sddm.conf. Delete it.
  2. Check your full set of active settings:
for conf in /usr/lib/sddm/sddm.conf.d/*.conf /etc/sddm.conf.d/*.conf /etc/sddm.conf ; do if [[ -r $conf ]]; then echo -e "\n### From $conf"; grep . "$conf" | grep -v '#';fi;done
  1. Look for overridden settings (same setting in more than one file)
  2. Read man sddm.conf for info about each setting.
  3. Change one thing at a time and test.
  4. Read log files, to see differences in messages. Log files paths for sessions are showed in settings files. Xorg logs and journal logs would help.
  5. SDDM is a user on its own, so you can check its $HOME for any usefull setting, or logs in the path /var/lib/sddm/ . Example:
sudo grep -r . "/var/lib/sddm/.config/"

Thank you for your reply.

I have followed your advice and made an sddm.conf file in /etc/sddm.conf.d/. I just copied over the [X11] portion from /usr/lib/sddm/sddm.conf.d/default.conf and made changes to the DPI portion, and it worked! Login screen now showing at proper scale.

However - noticed nvidia optimus manager was no longer running. The sddm.conf was conflicting with 20-optimus-manager.conf, and once I followed instructions as indicated here, optimus works again but then it doesn’t pass the correct DPI option I set.

Are these two mutually exclusive?

I cannot answer, as I cannot find the contents in scripts/executables of optimus-manager:

[X11]
DisplayCommand=/sbin/prime-offload
DisplayStopCommand=/sbin/prime-switch

If they are just scripts, would you mind posting contents of them?
If not, any info about usage might help (man page, command help, etc.).

I assume there must be a way to pass dpi setting in the configuration files being used/swaped with optimus-manager usage (toggling state).

Added:
I guess the relevant files (scripts) are here (xsetup-* is the equivalent of the SDDM Xsetup scripts, one for each mode, and the rest are for customized optimus commands).

Messed around with the xsetup scripts under etc/optimus-manager and unfortunately didn’t have much luck.

But did some more digging and found a solution that worked for me!

Found here

  1. Edit /usr/lib/python3.10/site-packages/optimus_manager/xorg.py
  2. Comment out dpi_str = config["nvidia"]["dpi"] and replace with
    dpi_str = "188"

To add for future reference: Am using integrated mode and also tried messing with the respective conf file as mentioned here but this didn’t work. Only editing the python file did.

And with that my DPI problem with SDDM + Optimus manager is finally solved :grin:

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.