4

I have a 14 inch ultrabook with a resolution of 2560x1440. I currently run Gnome 3.16 in HiDPI mode with a scaling factor of 2. Since I'm unable to specify a factional scaling factor, like 1.5, I've opted to use xrandr to scale desktop for me.

xrandr --output eDP1 --scale-from 3200x1800 --panning 3200x1800

I've put the above in a script that runs shortly after logging into a Gnome session. There a couple problems with this.

  1. Sometimes the scaling is lost, like when an on-screen display appears, e.g., pressing one of the brightness controls on the laptop keyboard; and
  2. watching Netflix full-screen only overlays an additional video image over the browser only occupying top left of the laptop screen.

Regarding #1, the scaling isn't completely lost but the desktop 'shrinks' and only appears in the top left corner leaving black space to the right and bottom of the visible desktop. It appears the 'shrunk' desktop is the scaled one but stuck in the top left corner of the 3200x1800 screen.

I'm hoping if I can configure X to do the scaling, and avoid running xrandr, that the screen will stay scaled.

2

I just finished setting up a ~150% zoom under Cinnamon, hope this will help you too because GNOME is similar to Cinnamon.

I started with xrandr commands from this HiDPI ArchWiki article:

xrandr --output HDMI1 --scale 1.2x1.2 # try 1.3 also
xrandr --output HDMI1 --panning 2304x1296 # this is for 1920x1080 at 1.2

Then i wanted to set it permanent, tried xorg.conf but it does not want to catch Monitor sections of config whatever i try. I asked on ArchLinux forums and got an advice to accept it and throw away xorg.conf. Anyway, i think my config is correct and you can try and use it with changing Monitor Identifier. Most interesting part is transformation matrix. Xorg has no option for scaling, but i figured out that xrandr --scale is a shorthand for --xrandr --transform which corresponds to TransformationMatrix.

Here is my xorg.conf:

Section "Monitor"
    Identifier "TEST" # try changing this!
    Option "Panning" "2304x1296"
    Option "TransformationMatrix" "1.2 0 0 0 1.2 0 0 0 1"
EndSection

Section "Device"
    Identifier  "Intel Graphics" # change these lines according to your graphics card
    Driver  "intel"
    Option  "AccelMethod"   "sna"
    Option  "TearFree"  "true"
    Option  "Monitor-HDMI1" "TEST" # try changing this!
EndSection

This does not work for me, so i continued digging. My system has lightdm which starts first, and it needs xrandr commands to look HiDPIish. Then it starts cinnamon-session which overrides display settings and i need to run xrandr again. Lightdm is configured by etc/lightdm/lightdm.conf and by default it runs something specified in session-wrapper option. You need to create a script with desired xrandr tweaks and place it somewhere to be launched by session-wrapper. By the way, options session-setup-script and display-setup-script didn't work for me.

Then, in Cinnamon (or GNOME in your case) the best thing i could do is to use autostart feature and add xrandr script with zero timeout.

1

X doesn't support scaling via xorg.conf or similar, only via xrandr. You can configure panning over a larger virtual display, but that won't help you increase the size of what's on the display.

However, you may be able to get an approximation to the fractional scaling you want via a combination of a couple of changes. First, reduce the overall scaling factor back to 1; you can find this in gnome-tweak-tool under "Windows", "HiDPI". Then, using gnome-tweak-tool, under "Fonts", change "Scaling Factor" to 1.5; this will make all fonts 50% bigger. That won't help with UI elements that don't depend on font size (such as images), but it'll work for all elements that do, such as buttons containing text. You can also get complete UI scaling (both text and graphical elements) for your browser; in Firefox, in about:config, change layout.css.devPixelsPerPx to 1.5, which will scale web pages and the UI. For Chromium, if you don't get good results automatically, try chromium --high-dpi-support=1 --force-device-scale-factor=1.5.

This won't work well for much denser displays, such as 3200x1800 or 3840x2160, but for 2560x1440 it should produce usable results; I use these settings on my primary laptop, which has a 2560x1440 screen.

  • Thanks for your answer, Josh. I'm beginning to think I'll have to hold out for Wayland or something similar to have a scaled desktop. – Jonathon Watney May 25 '16 at 20:05

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.