Qtile: Setting the system-wide font, and some 4K display optimisations

Hello, I'm not sure where to put this and this seems to be the best category even though it's not something that requires much assistance :thinking: please move this to the appropriate category if it doesn't belong here!

I've been using Qtile for a few days and thought I'd share some things that should address previous threads in the Qtile section, especially regarding fonts and scaling for small 4K displays. Config files will be shared with explanations as to what's been changed.
A lot of info about Qtile and some other things mentioned in this thread are just scattered all over the net, so this is also a condensed place for them so it's easier to remember what you need to migrate when you move pc. ^^;

I plan to continue adding to this as I get a handle on this awesome spin of Garuda. ^^
This thread might not be very long, but it took me days and lots of facepalming to find these. :')
This is written from the perspective of someone who previously used KDE, so apologies if some of this is baby talk to you :joy:

HiDPI: The basics

HiDPI is a pain in the bum. Enough said.

Firstly, to get this out of the way, add QT_QPA_PLATFORMTHEME=qt5ct to /etc/environment :wink: it will remove the Alacritty warning and fix your qt5 application theming.
(edit: fixed in the 2023/03/19 build)

Secondly, this is a must for HiDPI displays. Open ~/.Xresources and add the following:

! HiDPI scaling
Xft.dpi : 185

! Cursor
Xcursor.theme: /usr/share/icons/ArcMidnight-cursors

These should of course be adjusted to what you prefer. After this, run

xrdb -merge ~/.Xresources

This will apply the changes.

The first one scales your programs, but not the top bar. The second one should set the size of your cursor for everything except FireDragon/LibreWolf/Firefox, which can be fixed by opening ~/.config/gtk-3.0/settings.ini.
Here, set gtk-cursor-theme-name and gtk-cursor-theme-size to whatever you'd like. I have my size set to 48.

Continuing from How to set the system wide font

You can change fonts via the 'Customise look and feel' (lxappearance) and 'Qt5 settings' . You will also need to change ~/.config/gtk-3.0/settings.ini and put your desired font in there. This change should immediately be reflected by FireDragon/Firefox/LibreWolf.

However, even after this, your font visible in pcmanfm and some other applications may still be the default monospace font. I had to change the font in the 'widgets' section of lxappearance a few times in order for the desired font to actually be respected. (Seems to be a bug?)

If that didn't solve the problem, try adding and adapting this to ~/.config/fontconfig/fonts.conf before </fontconfig>:

  <!-- Set preferred serif, sans serif, and monospace fonts. -->
    <prefer><family>Noto Serif</family></prefer>
    <prefer><family>Noto Sans</family></prefer>
    <prefer><family>Noto Sans</family></prefer>
    <prefer><family>Noto Sans Mono</family></prefer>

nb. Use kvantum-manager to set a good kvantum theme rather than the Qt5 settings. There will be some artifacts like blue selection colours poking out - it was the least of my issues though so I didn't bother to search it.

Adjusting SDDM for HiDPI displays (X11)

You might be able to find something similar for Wayland.
KDE made this very simple, so hopping over to Qtile, it was a bit of a shock to see how much extra work had to be put in :smiley:

I installed sddm-config-editor to make this easier, but if you know your way around the filesystem, do it however you'd like. :slight_smile:
After setting your preferred theme, make sure to add under the X11 section this:
ServerArguments=-nolisten tcp -dpi 185 (with 185 being replaced by your most preferred number)
This is the only way I've been able to scale the prompts/greeter. Using EnableHiDPI=true didn't work for me, but it wouldn't hurt to add it.

If you're using the config editor, add this to the 'Arguments passed to the X server invocation' area in the X11 tab.

My configs

I've made quite drastic adjustments to the default setup to accommodate for the HiDPI screen and my taste, so lots of modification will be required if you don't like blue. :rofl:

Here is my ~/.config/qtile/config.py - it's been slightly modified from what I posted before in another thread: Garuda's PrivateBin

