Le problème de sudo est que, dans sa configuration « classique », il ne conserve pas les variables d'environnement nécessaires au bon fonctionnement des applications X11 lors du changement d'utilisateur. Pour y remédier, il y a deux solutions :

  1. utiliser sux (disponible dans Portage : x11-misc/sux), un petit programme qui fonctionne comme su, mais en transférant les données nécessaires. Ça marche, mais ça ouvre un shell (ce dont on n'a pas toujours envie) et ça demande toujours un mot de passe root (il n'est évidemment pas possible de l'utiliser avec sudo...). Et il semble poser des problèmes pour afficher les caractères UTF-8, ce qui est plutôt gênant.
  2. bien configurer sudo : c'est possible, et heureusement pour les fans d'Ubuntu :-) [1]

On va donc modifier le fichier /etc/sudoers. Évidemment, il n'est pas question de le modifier « à la main » : pour des raisons de sécurité, mieux vaut utiliser visudo.

Une fois l'éditeur de texte lancé, il faut spécifier quelles variables il faut transférer et pour quels utilisateurs. Ces variables, ce sont $DISPLAY et $XAUTHORITY. Pour les utilisateurs, dans mon cas il s'agit du groupe wheel ; certains préféreront spécifier des utilisateurs séparément : c'est leur choix :-)

Voilà donc les lignes que j'ai dû ajouter à mon fichier sudoers :

# Faire marcher X11 avec sudo
Defaults:%wheel env_reset
Defaults:%wheel env_keep += DISPLAY
Defaults:%wheel env_keep += XAUTHORITY

Chez certaines personnes, il semble qu'il est nécessaire de se déconnecter entièrement (jusqu'à redémarrer le serveur X) pour que la modification prenne effet ; chez moi ce n'a pas été le cas, j'ai juste eu besoin de quitter visudo :-)

Il suffit ensuite de tester si ça marche, par exemple avec sudo gedit /etc/make.conf.

Un grand merci à Thomas Wisniewski pour l'info.

Notes

[1] eh oui, les docs d'Ubuntu utilisent abondamment les sudo avec des logiciels comme gedit... Preuve que c'est possible !