Per-application window scaling in Xorg for high dpi display
I finally managed to find a solution that scales old applications without any noticeable visual or performance degradation.
Thanks to kaueraal, you can now scale old applications using run_scaled
. You can obtain the script from either his GitHub page or through AUR run_scaled-git
if you are running Arch Linux.
Here is an example of two applications running side by side:
- Firefox with HiDPI support on the left
- LMMS running with
run_scaled
on the right
I discovered this script through the Arch Linux Wiki.
Without seeing the exact problem that you are running into I would suggest using
GDK_SCALE=x
or
GDK_DPI_SCALE=x
Before starting each application. You will likely have to manually change .desktop
files or run from your shell prefixing the commands with GDK_SCALE=x
GDK_SCALE
only allow interger values however
GDK_DPI_SCALE=x
allow for decimal values like i.e.GDK_DPI_SCALE=0.66
For other SDK based applications there are likely similar settings for respective kits. However since your problem is with gnome desktop I will provide this solution.
I haven't tried with a 4k monitor, but running GDK_DPI_SCALE=1.66 gnome-calculator
will demo the solution.
Source: https://developer.gnome.org/gtk3/stable/gtk-x11.html
Vncdesk gives you a solution based on a local VNC client-server (see here)
It is not a complete solution for me because it gives some problems if the app need a window manager.
I have an application that spawns many windows, and I cannot at the moment use xpra
as is required by the accepted run_scaled solution. I also can't tolerate gnome-tweak-tool's 2x scaling. Too huge. Need 1.5x.
I have discovered that the tigerVNC java client supports client-side display scaling of 150%.
So I start a vncserver with 2/3rds size and a minimal windows manager:
vncserver -geometry 2520x1380 -xstartup ~/.vnc/xstartup-mwm
I then connect with TigerVNC's v1.7 java client (1.8.0 consistently crashes for me):
java -jar VncViewer-1.7.0.jar -ScalingFactor=150
Other than the commandline, you can hit F8
to get the VNC Viewer Options. Screen->Scaling Factor->150%. This scales the resolution from 2/3rds of 4k to 4k.
Archaic MWM in VNC with 150% scaling on the left. Fancy Gnome desktop (native) on the right, no scaling. You'll notice the tiny icons. Gnome is otherwise adjusted for 4k with 1.5x Font Scaling in gnome-tweak-tool, but the icons don't scale. This is just an example application -- the icons and scaling in the application that is pushing me this way are far worse.
Unfortunately this is an entire 1.5x scaled desktop with a separate window manager. It creates a nice walled-off area for my multiwindow app, but it's annoying to have a second window manager. Nonetheless VNC is something I'm familiar with from longtime use, and this does kick over to the laptop pretty easily, so perhaps this is usable.