J’utilise KeepassXC pour gérer mes mots de passe, couplé avec KeepassDX sur le smartphone. Les deux applications ouvrent le même fichier, sur mon serveur Nextcloud. Tout va pour le mieux dans le meilleur du monde libre des mondes.
Sauf que sur le PC, et donc sous Gnome Wayland en ce qui me concerne, la fenêtre de l’application ne s’affichait pas correctement : aucune bordure, et la barre de titre ne respectait pas le style de Gnome.
Cela faisait un bout de temps que je traînais ce problème, je croyais que c’était un bug de KeepassXC avec ma version récente de Gnome (Debian SID, environnement Qt, GTK, Adwaita, que sais-je…). J’avais accepté de vivre avec ce problème ! 😥
Ce matin, j’ai même testé le nouveau Proton Pass pour voir ce que cela donnait, afin d’éventuellement changer d’application et retrouver un fenêtrage homagène. Mais bon, je l’ai vite désinstallé quand j’ai vu que pour créer plusieurs coffre-forts, il fallait passer à la version payante. Beau produit d’appel, certes, mais en général je n’aime pas trop ces applications soi-disant gratuites, mais aux fonctionnalités volontairement limitées pour vous faire passer à la version payante quand vous voulez utiliser autre chose que les fonctionnalités de base.
Je me suis alors penché pour de bon sur ce problème : en fait, KeepassXC est une application Qt, et les fenêtres de ce type d’application n’ont par défaut pas de bordure sous Gnome Wayland (au moins sous Debian). Il y a plusieurs façons de corriger ce problème.
Voilà à quoi ressemblait la fenêtre une fois keepassxc-full
d’installé :
Les contours de la fenêtre sont mal définis (pas de bordure), la barre de titre n’est pas de la bonne couleur et ses boutons de contrôle sont différents : on est loin de la fenêtre de Gnome par défaut pour mon thème (Adwaita). Ça n’a l’air de rien, mais quand cette fenêtre était sur un fond blanc, je perdais mes repères pour déplacer la fenêtre avec la souris. Comme quoi un environnement de bureau homogène est important pour nos réflexes visuels.
keepassxc-full
, car j’utilise l’extension dans Firefox. En effet, le package par défaut de keepassxc est désormais réduit au minimum (aucune fonctionnalité réseau) pour assurer une sécurité optimale et est donc fournit sans les options pour gérer une extension dans le navigateur.On peut soit installer
keepassxc
puis le paquet webext-keepassxc-browser
(dédié pour l’extension navigateur) , soit installer keepassxc-full
pour retrouver le paquet habituel.
J’ai d’abord cherché du côté de KeepassXC dans les issues sur le dépôt Github de KeepassXC. Je tombais vite sur ces infos :
Title bar color and min max styling are not controlled by KeePassXC. Those are set by the window styling of the compositor.ET
This isn’t a problem with KeePassXC, you’ll have to direct your concern with either Qt or Gnome.
J’ai alors lancé une VM Fedora pour vérifier que la fenêtre s’affichait correctement avec cet OS qui fournit un Gnome réputé d’origine (non modifié), et c’était bien le cas. J’ai ensuite lancé une VM Debian 12 (version stable) et constaté que le même problème était présent.
Première solution
Voici la première solution (contournement) trouvée, mais ce n’est pas celle que j’ai choisi finalement.
En regardant d’autres problèmes de fenêtrage sur le même dépôt Github de KeepassXC, de fil en aiguille et de click en click, j’arrivais sur ce problème de copier/coller. Et de fait, une solution de contournement était proposée : il s’agissait d’éditer le fichier /usr/share/applications/org.keepassxc.KeePassXC.desktop
, et de modifier la ligne Exec
:
Exec= keepassxc %f
TryExec=keepassxc
En ajoutant la définition d’une variable QT avant de lancer KeepassXC :
Exec=env QT_QPA_PLATFORM=xcb keepassxc %f
TryExec=keepassxc
NOTE : Penser aussi à modifier le fichier ~/.config/autostart/org.keepassxc.KeePassXC.desktop
si KeepassXC est défini en démarrage automatique et que vous choisissez cette solution.
Cela fonctionnait, mais ne règle finalement le problème que pour KeepassXC, oblige à modifier deux fichiers manuellement, et il n’est pas sûr que cela résiste à une mise à jour de l’application… J’ai donc continué à chercher, cette fois avec le nom de cette variable Qt.
Solution pérenne
Et je suis tombé sur cette page : Fix no window border issuefor Qt Apps in GNOME Wayland. Il propose trois solutions, dont celle ci-dessus, mais je préfère celle-ci :
La solution consiste à installer un paquet QGnomePlatform
, qui permet aux applications Qt d’utiliser le thème de Gnome :
QGnomePlatform is a Qt Platform Theme designed to use as many of the GNOME settings as possible in unmodified Qt applications. It allows Qt applications to fit into the environment as well as possible.
Le projet n’est toutefois plus maintenu ni développé, mais toujours disponible dans Debian 13 et donc opérationnel. C’est à mon avis la meilleure solution, car elle est plus globale et fonctionnera pour toute application Qt installée sur le PC qui aurait le même souci.
Il suffit donc d’installer le paquet :
$ sudo apt install qgnomeplatform-qt5
Puis d’aller définir une variable dans le fichier qui s’exécute à l’ouverture de session. Il s’agit soit de .profile
, de .bash_login
ou de .bash_profile
selon votre environnement (un seul existe) . Dans mon cas, c’est .profile
, j’y ajoute donc la ligne suivante :
export QT_QPA_PLATFORMTHEME='gnome'
Et voilà, après un logout/login, je peux enfin lancer KeepassXC avec une fenêtre correspondant à mon thème Gnome : 😎
Une bonne chose de faite, pour un problème dont j’aurais du m’occuper il y a bien longtemps !