XFCE: Affichage cassé en mode zoom, Debian 11

Tags: #<Tag:0x00007fb41b6b8920> #<Tag:0x00007fb41b6b87e0> #<Tag:0x00007fb41b6b86f0>

Bonsoir,

j’utilise le bureau XFCE essentiellement car il dispose d’un mode zoom attaché au raccourci Alt Molette . C’est le contournement à une vue défaillante que j’utilise quotidiennement.

Depuis la mise à jour en Bullseye l’affichage de toutes les fenêtres est perturbé dès qu’on est en mode zoom.

Description du bug :
ouvrons un terminal
Quand aucun zoom n’est actif la partue client de la fenêtre fait w0 pixels de large sur h0 pixels de haut.
Si j’active le zoom, l’affichage n’est pas agrandi sur toute la partie client zw0 x zh0 mais seulement sur un rectangle w0 x z0. En dehors de ce rectangle l’affichage n’est pas mis à jour ( clipping ). Pour rétablir un affichage correct il faut déplacer la souris de quelques pixels.

La position du rectangle de la taille initiale w0 h0 dépend en fait de la position du pointeur souris :frowning: par rapport à la fenêtre.
Pour une fenêtre texte ( xterm, xfce4-terminal, …) la zone de clipping en mode zoom comprend des lignes en haut et en bas et des colonnes à gauche et à droite.
Il en résulte que ce qu’on tape n’apparaît pas (la ligne de commandes en bas fait en général partie de la région extérieure clippée) tant qu’on ne déplace pas la souris. Adieu au rappel des commandes de l’historique, à la complétion, à l’édition de la commande avec le clavier : il faut en permanence bouger la souris pour provoquer un ré-affichage de la fenêtre en mode zoom.
Autrement dit l’utilisation d’un émulateur de terminal est extrêmement difficile pour un déficient visuel qui a besoin du zoom.

Ce bug n’existe pas sous Debian 10 buster. Il y a eu de nombreuses modifications du code de xfwm4 entre Debian 10 et 11.

who_zoom_1600x900_sm
Création d’une fenêtre shell sous tmux et lancement de la commande who
Image du bureau réduite de 50%

who_z0
La fenêtre correctement affichée (pas de zoom) avec la commande qui a généré l’image.

Dans le cas d’une fenêtre popup la taille initiale en mode zoom est erronée :
network_zoomed_sm

Après avoir déplacé la souris
network_sm

On remarquera que c’est le bord droit qui est aligné avec la souris.

Dans le cas où on bascule entre deux espaces de travail avec Alt Tab on obtient un peu n’importe quoi suivant le niveau de zoom et les contenus des espaces de travail. Ici j’ai simplement un terminal dans WS1 et dans WS3 un terminal contenant un tmux + une fenêtre keepassxcen icône.

Bascule du tmux en bas à droite dans WS3 vers le terminal à gauche de WS1.
bas_haut_1600x900_sm

Dans une fenêtre pré-remplie, lancement de debmany xfwm4 (une commande de cliché du bureau est lancée depuis une autre fenêtre tmux et on bascule avec des commandes tmux au clavier (Prefix N/P)

debmany_1600x900_sm

On voit clairement 5 lignes et demi en haut qui sont clippées, le curseur de souris est en bas.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »
Pierre Dac

Bonjour

J’utilise aussi Xfce avec debian 11
mais je n’ai pas ce defaut de fonctionnement du zoom accessible par Alt+Molette


Si besoin, il est possible d’agrandir temporairement la police de caractères
d’une fenêtre de terminal (ou/et d’une fenêtre de l’éditeur mousepad)

en appuyant simultanément sur les touches Ctrl
et les touches + ou - de la partie alphanumérique du clavier,
(il faut dont appuyer aussi sur la touche Maj pour accéder au +)

Dans la fenêtre du terminal, on peut remettre à zéro le zoom en appuyant sur Ctrl+Maj+0
(toujours avec le 0 de la partie alphanumérique du clavier)

1 J'aime

Je ne sais pas comment fonctionne le zoom de XFCE, mais il me semble probable que ça utilise un compositeur. Je me demande s’il ne manque pas un truc depuis la mise à jour, comme, par exemple, un pilote graphique ou un firmware.
Tu as quoi comme carte graphique ?

Bonjour

Je pensais aussi à une histoire de pilote graphique ou/et firmware.

Sur mon ThinkPad T450
il y a une carte Intel Corporation HD Graphics 5500

michel@debbull:~$ lspci -knn |grep -EiA4 "3d|display|vga"
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 5500 [8086:1616] (rev 09)
	Subsystem: Lenovo HD Graphics 5500 [17aa:5034]
	Kernel driver in use: i915
	Kernel modules: i915
00:03.0 Audio device [0403]: Intel Corporation Broadwell-U Audio Controller [8086:160c] (rev 09)
michel@debbull:~$ 

Une puce Intel, ça va, ce n’est pas un truc à la con, comme Nvidia.
Il faut voir ce que @littlejohn75 a comme matériel pour confirmer mon hypothèse.

fp2@debpacha:~ $ lspci -knn |grep -EiA4 "3d|display|vga"
00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06)
	Subsystem: CLEVO/KAPOK Computer 4th Gen Core Processor Integrated Graphics Controller [1558:6504]
	Kernel driver in use: i915
	Kernel modules: i915
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
fp2@debpacha:~ $

