Lexique informatique › Programmation › _NET_WM_USER_TIME

_NET_WM_USER_TIME

Programmation Svenska → Mis à jour: 2026-10-10

La propriété EWMH où un programme estampille sa fenêtre avec l'heure de la dernière frappe ou du dernier clic de l'utilisateur, pour que le gestionnaire de fenêtres distingue une fenêtre demandée d'une fenêtre qui s'est simplement imposée.

La protection contre le vol de focus a besoin d'un fait sur lequel s'appuyer, et EWMH 1.3 en a fait en 2005 une propriété : _NET_WM_USER_TIME, un CARDINAL contenant l'horodatage du serveur X du dernier événement utilisateur du programme. Quand une fenêtre est affichée ou réclame le focus, le gestionnaire de fenêtres compare la valeur à l'horodatage de la fenêtre où travaille l'utilisateur ; si elle est plus ancienne, c'est que l'utilisateur a fait autre chose depuis, et la fenêtre s'ouvre derrière avec _NET_WM_STATE_DEMANDS_ATTENTION au lieu de prendre le focus. Une valeur nulle est une promesse : la fenêtre est apparue sans que personne l'ait demandée — une notification, une fenêtre d'outils — et ne doit jamais prendre le focus. La comparaison doit survivre au bouclage de l'horloge du serveur au bout de 49 jours ; Metacity utilise donc une macro qui considère qu'un horodatage précède un autre dès que l'écart est inférieur à la moitié du cycle.

Deux détails tiennent l'ensemble. Un programme lancé depuis un menu aurait toujours un horodatage trop ancien : la notification de démarrage glisse donc l'heure du clic dans DESKTOP_STARTUP_ID, sous forme de suffixe _TIME, et la boîte à outils s'en sert comme valeur initiale. Et comme chaque horodatage est une modification de propriété que le gestionnaire de fenêtres doit surveiller, EWMH 1.4 a ajouté _NET_WM_USER_TIME_WINDOW : la fenêtre de premier niveau désigne une petite fenêtre invisible qui reçoit seule les horodatages, de sorte qu'un programme de vingt fenêtres ne produit qu'un seul flux de PropertyNotify. GTK fait exactement cela ; xprop sur une fenêtre GTK affiche donc un pointeur plutôt que l'heure. KWin avait pris de l'avance avec son propre _KDE_NET_USER_TIME dans KDE 3.2, avant que le nom soit normalisé.

Sources EWMH
← Retour au lexique