Question: I am running Gnome Shell with a 4k monitor and there are a few applications that I use that don't scale at all with the high resolution.

Here is an example of LMMS, an application that hasn't yet been ported Qt 5, so it doesn't have high dpi scaling capabilities:

[![Screenshot](https://i.stack.imgur.com/Af0Vr.jpg)](https://i.stack.imgur.com/Af0Vr.jpg)  

(Click images to enlarge)

Is there any way to scale a specific X window without changing the display resolution?

My current solution is to half the dimensions of my display resolution, but this degrades the resolution of every other application that supports proper dpi scaling:

[![Screenshot](https://i.stack.imgur.com/fJVFL.jpg)](https://i.stack.imgur.com/fJVFL.jpg)

Answer: 
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>
I think I've found a GPU-accelerated solution! Install `weston` and run this:

```
weston --xwayland --scale=2
DISPLAY=:1 your_app

```

That's it!

Tuning
------

Note 1: You may have noticed a magical number has been used, `DISPLAY=:1`. The underlying assumption here was that your main xorg display is `:0`. If it's not, adjust accordingly.

Note 2: You may have noticed that `weston` has a top panel by default. You may want to remove it. To do that, create a `weston.ini` file:

```
[core]
idle-time=0

[shell]
panel-position=none
locking=false

```

And use it when starting weston `weston --config=/path/to/weston.ini`. You can also place it to `~/.config/weston.ini` for it to be picked up by weston automatically, please refer to `man weston.ini` for further details.

EDIT: I've also documented the newly found approach here: <https://wiki.archlinux.org/title/HiDPI#Unsupported_applications,_via_weston>