What is the appropriate way to do grub customizations in garuda?

I found out you can change the grub wallpaper for garuda by replacing /usr/share/grub/themes/garuda/background.png, though I'm not sure if that's the most appropriate way for this distro. I also found you can change some values in /usr/share/grub/themes/garuda/theme.txt.

But the question is, how can I make the font bigger? I have a high resolution screen and the font is TINY.

Should I change the font size? If so, how?

Should I specify a resolution? I tried that with the grub config (/etc/default/grub) and regenerating, but it had no effect with 4 different screen resolutions. Someone mentioned trying in /boot/grub/grub.cfg but it clearly says not to edit the file. What's the appropriate way for this distro?

  Kernel: 6.2.12-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.2.1
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=dcc00dc0-be25-44ae-afb0-b21c38dd277c rw [email protected]
    quiet quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
    loglevel=3 rd.live.overlay.overlayfs=1 ibt=off
  Desktop: GNOME v: 43.4 tk: GTK v: 3.24.37 wm: gnome-shell dm: GDM v: 44.0
    Distro: Garuda Linux base: Arch Linux
  Type: Laptop System: Dell product: XPS 17 9720 v: N/A
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Dell model: 0KNF8J v: A00 serial: <superuser required> UEFI: Dell
    v: 1.15.0 date: 02/07/2023
  ID-1: BAT0 charge: 87.4 Wh (100.0%) condition: 87.4/95.1 Wh (91.9%)
    volts: 13.1 min: 11.4 model: SMP DELL 01RR3YM type: Li-poly serial: <filter>
    status: full
  Info: model: 12th Gen Intel Core i7-12700H bits: 64 type: MST AMCP
    arch: Alder Lake gen: core 12 level: v3 note: check built: 2021+
    process: Intel 7 (10nm ESF) family: 6 model-id: 0x9A (154) stepping: 3
    microcode: 0x429
  Topology: cpus: 1x cores: 14 mt: 6 tpc: 2 st: 8 threads: 20 smt: enabled
    cache: L1: 1.2 MiB desc: d-8x32 KiB, 6x48 KiB; i-6x32 KiB, 8x64 KiB
    L2: 11.5 MiB desc: 6x1.2 MiB, 2x2 MiB L3: 24 MiB desc: 1x24 MiB
  Speed (MHz): avg: 2499 high: 3177 min/max: 400/4600:4700:3500 scaling:
    driver: intel_pstate governor: powersave cores: 1: 400 2: 2700 3: 2700
    4: 2700 5: 2700 6: 2700 7: 2700 8: 2700 9: 2508 10: 702 11: 2700 12: 2700
    13: 2700 14: 2700 15: 3177 16: 2700 17: 2700 18: 2700 19: 2700 20: 2700
    bogomips: 107520
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
  Device-1: Intel Alder Lake-P Integrated Graphics vendor: Dell driver: i915
    v: kernel arch: Gen-12.2 process: Intel 10nm built: 2021-22+ ports:
    active: eDP-1 empty: DP-5, DP-6, DP-7, DP-8, DP-9, HDMI-A-1
    bus-ID: 00:02.0 chip-ID: 8086:46a6 class-ID: 0300
  Device-2: NVIDIA GA106M [GeForce RTX 3060 Mobile / Max-Q] vendor: Dell
    driver: nouveau v: kernel non-free: 530.xx+ status: current (as of 2023-03)
    arch: Ampere code: GAxxx process: TSMC n7 (7nm) built: 2020-22 pcie:
    gen: 4 speed: 16 GT/s lanes: 8 link-max: lanes: 16 ports: active: none
    empty: DP-1, DP-2, DP-3, DP-4 bus-ID: 01:00.0 chip-ID: 10de:2520
    class-ID: 0300
  Device-3: Microdia Integrated_Webcam_HD type: USB driver: uvcvideo
    bus-ID: 1-6:2 chip-ID: 0c45:6732 class-ID: 0e02
  Display: wayland server: X.org v: with: Xwayland v: 23.1.1
    compositor: gnome-shell driver: X: loaded: modesetting,nouveau
    alternate: fbdev,intel,nv,vesa dri: iris gpu: i915 display-ID: 0
  Monitor-1: eDP-1 model: Sharp 0x1517 built: 2021 res: 3840x2400 dpi: 266
    gamma: 1.2 size: 366x229mm (14.41x9.02") diag: 432mm (17") ratio: 16:10
    modes: 3840x2400
  Message: No known Wayland EGL/GBM data sources. API: EGL/GBM
  Device-1: Intel Alder Lake PCH-P High Definition Audio vendor: Dell
    driver: sof-audio-pci-intel-tgl
    alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 00:1f.3
    chip-ID: 8086:51c8 class-ID: 0401
  Device-2: NVIDIA GA106 High Definition Audio vendor: Dell
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 8
    link-max: lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:228e class-ID: 0403
  API: ALSA v: k6.2.12-zen1-1-zen status: kernel-api with: aoss
    type: oss-emulator tools: alsamixer,amixer
  Server-1: PipeWire v: 0.3.69 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
  Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi v: kernel
    bus-ID: 00:14.3 chip-ID: 8086:51f0 class-ID: 0280
  IF: wlp0s20f3 state: up mac: <filter>
  IF-ID-1: nordlynx state: unknown speed: N/A duplex: N/A mac: N/A
  Device-1: Intel type: USB driver: btusb v: 0.8 bus-ID: 1-10:4
    chip-ID: 8087:0033 class-ID: e001
  Report: bt-adapter ID: hci0 rfk-id: 0 state: up address: <filter>
  Local Storage: total: 2.75 TiB used: 11.78 GiB (0.4%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:1 vendor: Samsung model: PM9A1 NVMe 1024GB
    size: 953.87 GiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 type: SSD serial: <filter> rev: 36309229 temp: 35.9 C scheme: GPT
  ID-2: /dev/nvme1n1 maj-min: 259:0 vendor: Samsung
    model: SSD 970 EVO Plus 2TB size: 1.82 TiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>
    rev: 4B2QEXM7 temp: 33.9 C scheme: GPT
  ID-1: / raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 11.78 GiB (0.6%)
    fs: btrfs dev: /dev/nvme1n1p2 maj-min: 259:9
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 576 KiB (0.2%) fs: vfat dev: /dev/nvme1n1p1 maj-min: 259:8
  ID-3: /home raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
    used: 11.78 GiB (0.6%) fs: btrfs dev: /dev/nvme1n1p2 maj-min: 259:9
  ID-4: /var/log raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
    used: 11.78 GiB (0.6%) fs: btrfs dev: /dev/nvme1n1p2 maj-min: 259:9
  ID-5: /var/tmp raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
    used: 11.78 GiB (0.6%) fs: btrfs dev: /dev/nvme1n1p2 maj-min: 259:9
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: zram size: 62.49 GiB used: 0 KiB (0.0%) priority: 100
    dev: /dev/zram0
Use of uninitialized value $unit in concatenation (.) or string at /usr/bin/inxi line 24660.
Use of uninitialized value $value in concatenation (.) or string at /usr/bin/inxi line 24660.
  Src: /sys System Temperatures: cpu: 56.0 C mobo: N/A
  Fan Speeds (RPM): N/A
  Power: 12v: N/A 5v: 5 3.3v: N/A vbat: N/A
  Processes: 418 Uptime: 20m wakeups: 13165 Memory: 62.49 GiB
  used: 4.65 GiB (7.4%) Init: systemd v: 253 default: graphical
  tool: systemctl Compilers: gcc: 12.2.1 Packages: 1305 pm: pacman pkgs: 1298
  libs: 376 tools: pamac,paru pm: flatpak pkgs: 7 Shell: fish v: 3.6.1
  default: Bash v: 5.1.16 running-in: gnome-terminal inxi: 3.3.26
Garuda (2.6.16-1):
  System install date:     2023-04-23
  Last full system update: 2023-04-24 ↻
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:

This looks to be a good guide to change font size in grub.
That being said, I haven't had to manually edit it before in this way. Not sure if there are any special considerations.


Doesn't work, it just says to do what I've already tried--yet I followed its steps anyways (e.g. using update-grub, and making sure the resolution I want is listed in that command) and it still has no effect just like before.

That's why I'm wondering if garuda uses a different way of configuring the grub font size and/or resolution.

I also tried adding x32 to the resolution like I saw in a comment on reddit (e.g. 1600x1200x32) and it didn't work.

All these changes aren't just not working in the sense that they make things too small or have unintended consequences; they aren't working in the sense that they have no effect at all.

Please post

sudo pacman -S hwinfo --needed
sudo hwinfo | grep -C3 "Resolution"

Maybe it diff on Notebooks with 2 GPU and no Nvidia driver installed? :man_shrugging:
Unfortunately, I have no idea about it.

1 Like
~$ sudo hwinfo | grep -C3 "Resolution"
  Vendor: SHP "T3MW9 LQ170R1"
  Device: eisa 0x1517 
  Serial ID: "0"
  Resolution: [email protected]
  Size: 366x229 mm
  Year of Manufacture: 2021
  Week of Manufacture: 45
  Detailed Timings #0:
     Resolution: 3840x2400
     Horizontal: 3840 3888 3920 4000 (+48 +80 +160) -hsync
       Vertical: 2400 2403 2409 2469 (+3 +9 +69) -vsync
    Frequencies: 474.00 MHz, 118.50 kHz, 48.00 Hz
  Year of Manufacture: 2021
  Week of Manufacture: 45
  Detailed Timings #1:
     Resolution: 3840x2400
     Horizontal: 3840 3888 3920 4000 (+48 +80 +160) -hsync
       Vertical: 2400 2403 2409 2469 (+3 +9 +69) -vsync
    Frequencies: 592.50 MHz, 148.12 kHz, 59.99 Hz
~$ sudo pacman -S hwinfo --needed
warning: hwinfo-22.2-2 is up to date -- skipping
 there is nothing to do


Did you change anything in Gnome?
Did you scale (150%-200%)?
Did you change dpi?
Did you change font size?

Looks like it can only do 3840x1600.

I have here despite 2 monitors up to 3840x2160 dpi only Max. Resolution: 1024x768 and can read everything wonderfully.

sudo hwinfo | grep -C3 "Resolution
  Model: "Generic Monitor
  Vendor: "Generic
  Device: "Monitor
  Resolution: [email protected]
  Year of Manufacture: 0
  Week of Manufacture: 0
  Driver Info #0:
    Max. Resolution: 1024x768
    Vert. sync range: 50-90 Hz
    Hor. Sync Range: 31-61 kHz
  Config Status: cfg=new, avail=yes, need=no, active=unknown
1 Like

Gnome lists all my resolutions, but I have it set to 1920x1200 at 100% scaling. (would do higher but normcap shits the bed with high res monitors :disappointed:)

Didn't change dpi or font size.

Despite that command showing only one resolution, here's what the actual grub videoinfo command shows:

Use 1024x768 :slight_smile:

Unless i am mistaken, hwinfo shows limited info (ran it myself). I know your monitor supports other resolutions like 1080p after I search about info on the panel.
What your BIOS can support comes videoinfo command, as the link I provided said.

Have your tried something like:


(in general, if the text is too small, go to a lower resolution. if it is too big, go to a higher resolution)

the most appropriate way

It's better to make a copy of the whole theme folder, customize it, and pick that as GRUB theme (in the GUI tool or the /etc/default/grub file).

Maybe useful: grub2 - Can GRUB font size be customised? - Unix & Linux Stack Exchange


Ya I've tried lower and higher resolutions, including 1920x1080. The x32 just specifies 32 bit, it hasn't had any effect. The auto just reminds it to default to safe options if the specified ones don't work, and auto is the default setting, changing ANYTHING on that line has no effect. I could add gibberish and it has no effect. I can make it empty and keep it uncommented, and it has no effect.

Garuda uses a grub theme, which is why I'm wondering if there's a different, more appropriate way to do it. The theme doesn't seem to specify a resolution, but it specifies some fonts. @meanruse, it's not clear exactly which parameter specifies the font that I should change in /usr/share/grub/themes/garuda/theme.txt.

Contents of theme.txt

title-text: ""
title-font: "DejaVu Sans Regular 48"
message-font: "Terminus 16"
message-color: "#7f8c8d"
message-bg-color: "#4d4d4d"
desktop-color: "#000000"
desktop-image: "background.png"
terminal-font: "Terminus 14"
terminal-left: "0"
terminal-top: "0"
terminal-width: "100%"
terminal-height: "100%"
terminal-border: "0"

+ label {
    top = 20%
    height = 35
    left = 0%
    width = 100%
#text = "Welcome home."
    align = "center"
    font = "DejaVu Sans Regular 48"
    color = "#ffffff"

+ boot_menu {
    left = 15%
    #width = 250
    width = 70%
    #top = 50%-125
    #height = 400
    top = 30%
    height = 44%
    item_height = 30
    item_padding = 5
    icon_width = 32
    icon_height = 32
    item_icon_space = 20
    item_spacing = 5
    item_font =  "Terminus 16"
    item_color = "#cccccc"
    #item_color = "#FFA2A2"
    selected_item_font = "Terminus 16"
    selected_item_color = "#00ff9f"
    selected_item_pixmap_style = "select_*.png"
    menu_pixmap_style = "menu_*.png"

#+ progress_bar {
#    id = "__timeout__"
#    left = 0
#    top = 100%-32
#    width = 100%
#    height = 32
#    show_text = false
#    bar_style = "progress_bar_*.png"
#    highlight_style = "progress_bar_hl_*.png"

+ progress_bar {
    id = "__timeout__"
    left = 50%-125
    top = 70%
    width = 250
    height = 20
    show_text = true
    font = "Terminus 14"
    text_color = "#ffffff"
    align = "center"
    text = "@[email protected]"
    bar_style = "progress_bar2_*.png"

+ vbox {
    left = 50%-125
    top = 80%
    width = 250
    + label { width = 250 height = 20 align = "center" color = "#ffffff" font = "Terminus 16" text = "[↡] Boot selected OS" }
    + label { width = 250 height = 20 align = "center" color = "#ffffff" font = "Terminus 16" text = "[↑ and ↓ Key] Navigation" }
    + label { width = 250 height = 20 align = "center" color = "#ffffff" font = "Terminus 16" text = "[E] Edit Selection" }
    + label { width = 250 height = 20 align = "center" color = "#ffffff" font = "Terminus 16" text = "[C] GRUB Commandline" }

On a side note, what's up with cat in garuda? It doesn't print the contents to the terminal, it instead opens in some special view that has restrictions like not letting me highlight all the contents if they go off the page, and not seeing the contents inline with the rest of the terminal history. I thought it might be due to the cat=bat alias, but even after commenting that out it still does the same thing.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.