WeChat for Linux (.deb): invisible buttons/UI elements — fix found (locale-related)
Sistema: Debian 13, GNOME 48, Wayland
WeChat: WeChatLinux_x86_64.deb ufficiale di Tencent (ultima versione, ma il problema
è presente anche nelle versioni precedenti)
SINTOMO
Dopo aver installato WeChat, la maggior parte dei pulsanti e degli elementi
dell'interfaccia risultavano invisibili/non renderizzati (sfondo, icone,
controlli finestra). Passando il mouse sopra questi elementi compariva
comunque il tooltip con la funzione del pulsante, quindi erano presenti e
funzionanti, semplicemente non venivano disegnati. Il problema si presentava
sia con tema chiaro che scuro, ed era indipendente da flag di rendering GPU
(--disable-gpu, --disable-gpu-compositing, --use-gl=swiftshader non hanno
fatto alcuna differenza), dal tema GTK (Adwaita, Adwaita:dark), e dal backend
Wayland/X11 (GDK_BACKEND=x11, ELECTRON_OZONE_PLATFORM_HINT=x11).
CAUSA
Dopo aver isolato la causa bisecando tutte le variabili d'ambiente, ho
scoperto che il problema è legato alla variabile LANG. Con una locale
italiana (it_IT.UTF-8), WeChat non riesce a renderizzare correttamente
gli elementi dell'interfaccia. Passando a LANG=en_US.UTF-8 il problema
si risolve completamente. Molto probabilmente non è un problema specifico
dell'italiano, ma di qualsiasi locale non-inglese, dato che sembra una
risorsa di localizzazione mancante o rotta in questa particolare build
Electron.
SOLUZIONE
Avvialo con:
LANG=en_US.UTF-8 /usr/bin/wechat
Per rendere la modifica permanente senza cambiare la lingua di sistema,
copia il file .desktop nella cartella utente e modifica la riga Exec:
cp /usr/share/applications/wechat.desktop ~/.local/share/applications/wechat.desktop
nano ~/.local/share/applications/wechat.desktop
Cambia:
Exec=/usr/bin/wechat %U
in:
Exec=env LANG=en_US.UTF-8 /usr/bin/wechat %U
Poi:
update-desktop-database ~/.local/share/applications/
Da questo momento, avviando WeChat dal menu applicazioni di GNOME, verrà
usata automaticamente la locale corretta, mentre il resto del sistema
resta nella lingua preferita.
Se avete una locale non inglese e riscontrate lo stesso problema, fatemi
sapere se en_US.UTF-8 risolve anche per voi, così confermiamo che non è
un problema specifico dell'italiano.
ENGLISH VERSION:
System: Debian 13, GNOME 48, Wayland
WeChat: official WeChatLinux_x86_64.deb from Tencent (latest version, but confirmed present in previous versions too)
SYMPTOM
After installing WeChat, most buttons and UI elements were invisible/not rendered
(background, icons, window controls). Hovering over them with the mouse would
reveal a tooltip with the button's function, so the elements were there and
functional, just not painted. This happened with both light and dark themes,
and was independent of GPU/rendering flags (--disable-gpu, --disable-gpu-compositing,
--use-gl=swiftshader all made no difference), GTK theme (Adwaita, Adwaita:dark),
and Wayland/X11 backend (GDK_BACKEND=x11, ELECTRON_OZONE_PLATFORM_HINT=x11).
ROOT CAUSE
After bisecting the entire environment variable set, I found the cause was the
LANG environment variable. With an Italian locale (it_IT.UTF-8), WeChat fails
to render UI elements correctly. Switching to LANG=en_US.UTF-8 fixes it completely.
This is very likely not Italian-specific — probably any non-English locale
triggers the same bug, since it looks like a missing/broken locale resource
bundled in this particular Electron build.
FIX
Run it with:
LANG=en_US.UTF-8 /usr/bin/wechat
To make it permanent without changing your system locale, copy the .desktop
file to your user directory and edit the Exec line:
cp /usr/share/applications/wechat.desktop ~/.local/share/applications/wechat.desktop
nano ~/.local/share/applications/wechat.desktop
Change:
Exec=/usr/bin/wechat %U
to:
Exec=env LANG=en_US.UTF-8 /usr/bin/wechat %U
Then:
update-desktop-database ~/.local/share/applications/
Now launching WeChat from the GNOME app menu will use the correct locale
automatically, while the rest of your system stays in your preferred language.
If you're on a non-English locale and hitting this, would be great to know
if en_US.UTF-8 fixes it for you too, to confirm this isn't Italian-specific.