On August 6, 2022 23:03:04 Po Lu wrote: > Daniel Colascione writes: > >> pgtk also runs on X, and the problem must be solved there in some >> manner. > > It does not. We do not support running the PGTK build on X (the > selection code doesn't work on X, for example), and there is no way to > "touch" the user time on that platform without relying on X11-specific > code. At present, it's not even possible to include gdk/gdkx.h there > due to typedef conflicts with dispextern.h I'm surprised to hear that considering that many other GTK applications manage selections adequately. If the intent of pgtk is to run only on Wayland, you should break the pgtk build at runtime if it's running under X11, and probably rename it too --- because "pure GTK" sounds like it should rely only on things GTK provides and that it should therefore run anywhere GTK does. If in fact it's just a Wayland window system implementation, call it that. > > >> GTK has no magic facility for knowing that emacsclient >> ran. Regardless, a terminal hook is not expensive, and I don't want to >> add yet more window system typecases to the code. Terminal access >> should be polymorphic. It's through terminal hooks that we make them >> polymorphic. I'm not removing the terminal hook. > > After thinking a bit, I figure that a better way to solve the problem > would be to document that window managers don't always respect > x-focus-frame, and to add a force parameter which makes it query for the > current server time and set it as the user time, thus making focus > setting more reliable. I don't agree. Telling Emacs that a user has interacted with a frame is not an X specific concept. And even in the context of X11, we should be resetting the user time generally, not just hacking something up for the special case of x-focus-frame, because 1) the general approach preserves timestamp monotonicity, and 2) the user did in fact interact with the frame. > > Thanks.