7 ms·
The X Windowing system is a hackers delight. If you have a remote server with UI, you can set up a X Window server on your Windows/MacOS machine and forward vi
by txdv 2y ago
The X Windowing system is a hackers delight.
If you have a remote server with UI, you can set up a X Window server on your Windows/MacOS machine and forward via SSH X messages to use GUI apps on your server, but view the result locally. The Responsiveness of the UI depends on your network capabilities.
- cyberpunk 2y agoMeh we used to have to install oracle databases this way, and the performance was always shit even over direct connections w/cross cables. I don’t think x over ssh is useful for much, can you imagine a browser this way?
- tjoff 2y agox2go is a bit smarter than pure x-forwardning and also allows you to resume a session at a different time (or on a different machine) similar to something like tmux. Much much better performance and does pretty well even on cellular. A bit rough around the edges but brilliant for some usecases.
- SassyBird 2y agoIt’s usually SSH that’s the bottleneck though. If you just expose your local X11 TCP server port and connect to it from the server (X11 client) by setting the DISPLAY env properly, it will be much more responsive. Often indistinguishable from local apps. Secure the port with Wireguard, if you want to be a bit more responsible and still have good performance. Checked with Firefox, which works like a charm this way, but is unusable over SSH.
- guenthert 2y ago> If you just expose your local X11 TCP server port and connect to it from the server (X11 client) by setting the DISPLAY env properly, it will be much more responsive. That's fine on a LAN with low or sub ms latency. If you need to connect to a server on the other side of the country, you'll want a less chatty protocol, e.g. X2GO (which gives additional benefits, e.g. of restartable sessions).
- rany_ 2y agoX over SSH works really well for me as long as I enable SSH compression. At least for my usage, I can't tell it apart from a native window but then again I'm not running sophisticated programs which update frequently.
- robinsonb5 2y agoUntil fairly recently I used to use Quartus on a headless box with ssh -X It worked really well up until a certain version (18, I think) - after which something changed in the UI toolkit and it was suddenly much more laggy. I'm guessing the UI toolkit's newer incarnation required a lot more round trips.
- vidarh 2y agoI used to run everything over 100Mbps ethernet. It worked just fine. Two biggest issues: Ssh without tuning settings, and modern X applications increasingly doing client-side rendering into bitmaps and so being far more bandwidth hungry and not tested over the network. If it's the latter, VNC or XPRA are much better suited if what the app ends up doing is streaming bitmaps anyway, as they're actually optimised for that.
- gpderetta 2y ago> can you imagine a browser this way? It in fact works perfectly fine. The catch is latency. In my case both hosts are on the same colo. I remember, 20+ years ago running quake3 over remote X to my roommate machine and I was surprised that glx actually worked over the network with no issues.
- bandrami 2y agoThe use case was a whole bunch of cheap display server machines in a computer lab at a university with a very powerful machine running the computation-expensive client programs. You didn't need SSH for that and the only real problem was contention on the token ring (ah, the old days...)
- toast0 2y agoIt depends on how the client was written. If you build around asynchronous operations, you can get good throughput, and if you always stop and wait for a reply, you'll get bad throughput. If you buffer your output and don't actually send it for a while, that can also make the experience poor. Xlib pushed you in both those directions, but you can make terrible clients with any library. My personal experience with Oracle products has always involved terrible UX, so I'm not surprised they built a terrible X client. I've run browsers over X, sometimes actually remotely, and it's OK, but not great. I wouldn't recommend it for video, audio is out of scope, and start up can be very slow sometimes. It's something that used to work better, IMHO. Sometimes you need to try a couple browsers and see which one works better. As a sibling notes, it all feels untested, and I'm sure if developers were testing, they'd fix some of the things that are easier to fix.
- bdowling 2y agoThis is fun and all, but if you lose your connection, your windows will go away and your program will usually exit. It’s almost always more usable to run a desktop session in Xvnc on the server and connect to it with a VNC client, because if you get disconnected, you can just reconnect.
- HPsquared 2y agoThis also works for running a Linux GUI on your phone in Termux. Termux+localhost VNC is the way for this.
- t-3 2y agoYou can use xpra: https://xpra.org/index.html https://xpra.org/index.html
- amelius 2y agoVNC is also much faster in most cases, because the X protocol requires a lot of round trips that waste a lot of time. So instead the VNC server "runs these round-trips locally" (so to speak) and you only interact with the pixels remotely. X was developed when bandwidth was as limiting as latency but nowadays only latency is limiting so a different protocol makes more sense.
- gpderetta 2y agoor you are like me and remote-desktop from a thin client (or from home) to a windows VDI, run vnc to a X server and ssh -X to the dev box to run emacs (edit: and firefox). I do this every day and I'm amazed that it actually works smoothly.
- destructionator 2y ago> X protocol requires a lot of round trips that waste a lot of time. This isn't very true. The X protocol is very async and lets you batch plenty of things when a response is required.
- audidude 2y ago
- agentultra 2y agoThis is how I run graphical Emacs in WSL. And how I was developing SDL games as well. I hear this might become a native built-in feature in Windows but for now I just run an X client.
- tsimionescu 2y agoIt's already here, for more than a year, both on Windows 10 and 11. I use this for emacs (with a GTK build) every day.
- NekkoDroid 2y agoWSL has been able to open graphical Linux apps for a while. They use Wayland (with FreeRDP to the Windows Host) and XWayland for X11 apps. https://devblogs.microsoft.com/commandline/wslg-architecture/ https://devblogs.microsoft.com/commandline/wslg-architecture...
- HarHarVeryFunny 2y agoSure, although originally you'd have an X Terminal (an actual dedicated terminal device running an X server, of varying levels of performance), rather than an X server program running on your computer (i.e. an X Terminal emulator). The terminology is of course a bit counter-intuitive, since it's program-centric rather than computer-centric - the local terminal is the server and the remote computer (or rather program) is the client, utilizing the server as a display device. It's a bit like a text terminal (VT-100 etc) except of course the X terminal has a network connection., With the VT-100 if you wanted to connect to a remote system you'd have to use a modem (acoustic coupler) to dial into a terminal server on the remote system. I don't think anyone ever made a text terminal with built-in telnet and ethernet.
- actionfromafar 2y ago> I don't think anyone ever made a text terminal with built-in telnet and ethernet. Maybe not, but there were terminal servers with 10 serials ports for the glass terminals and an Ethernet connector.
- emmelaich 2y agoI think many diskless X terminals could do just plain telnet too if wanted.
- HarHarVeryFunny 2y agoFor some reason I always found it fun messing with serial cables, and always had a desk draw full of various types (cross-over, gender-benders, db9-db25 etc), as well as occasionally needing to make custom ones. I still have a USB terminal server for when I want to play with old stuff like my DECTalk (VCR-sized speech synth) which has two DB-25 serial ports on it.
- freedomben 2y agoI did the same thing! I actually got my first soldering iron (and learned how to use it) so that I could wire to my own connectors. Building a home-made graph-link cable for my TI-83 in particular was a fun experience, as well as a good education in what can go wrong when you mess up soldering.
- tehologist 2y agoI used to do this with Virtual Box running locally. I found the performance of the windows x client was superior to trying to use x directly in the virtual machine. I wish the protocol supported audio.
- VikingCoder 2y agoBack in about 1994, there was a server at I think MIT that would stream a live TV signal to your X Window server. Yeah, with no compression, that's right.
- hi-v-rocknroll 2y agoHacker's Delight is also the title of a handy reference for numeric algorithm recipes. https://en.wikipedia.org/wiki/Hacker%27s_Delight https://en.wikipedia.org/wiki/Hacker%27s_Delight