Outils pour utilisateurs

Outils du site


commun:x2go_sur_ecran_4k

X2Go : LXDE distant sur écran 4K (HiDPI)

Dernière mise à jour : août 2026

Problème

Client X2Go sur poste 4K (CachyOS/GNOME) : le contenu de la session LXDE distante s'affiche minuscule (pas de scaling HiDPI).

Points constatés :

  • QT_SCALE_FACTOR=2 côté client n'agrandit que l'interface du client x2goclient, pas la session.
  • Le réglage DPI du profil (setdpi=true, dpi=192) est transmis (X2GODPI=192) mais LXDE (GTK2/3) l'ignore.
  • ~/.xsessionrc côté serveur n'est pas sourcé par X2Go : les variables GDK_SCALE etc. n'apparaissent pas dans l'environnement de lxsession.
  • La géométrie et le DPI ne s'appliquent qu'à la création de session : une session suspendue/reprise garde ses anciens réglages.

Solution : script wrapper côté serveur

Sur le serveur (utilisateur de session, ex. maitre) :

mkdir -p ~/bin && cat > ~/bin/lxde-hidpi.sh << "EOF"
#!/bin/bash
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
export QT_SCALE_FACTOR=2
export XCURSOR_SIZE=48
echo "Xft.dpi: 192" | xrdb -merge
exec startlxde
EOF
chmod +x ~/bin/lxde-hidpi.sh

Rôle des variables :

  • GDK_SCALE=2 : widgets GTK3 à 2x
  • GDK_DPI_SCALE=0.5 : évite le double scaling des polices GTK3
  • Xft.dpi: 192 : polices GTK2 (panneau LXDE, pcmanfm)
  • XCURSOR_SIZE=48 : curseur agrandi

Panneau LXDE : hauteur HiDPI

Le profil par défaut (/etc/xdg/lxpanel/LXDE/panels/panel) fixe height=26 — quasi invisible en 4K, et le panneau peut s'effondrer à une géométrie 20×20 après un changement de résolution RANDR (redimensionnement de la fenêtre X2Go). Symptôme : « plus de menu ».

Correctif persistant — profil utilisateur avec hauteur adaptée :

mkdir -p ~/.config/lxpanel/LXDE/panels
cp -n /etc/xdg/lxpanel/LXDE/panels/panel ~/.config/lxpanel/LXDE/panels/panel
sed -i 's/^    height=.*/    height=52/' ~/.config/lxpanel/LXDE/panels/panel

S'applique au prochain démarrage du panneau (nouvelle session ou relance).

Diagnostic de l'effondrement (depuis SSH, display de x2golistsessions, 3ᵉ colonne) :

DISPLAY=:50 xwininfo -root -children | grep -i lxpanel
# 20x20 = panneau effondré

Notes :

  • lxpanelctl restart peut être sans effet (le processus lxpanel n'est pas relancé — vérifier avec pgrep -a lxpanel que le PID change).
  • Relance manuelle : tuer le PID puis relancer avec l'environnement HiDPI, sinon le panneau revient sans scaling :
kill <pid_lxpanel>
DISPLAY=:50 GDK_SCALE=2 GDK_DPI_SCALE=0.5 XCURSOR_SIZE=48 setsid lxpanel --profile LXDE &

Configuration client

x2goclient → éditer le profil → onglet Session :

  • Type de session : Bureau personnalisé (Custom desktop)
  • Commande : /home/maitre/bin/lxde-hidpi.sh

Attention au mode rootless : si le profil lance la commande comme application unique (rootless) au lieu de session de bureau, les fenêtres distantes — dont le panneau LXDE — apparaissent directement sur le bureau local, hors de la fenêtre x2goclient. Déroutant (le panneau distant semble être un panneau local). Vérifier que le type est bien un bureau ; en cas de doute, hostname dans un LXTerminal ouvert depuis ce panneau doit répondre le nom du serveur.

Application

Terminer toute session existante (les réglages ne s'appliquent qu'à la création) :

x2goterminate-session $(x2golistsessions | cut -d'|' -f2)

Puis se reconnecter : la nouvelle session est créée avec le scaling.

Dépannage

  • Vérifier les sessions côté serveur : x2golistsessions (état S = suspendue, R = active ; sortie vide = aucune).
  • Session zombie (« Connection refused » au resume, crash client) : x2goterminate-session <id> voire x2gocleansessions.
  • Vérifier que les variables sont bien dans la session :
pid=$(pgrep -u maitre lxsession | head -1)
tr "\0" "\n" < /proc/$pid/environ | grep -E "GDK|QT_SCALE"
  • Config client dans ~/.x2goclient/sessions (champs width, height, fullscreen, dpi) — éditable à la main, client fermé.
  • Limite GTK2 : seules les polices scalent, pas les icônes → ajuster la hauteur du panneau LXDE manuellement (voir section dédiée ci-dessus).
commun/x2go_sur_ecran_4k.txt · Dernière modification : de francois

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki