Scaling Gnome login screen on HiDPI display
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:
-
First you change DPI settings from Gnome settings.
-
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! :)
Related videos on Youtube
rosghub
Updated on September 18, 2022Comments
-
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 about 7 yearsany more information needed please let me know!
-
Admin about 6 yearsDid 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 over 6 yearsThis makes me unable to login until the changes is reverted.
-
flyx over 6 yearsI 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 about 5 yearsI 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 about 5 yearsYes, thank you. It is!
-
Bruno Philipe over 2 yearsCan confirm this is the better solution, as I was also hitting the 400% scale issue from the first answer's comments.
-
Mitch McMabers over 2 yearsThis 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 over 2 yearsThis 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 over 2 yearsOn 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 about 2 yearsWhat is the preferred way to do the same on Fedora Silverblue with immutable root fs?