On 06/30/2014 07:36 AM, Chris Angelico wrote: > Hmm. I'm not sure that it's necessarily that bad; I've done 3G-based > X11 forwarding fairly successfully on occasion. Yes, it's potentially > quite slow, but it certainly works - I've used SciTE, for instance, > and I've used some GTK2 apps without problems. What do you mean by > "modern toolkit"?
Modern toolkit is defined as anything that uses client-side rendering. In the good old days of Motif and Xaw widgets, if a program wanted to draw, the toolkit would instruct the server to draw primitives. Rectangles, lines, etc. Each widget would be created in its own window, and events would be all handled on the server. Unfortunately we quickly hit some limits with that idea, as good and fast as it was. First of all, anti-aliased fonts were difficult to accomplish. There were hacks to do this early on, but it quickly became apparent that the actual application could do a better job of it if it would just do the rendering itself and have the X server draw it. Not only anti-aliased fonts, but also when you start talking about wanting to do layered effects like alpha-blending. All of this the app could do better and more efficiently than the X server could, since the X server would have had to round-trip to the app anyway to get the information since the X server is in a different process (or different computer) and cannot access the memory the app is using to store things. Kieth Packard wrote some X extensions to allow client-side rendering to be efficient and to let the X server to handle RGBA images, and to composite them together. Also, events in modern toolkits are done very differently than the original X toolkits. Instead of using multiple windows, clients now just establish one window and then handle events and figure out what widgets should receive the events client-side instead of server-side. This allows handling of things like scrollable canvases. Anyway, all of this improved the behavior and appearance of applications. When used locally, shared memory facilities make X pretty fast, although latency is still quite high. There's no way to synchronize frame redraws, so apps tear and stutter when you drag and resize. But over a network now, the nature of the X protocol means a lot of round-trips to the server to do things. This is very apparent when you run on a very slow connection. You might see widgets get drawn, then erase, then drawn again. Using a complex app like firefox, which has another layer of abstraction over GTK that makes it even worse, is very difficult on anything less than a LAN. Or try a Java Swing app! I've done it on occasion. I'd rather run Xvnc on the remote host and vnc in than forward X. FreeNX makes things very usable. http://en.wikipedia.org/wiki/NX_technology describes how NX works. I love that X11 apps work over a forward connection. And I love that I can run a remote window manager on a local X server if I wanted to. But I recognize X has it's problems and I can see how Wayland will eventually be so much better while still letting me remote apps, which is essential to me. -- https://mail.python.org/mailman/listinfo/python-list