← Blog

XFCE on 4K Displays: Correct Scaling in Five Settings

XFCE's Window Scaling option only scales GTK apps. Here are the five settings that make a 4K display look right in GTK, Qt, Firefox and Emacs, plus fractional scaling.

I love XFCE. It’s fast, minimal and light. But making it work on a 4K display is a messy process. The obvious setting, Window Scaling, only does part of the job. A correct setup takes five settings spread over four dialogs, plus a sixth if 2x is too big for your screen.

Here’s the full list, in order.

XFCE on Linux: Correct Scaling for 4K Displays Play video: XFCE on Linux: Correct Scaling for 4K Displays

The short version

If you’d rather use a terminal, these commands set the same values as the five steps below:

xfconf-query -c xsettings -p /Gdk/WindowScalingFactor -n -t int -s 2
xfconf-query -c xfwm4 -p /general/theme -n -t string -s Default-xhdpi
xfconf-query -c xsettings -p /Gtk/CursorThemeSize -n -t int -s 40
xfconf-query -c xsettings -p /Xft/DPI -n -t int -s 192
xfconf-query -c xsettings -p /Gdk/UnscaledDPI -n -t int -s 98304

-n -t creates the property if it doesn’t exist yet. Restart your apps afterwards. The rest of this post shows where each value lives in the GUI and why you need it.

1. Window scaling: 2x

Open Appearance, go to the Settings tab and set Window Scaling to 2x.

Appearance, Settings tab, with the Window Scaling dropdown

This only scales GTK applications. It doesn’t even scale the window title bars, because those are drawn by the XFCE window manager, xfwm4.

2. Title bars: Default-xhdpi

Go back to the Style tab in Appearance and click the Xfwm4 theme link at the bottom. It opens the Window Manager settings. Select Default-xhdpi as the theme.

Window Manager settings with the Default-xhdpi theme selected

Now the title bars are scaled correctly.

3. Cursor size

Open Mouse and Touchpad, go to the Theme tab and increase the Cursor size. I set it to around 40.

At this point, GTK apps look good. Fonts and UI elements are the right size, title bars are correct and you can see the cursor. You might think you’re done.

4. DPI: 192

Non-GTK applications don’t care about the 2x window scaling. They scale their interface from the DPI value in X resources. That’s true for all Qt apps, and also for something like Emacs: its GTK build uses GTK for the menu and the toolbar, but scales its content from the DPI value. At 96 DPI, that content is way too small.

So open Appearance again, go to the Fonts tab and set the custom DPI to 2 × 96 = 192.

Appearance, Fonts tab, after setting DPI to 192: the text is huge, the checkbox is still small

This looks awful. GTK text is huge now, but icons and other UI elements haven’t changed size. Firefox is way too big. Emacs content looks correct, but its toolbar and menu don’t. GTK apps now scale their text twice: once for the 2x window scaling and once for the 192 DPI.

Fortunately, it’s all fixable.

5. The hidden one: Gdk/UnscaledDPI

One hidden setting fixes the GTK text. Open Settings Editor, scroll the channel list to the bottom and click xsettings. Find the Gdk group. That’s GDK, not GTK: GDK is the low-level layer GTK uses for drawing, so it’s GDK’s settings we need to adjust.

The group already has WindowScalingFactor. That’s the 2x from step 1, so leave it as it is. Click Add and create a new property:

  • Property: /Gdk/UnscaledDPI
  • Type: Int
  • Value: 98304

Settings Editor, xsettings channel: adding Gdk/UnscaledDPI with type Int

GDK reads this value in 1024ths of a DPI, so 98304 is 96 × 1024, or 96 DPI. It tells GTK what the DPI is before scaling, and GTK stops applying the 192 on top of the 2x. In the video I typed 96000, which is 93.75 DPI. It looks almost the same, but 98304 is the exact value.

Firefox and the Appearance dialog after the fix, both at a consistent size

Now it looks right. Firefox scales correctly, and so do the other apps, including Qt apps and Emacs.

6. Optional: fractional scaling

If the UI size looks good on your screen, you’re done. More often than not, though, 2x is too big and 1x is way too small, and you need something in between. My laptop is a good example: at 2x, its 2560×1600 screen loses a lot of space to UI elements that are too big.

The solution is fractional scaling. Open Display settings, decrease Scale to 0.75 and click Apply. Combined with the 2x window scaling, that’s 1.5x.

Display settings on a 2560×1600 laptop with Scale set to 0.75

Now the proportions are right: the UI is neither too small nor too big.

Screen tearing on Intel: XLibre

One final note. On Intel machines, you might see screen tearing. This was fixed in Xorg a few years ago, but the fix was never released. If you have this problem, I recommend switching to XLibre, an alternative X server with many bug fixes that never made it into Xorg.

Some distros, like OpenMandriva, ship XLibre by default. In the video, the same laptop with the same fractional scaling on OpenMandriva shows no tearing.

On Arch, the install script I used in the video no longer works: XLibre retired that package repository in August 2026, and the script’s URL now leads to a 404. XLibre for Arch now comes from a pacman repository. First, add its signing key:

curl -O https://xlibre-arch.github.io/xlibre-archlinux.asc
sudo pacman-key --add xlibre-archlinux.asc
sudo pacman-key --finger B97F7C613F359424
sudo pacman-key --lsign-key B97F7C613F359424

Then add the repository to the end of /etc/pacman.conf:

[xlibre-stable]
Server = https://packages.xlibre.net/arch/stable/$arch

And install it:

sudo pacman -Syyu
sudo pacman -S xlibre-meta

Answer yes when pacman asks to replace the X.Org packages, then log out and back in. xdpyinfo | grep vendor (from the xorg-xdpyinfo package) should now say XLibre.

Written by Luke. C++ developer since 2008, six years of wxWidgets and OpenGL tutorials on YouTube, now building real software with AI agents and Gritcode, the coding agent I make. I also build custom software for businesses: internal tools, customer portals and apps made for the way they work. Fixed price, delivered in days or weeks.

Recent posts

All
A GNOME-Style Terminal That Opens in 35 ms, Without GTK Sep 2026GNOME Console took half a second to open, and so did an empty GTK window. So I kept the foot terminal's engine and drew the GNOME look by hand: new windows in 35 ms. DeepSeek V4.1 Flash Is Cheap, If You Do the Thinking Sep 2026Same app, same model, two results. DeepSeek V4.1 Flash cost as much as V4 Pro with a short prompt, and $0.17 with a detailed spec. I Built a YouTube Shorts Clipper for $0.65 Sep 2026Cheap AI models replace paid services. I built a $0.65 YouTube Shorts clipper that turns long videos into vertical, captioned Shorts.