5 ms·
A user on any X11 desktop can open a GUI from any X11 app, even one running in a datacenter. It's like a Javascript app in a browser today, but every Unix GUI a
by erik_seaberg 2y ago
A user on any X11 desktop can open a GUI from any X11 app, even one running in a datacenter. It's like a Javascript app in a browser today, but every Unix GUI app knew how to do it on late 1980s hardware, so you didn't even have to buy and admin a complete desktop computer for each user.
Windows sort of has this with RDP, but it's tied in with the app's GDI desktop, and I don't know whether it works without buying a bunch of video cards for the headless app server. NeXTSTEP had Display PostScript (remote rendering worked like printing!) but macOS lost support for it.
- IAmLiterallyAB 2y agoSomewhat misleading. Because these days, none of the network transparent primitives are used anymore. All the rendering happens server side, and bitmaps are sent over the wire. It's basically a crappy VNC. And at that point, just use RDP or VNC
- erik_seaberg 2y agoYeah, I have nothing constructive to say about apps and toolkits that choose only local rendering with no hardware, but it's pretty funny to see Javascript apps beating them on performance.
- donio 2y agoThat greatly depends on the type of applications you run and the toolkits and font rendering they use. My most commonly used applications (terminal emulator, Emacs) do their font rendering using the the glyph compositing functionality of the RENDER extension. Server side glyphs are created when a font is loaded and all the compositing is done on the server side based on the client's CompositeGlyphs requests. Same for images (in Emacs) using CreatePixmap and CopyArea.
- vidarh 2y agoIndeed. There are also plenty of terminals that uses the old server-side font rendering calls. For terminals, using client-side buffers is the exception - mostly the handful that use OpenGL.
- prmoustache 2y agoXPRA using h264 or h265 does a decent job in my experience in term of performance to increase over ssh -X. On wayland from I am also getting good results with waypipe opening individual apps from VMs to make it a poor man's QubeOS without the complexity and without having to open the whole remote desktop.
- erik_seaberg 2y agoAdding a video codec sounds expensive, how many concurrent users can an app server support that way?
- jcelerier 2y agoThat's really not true. Qt as of Qt 6 still supports using native X11 drawing commands and that covers a lot of apps. Tkinter too (and this covers many technical apps which are exactly the ones likely to be used over the wire). Just last week I was debugging remotely an art installation which uses my software, https://ossia.io https://ossia.io and was running on a Pi 5, I compared X11 and VNC and X11 was really much more useable even over the internet.
- IAmLiterallyAB 2y agoAh, I guess I was mistaken
- destructionator 2y ago> All the rendering happens server side, and bitmaps are sent over the wire. It's basically a crappy VNC. Even if this were true (which it isn't), there's a lot more to a GUI than the G. A lot of nice interoperability is provided too, like clipboard integration, dragging and dropping, mixed windows on the same taskbar, etc. Far more pleasant to use than awkwardly going to a full screen thing to get a window out.
- jasomill 2y agoAFAIK, Windows Remote Desktop always renders through virtual display adapter devices, though it can optionally make use of GPU resources to accelerate rendering to these devices. I just tested in an ESXi VM[1], and Windows 10 will happily boot and accept an RDP connection without any (virtual) display hardware at all: https://jasomill.at/HeadlessRDP.png https://jasomill.at/HeadlessRDP.png Whether a particular computer will boot Windows without display hardware depends on the firmware — in my experience, some workstations will, some won't, and I honestly haven't seen a modern x86 server without some sort of integrated graphics to support out-of-band management, often with a VGA port as the only physical video output. [1] By hand-editing the VM's .vmx configuration file, setting svga.present = "FALSE" and adding the undocumented option hwm.svga.notAlwaysPresent = "TRUE" Interesting aside: I figured this out by running "strings" on the hypervisor executable, which turned up this suspiciously Scheme-like bit of configuration code: https://jasomill.at/vmx.ss.html#L-808 https://jasomill.at/vmx.ss.html#L-808 In fact, two definitions and a couple trivial syntax fixes are enough to get Chez Scheme to evaluate it without warnings: $ awk -f - vmx.ss <<EOF | scheme -q BEGIN { print "(define / fxdiv)" print "(define (log . args) (for-each display args))" } { gsub(/\(\)/, "'()") gsub(/ 0x/, " #x") print } EOF $ So it appears the VMware hypervisor contains an interpreter for a very Scheme-like dialect of Lisp.
- erik_seaberg 2y agoCan a backend app use a single GPU (integrated or not) to support many concurrent users, so that software rendering doesn't become a bottleneck?