Scaling Gnome login screen on HiDPI display

17,762

Solution 1

Persistent over upgrades approach could be to create file /usr/share/glib-2.0/schemas/93_hidpi.gschema.override with

[org.gnome.desktop.interface]
scaling-factor=2
text-scaling-factor=0.87

(0.87 to make fonts bit smaller, safe to omit if you don't want to)

And reinit schemas sudo glib-compile-schemas /usr/share/glib-2.0/schemas

Solution 2

Was searching for a solution as well and found this:

http://askubuntu.com/questions/469515/adjust-text-scaling-factor-for-all-users

tl/dr

sudo nano /usr/share/glib-2.0/schemas/org.gnome.desktop.interface.gschema.xml

Change the default value to 2 (or your desired scale factor):

<key name="scaling-factor" type="u">
<default>2</default>

and then running:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

This fixed it for me. Let me know if it works for you as well.

Solution 3

Edit: This method appears to only work when login screen and user session are using the same windowing system(X11 or Wayland). So if it doesn't work try changing your session type in the bottom-left of the login screen.

This should also work:

  1. First you change DPI settings from Gnome settings.

  2. Then execute:

    sudo cp ~/.config/monitors.xml ~gdm/.config/
    

And it should work with Ubuntu as well.

@gonk23 mentioned chown, I personally didn't find that necessary, however it should be safer to set the correct permission:

sudo chown gdm:gdm ~gdm/.config/monitors.xml 

Found a solution here.

First you change DPI settings from Gnome settings.

Then, copy

~/.config/monitors.xml

to

/var/lib/gdm/.config/monitors.xml

So the command is

sudo cp ~/.config/monitors.xml /var/lib/gdm/.config/

The advantage over recompiling configurations is that this method works on Fedora Silverblue where you got a read only /usr so editing /usr/share/ is not realistic. It also applies the user monitor refresh rate settings to login screen.

Solution 4

Don't edit the XML files directly. They are core system files which can be overwritten by OS updates!

The correct way to create custom changes that persist across upgrades is to create gschema.override files, which are explained here:

https://www.freedesktop.org/software/gstreamer-sdk/data/docs/2012.5/gio/glib-compile-schemas.html

Basically, the GSettings XML Schema compiler reads the XML files first, and then it reads all of the override files in the folder. They recommend naming the override files with nn_ where nn is a number from 00 to 99, since it reads and sorts the file list. Therefore, the higher your number prefix, the later in the file list it will be processed, and therefore the higher "priority" the override has (with 99 being maximum), since higher numbers will be applied later during the processing.

You can therefore create the following file to give your changes the maximum priority (note that the filename doesn't matter, but our 99 prefix means that it will load after all other conventional override files):

/usr/share/glib-2.0/schemas/99_hidpi.gschema.override

In that file, you need to specify the settings area you want to override, and the individual settings. To change the scaling to 200%, you would change the factor to 2. Note that fractional scaling isn't supported. Valid numbers are 0 (auto detect, this is the default and doesn't work well and usually just auto-picks 1), or explicitly defined values of 1/2/3/4 for 100/200/300/400% respectively.

You can also set a global text scaling factor in the same file, if you prefer having slightly smaller fonts in your 200% scaled GUI.

Both settings are demonstrated here:

[org.gnome.desktop.interface]
scaling-factor=2
text-scaling-factor=0.87

(The text-scaling-factor supports fractional scaling, and 0.87 will make fonts a bit smaller, but that whole line is safe to remove if you don't want to change the font scaling at all.)

After you've created your personal overrides-file, you need to recompile the GSettings database to make your settings take effect, because the actual database is binary and is created from the XML and override files. All you need is this simple command:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

Enjoy!

PS: This was originally submitted as an edit to Lauri's answer, but StackExchange's moderators told me "Please submit a new answer with this information since the edits are substantial". So here you go! Huge thanks to Lauri for the original answer! :)

Share:
17,762

Related videos on Youtube

rosghub
Author by

rosghub

Updated on September 18, 2022

Comments

  • rosghub
    rosghub over 1 year

    Running Ubuntu Gnome 17.04 on Lenovo yoga 2 pro. Display is 3200x1800. My desktop scales fine, and was done automatically without any configuration when installing. My login screen however, everything is tiny. How can I scale this to match my desktop?

    I've tried

    sudo xhost +SI:localuser:gdm
    sudo su gdm -s /bin/bash
    gsettings set org.gnome.desktop.interface scaling-factor 2
    

    and no difference. Also setting large text in universal access settings seems to have no effect.

    I thought this was the correct way to change gdm interface settings? Any other ideas?

    • Admin
      Admin about 7 years
      any more information needed please let me know!
    • Admin
      Admin about 6 years
      Did the command give you an error? xhost doesn't work in Wayland, when I ran "xhost +" and then the 2 commands in X, it works for me.
  • Nur
    Nur over 6 years
    This makes me unable to login until the changes is reverted.
  • flyx
    flyx over 6 years
    I am using 200% scale in GNOME's display settings on my desktop. This solution for the login screen stacks with my setting, so that I do have proper text size on the login screen, but suddenly have 4 times text scaling on my desktop.
  • Peter De Maeyer
    Peter De Maeyer about 5 years
    I suppose "persistent approach" here means that it's "persistent across upgrades", while the first approach is just "persistent until the file is overwritten again by an upgrade".
  • Lauri
    Lauri about 5 years
    Yes, thank you. It is!
  • Bruno Philipe
    Bruno Philipe over 2 years
    Can confirm this is the better solution, as I was also hitting the 400% scale issue from the first answer's comments.
  • Mitch McMabers
    Mitch McMabers over 2 years
    This answer is WRONG. Do NOT change scale by editing the core XML system files. They are not meant for user editing! It will vanish if a system update replaces that file. Use the user-option overrides file instead, as described in Lauri's answer: askubuntu.com/a/1126769/1173262
  • Mitch McMabers
    Mitch McMabers over 2 years
    This is the only correct answer... Using the overrides file is the only correct way to persist the changes across every system update Thanks a lot, Lauri! I initially made an edit to your answer to add more information about the override system, to spread the knowledge, but the StackExchange moderators wanted me to post it as a new answer instead, so here's the link to a more detailed explanation of your suggestion above. I've credited you in my answer! :) askubuntu.com/a/1378987/1173262
  • nuri
    nuri over 2 years
    On Ubuntu 20.04, the right command is sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/ because the folder /var/lib/gdm does not exist.
  • Admin
    Admin about 2 years
    What is the preferred way to do the same on Fedora Silverblue with immutable root fs?