2

Just got a Lenovo Thinkpad, installed Ubuntu 20.04, and below are the screenshots of my full screen when checking the display scale options for

  • 100% scale: as you may see, the font/symbols are insanely tiny enter image description here

  • 200% scale: still pretty small, hence I had to roll with 300% (which is on a larger side, but there's no option for fractional scaling at 250%, it's only available between 100 and 200) enter image description here

Does anyone know why that is happening? Why is scale of 100% looking so tiny as opposed to being a reasonable option as usual? Is it likely to be a Lenovo issue rather than Ubuntu 20.04? I'd used Ubuntu 16.04 & 18.04 on Dell before (not 20.04 though), and it was never an issue. Or maybe it's due to resolution?

  • fractional scaling have you tried which is 1.25 1.5 1.75 etc? – UnKNOWn Jun 10 at 4:37
  • Fractional scaling works only between 100 and 200, which are both too small. Unfortunately it doesn't extend beyond 200 (it least judging by what I see from GUI), because 250 or so would've been perfect – UsDAnDreS Jun 10 at 14:43
  • in your screenshot I observed that you have not turned on fractional scaling.. 0r am I wronG?? – UnKNOWn Jun 10 at 16:31
  • If I turn it on, it will just give me the 100-125-150-175-200 options, none of which are large enough – UsDAnDreS Jun 10 at 20:09
  • 0k.. you can manually adjust the scale.. can you paste the output 0f cat $HOME/.config/monitors.xml – UnKNOWn Jun 11 at 0:04
1

Ubuntu does not know the size of your screen and thus does not know about its pixel density.

For example on a 15" screen 100% might be tiny, but on a 32" screen with the same resolution 100% would fit just fine. That is why you can change the scaling to fit your screen size manually.

Your Lenovo laptop has a higher pixel density than your Dell Laptop.

| improve this answer | |
  • 1
    Got it, thank you. With that said, does there happen to be an option for fractional scaling for ranges above 200? E.g. I have options 100, 200, 300, 400; and then for fractional I have everything in-between 100 & 200, but nothing above 200 (e.g. 250 would've probably been perfect) – UsDAnDreS Jun 10 at 14:46
  • 1
    I think this would definitely be a good question to ask here ;-) – pLumo Jun 10 at 14:59
0

Workaround

run the below command when fractional scale is not enabled.

enter image description here

gdbus call --session --dest org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.GetCurrentState

Example:

$ gdbus call --session --dest org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.GetCurrentState
(uint32 7, [(('eDP-1-1', 'SDC', '0x4141', '0x00000000'), [('1366x768@59.998008728027344', 1366, 768, 59.998008728027344, 1.0, [1.0, 2.0], {'is-preferred': <true>}), ('1360x768@59.798992156982422', 1360, 768, 59.798992156982422, 1.0, [1.0, 2.0], {}), ('1360x768@59.960025787353516', 1360, 768, 59.960025787353516, 1.0, [1.0, 2.0], {'is-current': <true>}), ('1280x720@120.00162506103516', 1280, 720, 120.00162506103516, 1.0, [1.0, 2.0], {}), ('1280x720@119.98211669921875', 1280, 720, 119.98211669921875, 1.0, [1.0, 2.0], {}), ('1280x720@59.855125427246094', 1280, 720, 59.855125427246094, 1.0, [1.0, 2.0], {}), ('1280x720@59.744712829589844', 1280, 720, 59.744712829589844, 1.0, [1.0, 2.0], {}), ('1024x768@120.07466888427734', 1024, 768, 120.07466888427734, 1.0, [1.0], {}), ('1024x768@60.003841400146484', 1024, 768, 60.003841400146484, 1.0, [1.0], {}), ('960x720@120', 960, 720, 120.0, 1.0, [1.0], {}), ('928x696@120.101318359375', 928, 696, 120.101318359375, 1.0, [1.0], {}), ('896x672@120.02888488769531', 896, 672, 120.02888488769531, 1.0, [1.0], {}), ('1024x576@119.90670776367188', 1024, 576, 119.90670776367188, 1.0, [1.0], {}), ('1024x576@119.91866302490234', 1024, 576, 119.91866302490234, 1.0, [1.0], {}), ('1024x576@59.899215698242188', 1024, 576, 59.899215698242188, 1.0, [1.0], {}), ('1024x576@59.819515228271484', 1024, 576, 59.819515228271484, 1.0, [1.0], {}), ('960x600@119.865478515625', 960, 600, 119.865478515625, 1.0, [1.0], {}), ('960x600@119.99750518798828', 960, 600, 119.99750518798828, 1.0, [1.0], {}), ('960x540@119.92568969726562', 960, 540, 119.92568969726562, 1.0, [1.0], {}), ('960x540@119.97574615478516', 960, 540, 119.97574615478516, 1.0, [1.0], {}), ('960x540@59.6290283203125', 960, 540, 59.6290283203125, 1.0, [1.0], {}), ('960x540@59.818218231201172', 960, 540, 59.818218231201172, 1.0, [1.0], {}), ('800x600@120', 800, 600, 120.0, 1.0, [1.0], {}), ('800x600@60.316539764404297', 800, 600, 60.316539764404297, 1.0, [1.0], {}), ('800x600@56.25', 800, 600, 56.25, 1.0, [1.0], {}), ('840x525@120.01870727539062', 840, 525, 120.01870727539062, 1.0, [1.0], {}), ('840x525@119.76650238037109', 840, 525, 119.76650238037109, 1.0, [1.0], {}), ('864x486@59.91534423828125', 864, 486, 59.91534423828125, 1.0, [1.0], {}), ('864x486@59.5703125', 864, 486, 59.5703125, 1.0, [1.0], {}), ('800x512@120.33700561523438', 800, 512, 120.33700561523438, 1.0, [1.0], {})], {'is-builtin': <true>, 'display-name': <'Built-in display'>})], [(0, 0, 1.0, uint32 0, true, [('eDP-1-1', 'SDC', '0x4141', '0x00000000')], @a{sv} {})], {'renderer': <'xrandr'>, 'layout-mode': <uint32 2>, 'global-scale-required': <true>, 'legacy-ui-scaling-factor': <1>, 'max-screen-size': <(16384, 16384)>})
$