Special thanks to SGS for helping me use Flameshot!


  • Made top bar and font bigger
  • Rearranged widgets
  • Made the bar colour scheme a bit more simple - if you don't like the default multicoloured bar, this is a good place to start ^^
  • Current workspace set to 'line' instead of 'block'
  • Close windows with meta+W since meta+Q is very uncomfortable on my keyboard
  • Open Librewolf with alt+f instead of FireDragon - make sure to change the name back if you use it
  • Open Libreoffice Writer with alt+L
  • Using BeautyLine icons
  • Add battery widget - the batteryicon widget was a bit buggy and didn't fit with the theme so I decided against it...
  • Adjusted colours and font size in treetab mode to be more intuitive and readable for small 4K screen users

I did my best to comment what I'd done with the colours so that it won't be a game of hide-and-seek when you modify it for yourself. :slight_smile: Remember to hit meta+shift+R to reload Qtile, and look in ~/.local/share/qtile/qtile.log for errors.

The second config I'd like to share is ~/.config/jgmenu/jgmenurc: Garuda's PrivateBin
This by default is also too small for HiDPI displays.


  • Font size
  • Menu width and item height
  • Colours (ofc) and transparency of the menu
  • BeautyLine icons and icon size

This is the end (for now). Thanks for reading, and I hope this saved you some facepalming and banging your head against the wall in frustration :joy:
I'm no Linux or Python expert, so if there are any errors, questionable bits, or even improvements that can be made, please comment! :slight_smile:

List of things to be addressed (if possible):

  • adjusting the pcmanfm top bar (not the menu bar but the one with the go back, go up, go home controls) as the default size is very small. A workaround is to use an icon set that is readable at that size, eg. BeautyLine
  • making the font of nwggrid look less gross (low font DPI?)
obligatory garuda-inxi ;D
  Kernel: 6.2.7-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.2.1
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen root=UUID=e34775a9-3a44-4cad-b4a1-7a4688cda7b4
    rw rootflags=subvol=@ splash rd.udev.log_priority=3 vt.global_cursor_default=0
    resume=UUID=fca2f0b8-fe12-4de7-b5ff-de54fd42afbb loglevel=3 ibt=off nvidia_drm.modeset=1
  Desktop: Qtile v: 0.22.1 wm: LG3D vt: 5 dm: SDDM Distro: Garuda Linux base: Arch Linux
  Type: Laptop System: Dell product: XPS 15 9560 v: N/A serial: <superuser required> Chassis:
    type: 10 serial: <superuser required>
  Mobo: Dell model: 05FFDN v: A00 serial: <superuser required> UEFI: Dell v: 1.24.0
    date: 08/10/2021
  ID-1: BAT0 charge: 61.1 Wh (73.9%) condition: 82.7/97.0 Wh (85.3%) volts: 12.0 min: 11.4
    model: LGC-LGC8.33 DELL 5XJ28 type: Li-ion serial: <filter> status: not charging
  Info: model: Intel Core i7-7700HQ bits: 64 type: MT MCP arch: Kaby Lake gen: core 7 level: v3
    note: check built: 2018 process: Intel 14nm family: 6 model-id: 0x9E (158) stepping: 9
    microcode: 0xF0
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache: L1: 256 KiB
    desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB L3: 6 MiB desc: 1x6 MiB
  Speed (MHz): avg: 3211 high: 3793 min/max: 800/3800 scaling: driver: intel_pstate
    governor: powersave cores: 1: 3599 2: 2800 3: 2800 4: 2800 5: 3603 6: 2800 7: 3500 8: 3793
    bogomips: 44798
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
  Device-1: Intel HD Graphics 630 vendor: Dell driver: i915 v: kernel arch: Gen-9.5
    process: Intel 14nm built: 2016-20 ports: active: eDP-1 empty: DP-1, DP-2, HDMI-A-1, HDMI-A-2
    bus-ID: 00:02.0 chip-ID: 8086:591b class-ID: 0300
  Device-2: NVIDIA GP107M [GeForce GTX 1050 Mobile] vendor: Dell driver: nvidia v: 525.89.02
    alternate: nouveau,nvidia_drm non-free: 525.xx+ status: current (as of 2023-02) arch: Pascal
    code: GP10x process: TSMC 16nm built: 2016-21 pcie: gen: 1 speed: 2.5 GT/s lanes: 16 link-max:
    gen: 3 speed: 8 GT/s bus-ID: 01:00.0 chip-ID: 10de:1c8d class-ID: 0302
  Device-3: Sunplus Innovation Integrated_Webcam_HD type: USB driver: uvcvideo bus-ID: 1-12:7
    chip-ID: 1bcf:2b95 class-ID: 0e02
  Display: x11 server: X.Org v: 21.1.7 compositor: Picom v: git-c4107 driver: X:
    loaded: modesetting,nvidia unloaded: nouveau alternate: fbdev,intel,nv,vesa dri: iris gpu: i915
    display-ID: :1 screens: 1
  Screen-1: 0 s-res: 3840x2160 s-dpi: 185 s-size: 527x296mm (20.75x11.65") s-diag: 604mm (23.8")
  Monitor-1: eDP-1 model: Sharp 0x1476 built: 2016 res: 3840x2160 hz: 60 dpi: 282 gamma: 1.2
    size: 346x194mm (13.62x7.64") diag: 397mm (15.6") ratio: 16:9 modes: 3840x2160
  API: OpenGL Message: Unable to show GL data. Required tool glxinfo missing.
  Device-1: Intel CM238 HD Audio vendor: Dell driver: snd_hda_intel v: kernel
    alternate: snd_soc_avs bus-ID: 00:1f.3 chip-ID: 8086:a171 class-ID: 0403
  Sound API: ALSA v: k6.2.7-zen1-1-zen running: yes
  Sound Server-1: PulseAudio v: 16.1 running: no
  Sound Server-2: PipeWire v: 0.3.67 running: yes
  Device-1: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter vendor: Rivet Networks
    Killer Wireless-n/a/ac 1535 driver: ath10k_pci v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    bus-ID: 02:00.0 chip-ID: 168c:003e class-ID: 0280 temp: 38.0 C
  IF: wlp2s0 state: up mac: <filter>
  Device-1: Qualcomm Atheros QCA61x4 Bluetooth 4.0 type: USB driver: btusb v: 0.8 bus-ID: 1-4:4
    chip-ID: 0cf3:e300 class-ID: e001
  Report: bt-adapter note: tool can't run ID: hci0 rfk-id: 0 state: down bt-service: disabled
    rfk-block: hardware: no software: no address: N/A
  Local Storage: total: 476.94 GiB used: 512.03 GiB (107.4%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Toshiba model: KXG50ZNV512G NVMe 512GB
    size: 476.94 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD
    serial: <filter> rev: AADA4106 temp: 31.9 C scheme: GPT
  ID-1: / raw-size: 459.62 GiB size: 459.62 GiB (100.00%) used: 76.68 GiB (16.7%) fs: btrfs
    dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%) used: 608 KiB (0.2%) fs: vfat
    dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-3: /home raw-size: 459.62 GiB size: 459.62 GiB (100.00%) used: 76.68 GiB (16.7%) fs: btrfs
    dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-4: /var/log raw-size: 459.62 GiB size: 459.62 GiB (100.00%) used: 76.68 GiB (16.7%)
    fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-5: /var/tmp raw-size: 459.62 GiB size: 459.62 GiB (100.00%) used: 76.68 GiB (16.7%)
    fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: partition size: 17.02 GiB used: 0 KiB (0.0%) priority: -2
    dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-2: swap-2 type: zram size: 15.47 GiB used: 0 KiB (0.0%) priority: 100 dev: /dev/zram0
  System Temperatures: cpu: 48.0 C pch: 46.5 C mobo: 44.0 C
  Fan Speeds (RPM): cpu: 2474 fan-2: 2514
  Processes: 281 Uptime: 1h 43m wakeups: 180 Memory: 15.47 GiB used: 4.05 GiB (26.2%) Init: systemd
  v: 253 default: graphical tool: systemctl Compilers: gcc: 12.2.1 clang: 15.0.7 Packages:
  pm: pacman pkgs: 1462 libs: 372 tools: pamac,paru Client: shell wrapper v: 5.1.16-release
  inxi: 3.3.25
Garuda (2.6.15-1):
  System install date:     2023-03-19
  Last full system update: 2023-03-21 ↻
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut nvidia-dkms
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:            systemd-vconsole-setup.service 

In terminal, example

flameshot gui -d 10000



Ohh sweet, so that's how you delay it! Thanks SGS! :smiley:
Screenshot is prettier now woohoo :dancer: