I am trying to find and then change the screen DPI (dots per inch) setting in 12.04 and 12.10. However, I can't seem to find any app or config file that can do this. Is there any app or conf file for this?
Note that this is for 12.04+ so the following will not work:
- How do I change the font DPI settings?
- How to change the screen DPI in 11.10?
- Is it possible to change font DPI in 11.04?
Moreover, they are basically changing the font size, not the actual screen DPI.
This is an updated version of my previous answer which was related to Ubuntu 12.04. In 16.04 (Xenial) 3 steps are needed to set DPI correctly instead of 2.
I'll explain on the example of the system with Ubuntu 12.04 with Gnome Classic and a monitor with resolution 1680x1050. My starting settings:
xdpyinfo | grep dots
reported96x96 dots
,xrdb -query | grep dpi
reportedXft.dpi: 96
,grep DPI /var/log/Xorg.0.log
reported some weird settingsNOUVEAU(0): DPI set to (90, 88)
.In 16.04 the outputs of all these 3 commands were consistent and were equal to 96. Though such consensus is better than the disorder of 12.04, the reported value is hardcoded and far from the real DPI value.
Let's calculate optimal DPI for my monitor. Actual size of the screen can be found with the command
xrandr | grep -w connected
(convert output to centimetres) or with a long ruler by hand. In my case:X = 47.4cm
;Y = 29.6cm
. Divide them by 2.54 to get the size in inches:X ~ 18.66in
;Y ~ 11.65in
. Lastly divide the actual dots amount (based on your resolution) by the size in inches:X = 1680/18.66 ~ 90dpi
;Y = 1050/11.65 ~ 90dpi
. So my real dpi is 90.Be warned, the manual method of measuring may be more accurate, than the output of the command
xrandr | grep -w connected
because the newer versions of X server ignore the size reported by EDID and calculate the size using the screen resolution and a hardcoded value of DPI (more info here).Another method how to find the size of the monitor is to read its EDID directly. Install
read-edid
package and run the commandsudo get-edid | parse-edid | grep DisplaySize
in the terminal. Its output will give you the actual size of your monitor in millimetres. If not - use the ruler.Let's start fixing DPI:
1) In 12.04 run
gksudo gedit
, open/etc/lightdm/lightdm.conf
and add a parameter under[SeatDefaults]
section:There's no such file in 16.04 by default, so you must create
lightdm.conf
manually and put it into/etc/lightdm/lightdm.conf.d/
. The contents of this file are the same:Restart your computer or restart X. Now
grep DPI /var/log/Xorg.0.log
will show the desired setting.2) In my former answer I proposed to create a file in
/etc/X11/Xsession.d/
containing stringxrandr --dpi 90
. This worked in 12.04, but in 16.04 this setting isn't persistent. In newer systems we can add the desired value on session start. Run "Startup Applications", press "Add" button, name it "Fix DPI" and set the commandxrandr --dpi 90
in the field. Save the changes and re-login. Nowxdpyinfo | grep dots
will report90x90 dots
.If
xdpyinfo
still shows 96 then add a timeout before runningxrandr
. Edit the command in "Startup Applications" and change it to:Reference
Step 2 is optional for 12.04 because in older systems Step 1 fixes both
Xorg.0.log
andxdpyinfo
values.3) In GNOME3 DPI setting is hardcoded to 96 and cannot be changed directly, but the text can be scaled instead. Calculate the desired multiplier:
desired_DPI / 96
(in my case90/96 = 0.9375
). Now run the command (or usedconf
if you prefer):Changes will be applied at once.
xrdb -query | grep dpi
will report the desiredXft.dpi: 90
.P.S. There is another method to fix DPI setting which is much more difficult and it is described in this guide. I tried it also and the result was the same (at least in 12.04).
Afterword: Only Ubuntu developers can say for certain whether values modified by Steps 1 & 2 really matter in modern Ubuntu or they are silently ignored. Only Step 3 produces the changes which are instantly noticeable. Those users who consider that certain apps may still rely on X server settings are encouraged to perform all 3 steps described above. For the rest Step 3 is sufficient - that's the sole way of customization adopted in modern Ubuntu distros.
Starting with 14.04 we have an option that helps a bit:
Scaling Support
In the image below we can see the scaling it has at 0.75 on the fonts and title bars:
In the image below we can see the scaling it has at 1.38 on the fonts and title bars:
As far as my experience in Ubuntu goes, changing the font DPI setting changes a lot more than just the way fonts are rendered. It also applies to icons and the size of menus for example.
It's just that Xorg hints the Desktop Environment on what the physical display's DPI is. And yes, you can override this in the Xorg.conf, but it has the same effect as changing the setting in your DE. For example in Kubuntu/KDE:
Had a similar problem, on a 2880x1620 screen. See http://ubuntuforums.org/showthread.php?t=2106549 Solved by putting
into my ~/.xprofile
Instead of "DP-0", put whatever
tells you as device name.
You can tweak the scale of course, but 0.5 somehow did not look nice on my screen.
While the
xserver-command=X -dpi ...
andxrandr --dpi ...
given above may have worked very well in earlier versions of Ubuntu, in Ubuntu 13.10 (which is what I have) Unity ignores those settings and keeps the dpi fixed (as far as the X server is concerned at 96 dpi).And the
xrandr --scale ...
command does scale the screen as described but scales it in such a way that makes text and icons a little bit blurry. But it works.It appears that in Ubuntu 13.10 the best option might be not to try to change the dpi setting for the X server but instead use the
unity-tweak-tool
to change the default fonts used by Unity and the default font scaling factor. You can download theunity-tweak-tool
from the Ubuntu Software Center. When you open theunity-tweak-tool
go to the Fonts button and try changing the font scaling factor to 1.2 or 1.25 (or higher or lower) to get the fonts to appear a good size for you. On this control panel you can also change the default fonts used by Unity. Admittedly this solution doesn't scale everything on the screen, just the text, but it works really well on my laptop with its 166 dpi screen. It appears web browsers like Firefox and Chromium don't notice this setting setting but each both Firefox and Chromium allow you to set a minimum font size in their application settings to scale-up the fonts on web pages in the same way.Install Ubuntu-Tweak http://ubuntu-tweak.com/
Open it and go to 'Tweaks > Fonts'. Then change the 'Text scaling factor'
Works great. Enjoy.
In Ubuntu 14.10, with a 15" laptop, 1920x1080 resolution (345mm x 145mm), with 143ppi/dpi density, I did the followings.
In /etc/X11/xorg.conf.d/xorg.conf, I added the followings:
This sets the system-wide dpi settings to the right 143dpi:
I also did all the above mentioned tweakings too:
Pretty much I need to tweak every application, I plan to use. Also in browsers this zoom also results blurry images (icons, buttons on webpages, etc), because it gets zoomed too. I would love to set some image to 1:1 and 2:1 size with a single click or gesture.
Hope it adds some useful info as of 9th of October 2014.
You can find your DPI with this command:
xrdb -query | grep dpi
You can set your DPI by creating the file ~/.Xresources with this content:
Xft.dpi: 96
Replace 96 with your desired DPI.
You can scale everything with xrandr, which is probably what you're looking for. I'm not sure how it works internally, but the effect seems to be a dpi change.
To scale your resolution, first find the name of your display with xrandr:
So, in my case my laptop display is called LVDS.
Then run the following to scale your resolution:
The Launcher and Panel might disappear for a moment, but just hover your cursor over them and they should reappear. You might also have to resize any open windows so that they fit the smaller resolution.
As I ended up on this question looking for windows HiDPI scaling in Ubuntu Gnome, here's my addition to random suggestions, so that I'll find it when I need it again. :)
To access this dialog, open Gnome Tweaks and go to Windows section.