15

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?

2
  • any more information needed please let me know!
    – rosghub
    Apr 20, 2017 at 22:25
  • 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.
    – Chen Xing
    Apr 15, 2018 at 2:53

5 Answers 5

20

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

3
  • 1
    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". Mar 19, 2019 at 18:24
  • 1
    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 Dec 3, 2021 at 10:27
  • What is the preferred way to do the same on Fedora Silverblue with immutable root fs?
    – hasrthur
    May 6, 2022 at 16:43
15

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.

5
  • This makes me unable to login until the changes is reverted.
    – Nur
    Sep 5, 2017 at 16:16
  • 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.
    – flyx
    Jan 23, 2018 at 14:27
  • 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 Dec 3, 2021 at 8:54
  • @MitchMcMabers For me on EndeavourOS based on Arch, this method worked but the override method did not work. Feb 26 at 7:29
  • This had a weird side-effect on JetBrain's IDE's such as Android Studio. They got super big. It seems that they get this scaling factor + Gnome setting's display scaling. The working solution for me was copying my user's monitors.xml to GDM. At first it did not seem to work, but that was because I was using fractional scaling of 1.75. GDM seems ignore fractional scaling. I changed it to 2, and the login screen was enlarged by 2x. Feb 26 at 7:43
5

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.

2
  • Can confirm this is the better solution, as I was also hitting the 400% scale issue from the first answer's comments. Sep 7, 2021 at 19:48
  • 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.
    – nuri
    Jan 20, 2022 at 8:15
1

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! :)

0

Expanding upon sfvdhrnu's answer, on Ubuntu 20.04 and 21.04 the /var/lib/gdm folder doesn't exist, but /var/lib/gdm3 does exist.

So the updated answer for 20.04 and 21.04 would become:

First you change DPI settings from Gnome settings, then,

sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/
sudo chown gdm:gdm /var/lib/gdm3/.config/monitors.xml   # probably optional

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .