Grub Themes on Fedora 35 dualboot w/ Win 11

Hi, y’all!
I’m dualbooting Fedora 35 (clean install; not upgrade) with Win 11 (was already on the system). The dualboot works fine, but the GRUB menu is a bit dull so I downloaded a couple of themes from gnome-look.org (recent themes, high scores, no complaints). I extracted them to /boot/grub2/themes, added GRUB_THEME="/boot/grub2/themes/fedora/theme.txt" (and remmed out the GRUB_TERMINAL_OUTPUT=“console”; not sure what to do with GRUB_ENABLE_BLSCFG=true), and ran the grub2-mkconfig commands with /etc/grub2.cfg and then /etc/grub2-efi.cfg. But my system still shows the old GRUB menu. If you don’t blink, there is a very brief error message. Gone too quick to read it. I know, I know.
Any pointers on where to look for a resolution? I’ve stared at /boot/grub2/grub.cfg, but am not sure what I’m looking for. :slight_smile:
Thanks!
Jon

Hello @jonpyne ,
Weclome to ask.:fedora:project.org! Theming the grub menu was a mission of mine when I was running Fedora Workstation, I personally wanted a Fallout Pipboy theme. Anyway, it can be done but I haven’t looked at it personally since F26 ish. The problem I had was I needed to do it everytime a new kernel update came, then when I switched to Silverblue it became even more burdensome as it needed to be with every update outside of flatpaks. If you would like some of the links I collected about it NP, just ask.

Depending upon the theme, the install method may cause problems with grub.

Recently one user installed a grub theme and with the change in location of the grub.cfg file that occurred in fedora 34 & 35 where the main grub.cfg was moved from /boot/efi/EFI/fedora/grub.cfg to /boot/grub2/grub.cfg he found that the install script for his theme overwrote the skeleton grub.cfg under /boot/efi instead of using the main one in /boot/grub2 and he had serious issues in getting the theme to work.

You may have issues with many grub themes similarly, and may have to reconfigure them with each kernel update since the default grub configuration does not take into account the themes which you may use.

Hi, Stephen
Sure, anything vaguely relevant would be appreciated. I’m a noob. I last experimented with Linux 15-20 years ago, and managed a quadboot laptop, with four Linux distros booting off a beautiful GRUB partition. But I’ve long since lost my notes (which is a shame; I think they were a hoot), and that was GRUB, not GRUB2.
I’m not looking to create static entries, and assume that as long as the GRUB_THEME entry stays in /etc/default/grub I should be OK, as it’ll just keep adding kernels.
I’m not sure if it is related, but I cannot pull up any of the theme.txt files in Grub Customizer (in the Choose Theme File window). I can burrow into the folders, but it does not see any files.
Jon

Hi, JV
I get that the /boot/efi file has been deprecated, but it still says that it is generated by grub2-mkconfig, so would be rewritten each time. Is that no longer the case? Is it now a template for the /boot/grub2/grub.cfg?
My track record suggests I’m going to get this to work, however much of a p@in it turns out to be. :slight_smile:
Jon

Hi @jonpyne ,
This link seems promising ootb https://github.com/vinceliuice/grub2-themes, last commit 24 days ago. There is also this search from GitHub https://github.com/topics/grub2-theme.

grub2-mkconfig with a default config and on fedora 34 & 35 does not touch /boot/efi/EFI/fedora/grub.cfg. That file is installed by the grub2-efi package and never gets changed. It redirects grub to the real grub.cfg file at /boot/grub2/grub.cfg

If you have overwritten it then it will never get updated by a kernel install for the newer kernels since installing the kernel update now puts the new grub.cfg changes in the file located under /boot/grub2/.

With fedora 34 & 35, if you look at the content of a newly installed grub.cfg file in /boot/efi/EFI/fedora you will see this content.

# cat /boot/efi/EFI/fedora/grub.cfg
search --no-floppy --fs-uuid --set=dev 3469ba89-07f0-422b-94c8-551356156120
set prefix=($dev)/grub2
export $prefix
configfile $prefix/grub.cfg

What that does is redirect grub to the one under /boot/grub2.
The kernel updates only change the content of /boot/grub2/grub.cfg. Thus if you manually overwrite the one under /boot/efi then grub will only use the one you created and will never see the changes made by a kernel update.

Hi, may be you could check your /etc/default/grub file and check if your setting like mine and edit accordingly for the themes folder name:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_THEME=/boot/grub2/themes/sleek/theme.txt

I removed GRUB_TERMINAL_OUTPUT="console" and GRUB_ENABLE_BLSCFG=true.

Each time you regenerate sudo grub2-mkconfig -o ..... and want to check the theme was installed or not, no need to reboot your system.

If you’re successfully install the theme, there should mentioning in the terminal something like found a theme or similiar before detecting other OS.

Here the output of my terminal:

[testcase@fedora ~]$ sudo grub2-mkconfig -o /etc/grub2-efi.cfg 
[sudo] password for testcase: 
Generating grub configuration file ...
Found theme: /boot/grub2/themes/sleek/theme.txt
Found Fedora Linux 36 (Rawhide Prerelease) on /dev/sda7
Adding boot menu entry for UEFI Firmware Settings ...
done

Note:
Please also make sure where you last time generate the grub.cfg file. If it sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg then continue to use this. If not, use what are you usually did.

This is not valid for fedora 34 & 35 (and going forward it seems).
You should use either sudo grub2-mkconfig -o /boot/grub2/grub.cfg or sudo grub2-mkconfig /etc/grub2-efi.cfg.
Note:
The second is a link to the first.

Thank you SO MUCH, JV. This was the answer. I should have disclosed that I initially tried an install.sh. My bad. It did not work, but did overwrite the /boot/efi version of grub.cfg. Since I understood this to have been deprecated, I thought it did not matter.
I replaced it with the redirect code, and my boot partition UUID, and it works fine. I now have a lovely GRUB boot menu for the New Year. Hurrah!