from the above result, note that at the start of the output "(unit32 7" the value 7 varies and it is very important. Note that value in your case.

Next read the common pattern with many different values.. like this

'1366x768@59.998008728027344', 1366, 768, 59.998008728027344, 1.0, [1.0, 2.0]

1366x768@59.998008728027344: mode ID
1366: width in physical pixels
768: height in physical pixels
59.998008728027344: refresh rate
1.0: scale preferred as per calculations
[1.0, 2.0]: scales supported by the above mode (1366x768@59.998008728027344)

This means that out of the available modes..( there are plenty of modes as per the output ) If you choose 1366x768@59.998008728027344 this mode.. you have only two scales available [1.0, 2.0]

Now enable the fractional scale and run the command again..

$ gdbus call --session --dest org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.GetCurrentState
(uint32 7, [(('eDP-1-1', 'SDC', '0x4141', '0x00000000'), [('1366x768@59.998008728027344', 1366, 768, 59.998008728027344, 1.0, [1.0, 2.0], {'is-preferred': <true>}), ('1360x768@59.798992156982422', 1360, 768, 59.798992156982422, 1.0, [1.0, 1.2307692766189575, 1.4545454978942871, 1.7777777910232544, 2.0], {}), ('1360x768@59.960025787353516', 1360, 768, 59.960025787353516, 1.0, [1.0, 1.2307692766189575, 1.4545454978942871, 1.7777777910232544, 2.0], {'is-current': <true>}), ('1280x720@120.00162506103516', 1280, 720, 120.00162506103516, 1.0, [1.0, 1.25, 1.5094339847564697, 1.7391303777694702, 2.0], {}), ('1280x720@119.98211669921875', 1280, 720, 119.98211669921875, 1.0, [1.0, 1.25, 1.5094339847564697, 1.7391303777694702, 2.0], {}), ('1280x720@59.855125427246094', 1280, 720, 59.855125427246094, 1.0, [1.0, 1.25, 1.5094339847564697, 1.7391303777694702, 2.0], {}), ('1280x720@59.744712829589844', 1280, 720, 59.744712829589844, 1.0, [1.0, 1.25, 1.5094339847564697, 1.7391303777694702, 2.0], {}), ('1024x768@120.07466888427734', 1024, 768, 120.07466888427734, 1.0, [1.0, 1.2487804889678955, 1.4970760345458984], {}), ('1024x768@60.003841400146484', 1024, 768, 60.003841400146484, 1.0, [1.0, 1.2487804889678955, 1.4970760345458984], {}), ('960x720@120', 960, 720, 120.0, 1.0, [1.0, 1.25, 1.5], {}), ('928x696@120.101318359375', 928, 696, 120.101318359375, 1.0, [1.0, 1.2473118305206299], {}), ('896x672@120.02888488769531', 896, 672, 120.02888488769531, 1.0, [1.0, 1.251396656036377], {}), ('1024x576@119.90670776367188', 1024, 576, 119.90670776367188, 1.0, [1.0, 1.2799999713897705, 1.4883720874786377], {}), ('1024x576@119.91866302490234', 1024, 576, 119.91866302490234, 1.0, [1.0, 1.2799999713897705, 1.4883720874786377], {}), ('1024x576@59.899215698242188', 1024, 576, 59.899215698242188, 1.0, [1.0, 1.2799999713897705, 1.4883720874786377], {}), ('1024x576@59.819515228271484', 1024, 576, 59.819515228271484, 1.0, [1.0, 1.2799999713897705, 1.4883720874786377], {}), ('960x600@119.865478515625', 960, 600, 119.865478515625, 1.0, [1.0, 1.25, 1.5], {}), ('960x600@119.99750518798828', 960, 600, 119.99750518798828, 1.0, [1.0, 1.25, 1.5], {}), ('960x540@119.92568969726562', 960, 540, 119.92568969726562, 1.0, [1.0, 1.25, 1.5], {}), ('960x540@119.97574615478516', 960, 540, 119.97574615478516, 1.0, [1.0, 1.25, 1.5], {}), ('960x540@59.6290283203125', 960, 540, 59.6290283203125, 1.0, [1.0, 1.25, 1.5], {}), ('960x540@59.818218231201172', 960, 540, 59.818218231201172, 1.0, [1.0, 1.25, 1.5], {}), ('800x600@120', 800, 600, 120.0, 1.0, [1.0, 1.25], {}), ('800x600@60.316539764404297', 800, 600, 60.316539764404297, 1.0, [1.0, 1.25], {}), ('800x600@56.25', 800, 600, 56.25, 1.0, [1.0, 1.25], {}), ('840x525@120.01870727539062', 840, 525, 120.01870727539062, 1.0, [1.0, 1.25], {}), ('840x525@119.76650238037109', 840, 525, 119.76650238037109, 1.0, [1.0, 1.25], {}), ('864x486@59.91534423828125', 864, 486, 59.91534423828125, 1.0, [1.0, 1.2558139562606812], {}), ('864x486@59.5703125', 864, 486, 59.5703125, 1.0, [1.0, 1.2558139562606812], {}), ('800x512@120.33700561523438', 800, 512, 120.33700561523438, 1.0, [1.0, 1.2799999713897705], {})], {'is-builtin': <true>, 'display-name': <'Built-in display'>})], [(0, 0, 1.0, uint32 0, true, [('eDP-1-1', 'SDC', '0x4141', '0x00000000')], @a{sv} {})], {'renderer': <'xrandr'>, 'layout-mode': <uint32 3>, 'supports-changing-layout-mode': <true>, 'x11-fractional-scaling': <true>, 'legacy-ui-scaling-factor': <1>, 'max-screen-size': <(16384, 16384)>})
$

This time observe the lines again,

'1360x768@59.960025787353516', 1360, 768, 59.960025787353516, 1.0, [1.0, 1.2307692766189575, 1.4545454978942871, 1.7777777910232544, 2.0]

Observe that now available scales are changed. this means you can set from the above output 1.23.......... or 1.45.......... or 1.77....... or 2.0

Since my laptop is 1366x768 it has less scales available.. but when I connect it to my 4K TV.. I will have more available scales.. In your case.. your laptop is hi pixelated, you will have the more options for your desired resolution 3840x2168

So first run the command

gdbus call --session --dest org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.GetCurrentState

and note down the values

for example:

  1. 7 in Unit32 7 at the start of the output of the above command

  2. 1360x768@59.798992156982422 in the preferred mode and which suits the nearly required scale

Example line of my requirement:

('1360x768@59.798992156982422', 1360, 768, 59.798992156982422, 1.0, [1.0, 1.2307692766189575, 1.4545454978942871, 1.7777777910232544, 2.0]
  1. 1.7777777910232544 is the scale which I preferred out of the available for example..

  2. eDP-1-1 this is my Display Change this in your case.

Now to set the scale, in your case you will definitely have 2.25 or 2.50 nearly equivalent values.. edit the below command to suit your values..

gdbus call --session --dest org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig 7 1 "[(0, 0, 1.7777777910232544, 0, true, [('eDP-1-1', '1360x768@59.798992156982422', [] )] )]" "[]"

The explanation of the above command and source is available https://unix.stackexchange.com

Successful command example: below gif cant show you accurately but the result is fine in my case..

enter image description here

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.