Problem
On Fedora 40 Beta Workstation, some GUI assets (e.g. UI icons in Nautilus, overlay controls in Loupe) won’t load. The buttons in UI work, but it is very inconvenient as users must guess from memory, where the button is and what it does.
It seems that this bug is present only in GTK 4 applications. Applications that use GTK 3, such as Firefox or GNOME Terminal, work as expected.
This happens on Raspberry Pi 4, Raspberry Pi 400, and also in VMware virtualization with 3D acceleration enabled.
Example:
You can discuss this topic here.
Cause
The issue is cased by a regression in Mesa 24.0.0-2 (present on F40 Beta images). It has been reported upstream and it is being investigated, but as of now there is no time estimate for a fix.
Related Issues
Bugzilla report: #2269412
Upstream mesa report: #10853
Upstream GNOME report: #6498
Workarounds
VMWare
Simply disable 3D acceleration in your virtual machine configuration.
Raspberry Pi 4/400
The bug can be worked around by disabling graphical acceleration (GUI rendering will become slower, though) using the nomodeset
kernel argument, or by forcing the apps to be rendered by different renderer.
Fresh installation
You can add --args "nomodeset"
argument to the arm-image-installer , like this:
sudo arm-image-installer --image=</path/to/fedora_image> --target=<RPi_Version> --media=/dev/<sd_card_device> --resizefs --args "nomodeset"
Adjusting an existing system
If your system is already installed and don’t want to reinstall it, you can edit the boot entry in the bootloader. In the bootloader, press Ctrl+e to edit the currently selected boot option, find the kernel
line and add nomodeset
at the end of the line. Finally, boot the system by pressing Ctrl+x. This modification will only apply to the current boot.
If you want to apply the boot modification permanently, edit /etc/default/grub
, add nomodeset
to line GRUB_CMDLINE_LINUX=
, and then run:
sudo grub2-mkconfig -o /etc/grub2.cfg
Different renderer
Alternatively, if you don’t want to lose hardware acceleration by using nomodeset
, you can add line:
GSK_RENDERER=gl
to file ~/.bash_profile
. This will force the apps to use the old gl
renderer instead of the new ngl
renderer.