Et

⏚ fp2@debpacha:~ $ inxi -SG
System:
  Host: debpacha Kernel: 5.10.0-8-amd64 x86_64 bits: 64 Desktop: Xfce 4.16.0 
  Distro: Debian GNU/Linux 11 (bullseye) 
Graphics:
  Device-1: Intel 4th Gen Core Processor Integrated Graphics driver: i915 
  v: kernel 
  Device-2: Chicony Chicony USB 2.0 Camera type: USB driver: uvcvideo 
  Display: x11 server: X.Org 1.20.11 driver: loaded: modesetting 
  unloaded: fbdev,vesa resolution: 1600x900~60Hz 
  OpenGL: renderer: Mesa DRI Intel HD Graphics 4600 (HSW GT2) 
  v: 4.5 Mesa 20.3.5 
fp2@debpacha:~ $ 

Vraiment ? Avec un pilote i915 ?
Un truc très simple :
Ouvrir un terminal (même un xterm)
Avec la combinaison bien connue ne pas hésiter à provoquer un fort grossissement
Lancer tmux (vous devriez avoir du mal à taper cette commande avec un zoom élevé )
Lancer Prefix-tmux T , autrement dit (avec le préfixe par défaut) Ctrl B T

prefix_T_1600x900_sm

Vous devriez constater quelle est l’affichage de l’heure ne se fait que sur une partie de la fenêtre.

Pour vous convaincre que l’affichage devrait couvrir tout le terminal :
Basculez dans une console tty par exemple Ctrl Alt F2
Dans la console (tty2) entrez votre identifiant et mot de passe
Optionnellement lancez export DISPLAY=:0
Lancez

fp2@debpacha:~ $ tmux list-sessions
0: 5 windows (created Sun Sep  5 00:13:06 2021) (attached)
fp2@debpacha:~ $
tmux attach -t 0

Vous avez maintenant deux clients rmux pour une seule session. Si vous provoquez l’affichage de l’heure dans la console tty2 vous verrez qu’elle couvre tout l’écran.

Si vous n’avez pas de problème d’affichage en mode zoom c’est que je suis maudit.
J’avais déjà constaté le bug sur la machine de mon fils lorsque je lui ai installé bullseye à la fin du mois d’avril. Mon fils n’a pas besoin du zoom et ne l’utilise jamais. J’avais pensé que le bug était dû à la carte Nvidia en plus du GPU intel et donc j’espérais ne pas le rencontrer sur ma machine.

fp2@debpacha:~ $ ssh ouaoua11 lspci -knn |grep -EiA4 "3d|display|vga"
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 5500 [8086:1616] (rev 09)
	Subsystem: ASUSTeK Computer Inc. HD Graphics 5500 [1043:241a]
	Kernel driver in use: i915
	Kernel modules: i915
00:03.0 Audio device [0403]: Intel Corporation Broadwell-U Audio Controller [8086:160c] (rev 09)
--
04:00.0 3D controller [0302]: NVIDIA Corporation GK208BM [GeForce 920M] [10de:1299] (rev a1)
	Subsystem: ASUSTeK Computer Inc. GK208BM [GeForce 920M] [1043:241a]
	Kernel driver in use: nouveau
	Kernel modules: nouveau
04:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)
fp2@debpacha:~ 2s $

Le bug affecte toutes les fenêtres. Par exemple en faisant défiler la fenêtre e composition des messages après avoir ré-augmenté le niveau de zoom une à gauche d’un ou deux caractères reste figée et ne fait pas partie du défilement.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« L’arbre tombe toujours du côté où il penche. »
Proverbe français

« Un ordinateur c’est comme un frigo : on le branche et ça marche. »
Laurent Serano Directeur informatique, réunion Délégués du Personnel 2010

Après avoir, en utilisant Ctrl+Maj+TouchePlusAlpha,
agrandis au maximum la police de caractères de ma fenêtre de terminal,
j’entre la ligne de commande tmux

J’utilise le raccourci clavier Ctrl+B+T


J’ajoute que je n’ai pas non plus de problème
en utilisant l’autre raccourci clavier Alt+Molette

