Bannière

Il se peut que comme moi vous ayez des artefacts graphiques très dérangeant ou des ralentissements excessifs dans les applications basées sur Electron lorsque vous utilisez Wayland avec une carte Nvidia. Nous allons voir ensemble comment résoudre ces problèmes !

Introduction

Je tourne actuellement sur EndeavourOS Galileo équipé de l’environnement graphique Plasma 6, avec les pilotes Nvidia propriétaires installés. Les commandes et logiciels que je vais vous présenter seront bien entendu adaptés à mon système (basé sur ArchLinux), mais avec un peu de travail il sera aisé d’adapter cela à d’autres distributions.

Voici les versions installées sur mon système :

Niveau matériel, j’utilise une carte graphique Nvidia RTX 3060 TI.

Avant de poursuivre la configuration, nous allons installer quelques softwares indispensables au bon fonctionnement de wayland et nvidia :

yay -S qt6-wayland qt6ct libva libva-nvidia-driver-git

Configurer le grub

Dans le fichier /etc/default/grub, vérifier que la variable GRUB_CMDLINE_LINUX_DEFAULT contient entre autres la valeur nvidia_drm.modeset=1. Si ce n’est pas le cas, rajoutez le. Vous devriez obtenir :

GRUB_DEFAULT='0'
GRUB_TIMEOUT='5'
GRUB_DISTRIBUTOR='EndeavourOS'
GRUB_CMDLINE_LINUX_DEFAULT='[...] nvidia-drm.modeset=1'
GRUB_CMDLINE_LINUX=""

Si vous avez modifié le fichier grup, lancez la commande grub-mkconfig -o /boot/grub/grub.cfg.

Configurer les modules du kernel et de l’image de démarrage

Si mkinitcpio n’est pas installé, installez le.

yay -S mkinitcpio

Puis ouvrez le fichier /etc/mkinitcpio.conf, et ajoutez les modules nvidia nvidia_modeset nvidia_uvm nvidia_drm dans la variable MODULES() comme ceci :

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(usbhid xhci_hcd)
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
[...]

Générez ensuite l’image de démarrage :

mkinitcpio --config /etc/mkinitcpio.conf --generate /boot/initramfs-custom.img

Configurez les variables d’environnement

Faites un backup du fichier /etc/environment :

cp /etc/environment /etc/environment.bak

Puis modifiez le. A la fin du fichier, ajoutez les lignes suivantes :

QT_QPA_PLATFORMTHEME="wayland;xcb"
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia
ENABLE_VKBASALT=1
LIBVA_DRIVER_NAME=nvidia

Si vous avez des soucis avec votre curseur (invisible par exemple), vous pouvez ajouter la ligne suivante au fichier :

WLR_NO_HARDWARE_CURSORS=1

Lancez les commande suivante pour créer le fichier /etc/modprobe.d/nvidia.conf et l’alimenter avec les bonnes options :

echo "options nvidia-drm modeset=1" | sudo tee -a /etc/modprobe.d/nvidia.conf
echo "options nvidia NVreg_RegistryDwords=\"PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerLevel=0x3; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3\"" | sudo tee -a /etc/modprobe.d/nvidia.conf

Forcer les applications à utiliser wayland

Certaines applications basées sur Electron (chromium) ont des difficultés à fonctionner sous Wayland. Pour les forcer à le faire, lancez la commande suivante pour créer le fichier ~/.config/electron-flags.conf et l’alimenter avec les bons flags :

echo "--enable-features=UseOzonePlatform --ozone-platform=wayland" >> ~/.config/electron-flags.conf

Conclusion

Vous pouvez désormais redémarrer votre ordinateur. Normalement, Plasma devrait tourner sous Wayland sans soucis graphiques notables. En cas de problème n’hésitez pas à retourner sous X11 en attendant que des mises à jours soient effectuées.

Merci aux sites suivants qui m’ont permis d’installer correctement mon interface graphique :

Je vous invite à les visiter pour avoir de plus amples informations. Si le temps me le permets, j’éditerai peut être ce mémo pour y ajouter des explications détaillées et pour l’adapter également à d’autres distributions. En tout cas, ces manipulations m’ont permis de résoudre (presque) tous les problèmes inhérents à ma carte graphique !