Non, non et non !
Ce n’est pas en passant les polices à huge que le les problèmes d’accessibilité seront résolus. En particulier cela ne va rien arranger pour les problèmes suivants :

  • choisir parmi les décorations la mise en icône, en plein écran ou la croix de fermeture
  • choisir dans le panneau supérieur le bon zigouigoui. nm-applet, batterie, …
  • choisir dans firefox la bonne icône du bon greffon (encore des zigouigouis minuscules )
  • lire les fenêtres popups diverses et variées : menus, tooltips, … Par exemple ce qu’affiche le greffon uMatrix est illisible pour moi sans agrandissement

Et avec votre taille de police démesurée, on ne peut plus lire ce qu’il y a dans la barre de titre (ou une barre de menu ?)

On va le faire différemment :

  • bureau XFCE habituel
  • basculer sur une console tty et se connecter
  • lancer export DISPLAY=:0
  • dans cette console lancer tmux et ouvrir deux fenêtres (2 shells)
  • dans une fenêtre tmux lancer le script suivant avec en paramètre un nombre de lignes tel que tout l’écran est rempli avec au centre un numéro de ligne de 1 à N, une ligne de commandes et juste en dessous la ligne verte de tmux.
  • dans mon cas avec la police terminus de taille maximale, j’ai un paramètre N=26. pour un écran 1600x900. Il se peut que vous soyez obligé de modifier le script en ajoutant des lignes pour avoir une console bien remplie.
  • retour au bureau XFCE.
  • ouvrir un émulateur de terminal et lancer tmux attach -t 0 en adaptant éventuellement le paramètre -t 0`
  • constatez que dans la fenêtre affichant la grille les lignes 1, 2, … M ont disparu car l’émulateur de terminal offre moins de lignes a moins de lignes que la console.
  • Passer en mode zoom avec deux crans sur la molette
  • constatez que l’affichage est incorrect avec des frappes successives de Ctrl-B N` sans déplacer la souris.
  • constatez que l(affichage de l’heure ne couvre pas toute la fenêtre. (Ctrl-B T)
  • si vous êtes suffisamment habile avec le clavier vous pouvez basculer sur la console alors que l’heure est affichée ( Ctrl-Alt+Fx ). Dans la console en fond noir, l’heure apparaît en cachant toute la grille (des points sur la droite et sur les lignes du bas )En appuyant sur ‹ q › la grille complète apparaît couvrant tout l’écran.

grille_t_1600x900_sm

Le script pour générer la grille

#!/bin/sh

#  tgrid:  minimal *t*ext grid

clear
nl=${1:-25}

cat << EOD | head -$nl
12345678901234567890123456789012345     1    67890123456789012345678901234567890
12345678901234567890123456789012345     2    67890123456789012345678901234567890
12345678901234567890123456789012345     3    67890123456789012345678901234567890
12345678901234567890123456789012345     4    67890123456789012345678901234567890
12345678901234567890123456789012345     5    67890123456789012345678901234567899
12345678901234567890123456789012345     6    67890123456789012345678901234567890
12345678901234567890123456789012345     7    67890123456789012345678901234567890
12345678901234567890123456789012345     8    67890123456789012345678901234567890
12345678901234567890123456789012345     9    67890123456789012345678901234567890
12345678901234567890123456789012345     10   67890123456789012345678901234567890
12345678901234567890123456789012345     11   67890123456789012345678901234567890
12345678901234567890123456789012345     12   67890123456789012345678901234567890
12345678901234567890123456789012345     13   67890123456789012345678901234567890
12345678901234567890123456789012345     14   67890123456789012345678901234567890
12345678901234567890123456789012345     15   67890123456789012345678901234567890
12345678901234567890123456789012345     16   67890123456789012345678901234567890
12345678901234567890123456789012345     17   67890123456789012345678901234567890
12345678901234567890123456789012345     18   67890123456789012345678901234567890
12345678901234567890123456789012345     19   67890123456789012345678901234567890
12345678901234567890123456789012345     20   67890123456789012345678901234567890
12345678901234567890123456789012345     21   67890123456789012345678901234567890
12345678901234567890123456789012345     22   67890123456789012345678901234567890
12345678901234567890123456789012345     23   67890123456789012345678901234567890
12345678901234567890123456789012345     24   67890123456789012345678901234567890
12345678901234567890123456789012345     25   67890123456789012345678901234567890
12345678901234567890123456789012345     26   67890123456789012345678901234567890
12345678901234567890123456789012345     27   67890123456789012345678901234567890
12345678901234567890123456789012345     28   67890123456789012345678901234567890
12345678901234567890123456789012345     29   6789012345678901234567890123456789

EOD

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »
Pierre Dac

.