Runtime Arguments

25: The X Window System and Wayland

Jim McQuillan & Wolf Episode 25

Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.

0:00 | 1:08:14

If you've been using Linux on the desktop you almost certainly have been using the X Window System.

In this episode we dive into what that is, where it came from and what kinds of choices you have.

We get into the toolkits like GTK and Qt and talk about desktop environments like Gnome and KDE.

Then we get into the future, namely Wayland.

If you want to run an X client application on a remote server, you need to have an Xserver running local. If your desktop is MacOS, you can install Xquartz. If it's Windows, you can install Xming.  If your desktop is Linux, you already have an Xserver running (or maybe you have Wayland, in which case you can run Xwayland).

The following command will log you into a remote system where you can run an X client application and have it display on your local desktop:

ssh -X user@example.com

If you echo your $DISPLAY environment variable, you should see something like:

localhost:10.0

That's telling the X client app to send it's data using the X protocol to the your local desktop and proxy it over SSH.

The next step is run on an X app. It's easy, just run it:

xterm

A terminal window should pop up on your local desktop.

Hosts:
Jim McQuillan can be reached at jam@RuntimeArguments.fm
Wolf can be reached at wolf@RuntimeArguments.fm

Follow us on Mastodon: @RuntimeArguments@hachyderm.io

If you have feedback for us, please send it to feedback@RuntimeArguments.fm

Checkout our webpage at http://RuntimeArguments.fm

Theme music:
Dawn by nuer self, from the album Digital Sky

Wolf

Hey everybody, it is yet another episode of Runtime Arguments. I'm Wolf, and here's my buddy Jim.

Jim

Did I step out of you?

Wolf

I think we're gonna do that. All episode long. Um we're doing an episode today, a little look back maybe, and a little bit of a look forward. Jim is an expert here and has done some research. It's gonna be about X windows. Uh that's where we came from. And Wayland's.

Jim

Do you know how uncomfortable I get when you t when you tell people I'm an expert? It makes me blush.

Wolf

And Wayland, where we're going, or maybe one of the ways we might be going. Yeah. Um you know who we are and why we're here, uh, and that we want your feedback, and that there's gonna be notes and transcriptions, and you'll be able to find our addresses and give us feedback, and we want that. We'll tell you how at the end. Uh, but let's uh let's start out with the the actual good part, which is Jim, how was your week?

Jim

Oh golly, just busy, busy, busy. Good, busy, you know. I uh I like uh I like being busy and the work is uh always satisfying. So no complaints, um, but not a lot of uh extracurricular things to talk about. Um that's all right. I I know you're busy too. How do you do this week?

Wolf

So busy. I've been working way too hard. I have to figure out how to uh, you know, I'm like any other human being when the choice is between um answering the ringing phone and um, I don't know, tutoring your kid on how to pass uh their math class. I don't have any kids that need tutoring or in math class or anything like that, but I'm just saying one of those things is important and one of them is urgent, and our natural inclination is to do the urgent thing. Um, but you've got to invest in the important things, and I'm not doing that, and there isn't a tool that makes you do that. Not a task manager, not a calendar, not uh anything. It's willpower every single time. When you face a choice, you gotta pick the thing that's important, uh, not the thing that for whatever reason floats to the top, whether it's because it's a ringing phone or because it's the thing you really want, or I don't know. So life has been challenging. I'm I'm doing tons of work. I do get a lot of satisfaction out of that. For me, doing a good job um sort of defines who I am. But good job doesn't just mean writing the best code. Uh, we've talked about this over and over again. In fact, it doesn't necessarily mean writing code at all. Sometimes it means knowing this is the place I shouldn't write any code. It means writing the right amount of code. This is the cost, this is the the code that costs the right amount. I could have written better if I'd been willing to spend more, but that wouldn't have been the right code. It's teaching the people around me to do better, it's learning new things from the people around me and from totally different spots. That's all part of doing a good job. And it's that combination, if I balance it all right, um, that's the thing that makes me feel good about myself. Makes me think of of uh you know, those all contribute to how I think of who am I? Um maybe, maybe I've got my eggs all in the wrong basket, I don't know, but that's my way.

Jim

Well, too many, too many scrambled, not enough fried, right?

Wolf

Ha. Indeed. Um they're all eggs. Let me ask you this though. Yeah. Uh do we have any feedback?

Jim

Um, well, I I've got some things to say. This this was not user feedback or listener feedback, this is just me talking. Um uh last episode a couple of weeks ago was about the uh the Bayes rule. You did a fantastic job uh describing Bayes rule and what it means to us. Um the the question I have, I should have asked it then, but it just it just didn't hit me right. And that is if my problem solving has always included things in the Bayes rule, such as searching for my socks and eliminating locations one by one, uh what good is it if I actually recognize it as Bayes rule? Well what's the point?

Wolf

Well, there's kind of a scale here. First of all, a rational person, a person willing to adapt new information into their system, they are gonna use Bayes' reasoning to solve their problem. Um almost always. Uh if you're in a situation like I described where you don't already have all the facts, you can use new facts, and new facts that have enough confidence, they can adjust your model appear. Uh that can change how you do whatever it is you're about to do. You doing that, no matter what you call it, is Bayes' reasoning. And if you if you do it that way, you're gonna do better than if you did it some other way. Like, oh, he looks like he's a traveling salesman, so I'm not gonna open the door for him. Well, that that wasn't Bayes' reasoning, that was you were accidentally substituting representationalism, you were solving the wrong problem. But that's where you are right now. And you're asking me, is there something better? Uh and the number one thing is if Bayes reasoning is available to you and in your wheelhouse, it's it's the the the low it's the what what do they call that? The the requirement, the base, the table stakes, you should always be using that. Now the actual math of Bayes, you and I aren't really in the business where the math of Bayes comes into play. Well maybe you are, because for instance, you do medical stuff, and a thing you encounter is people getting cancer screenings. Um there might be some weird situation that you find yourself in where understanding that a super high confidence cancer screening for a super low occurrence cancer uh actual um instantiation, someone diagnosis, that the relationship between those is not obvious to a person who doesn't understand Bayes' reasoning. Um a high confidence test is not a high confidence diagnosis. A ninety-five percent and I'm not saying cancer is a twelve percent actual occurrence, but a ninety-five percent uh confident test for a twelve percent actual occurrence does not add up to you were positive on the test, 95% chance you have breast cancer. Here's a place where you do know the math, you can use the math, and maybe it would make a difference in the in in you and your work and solving a problem. The the things we're actually doing, probably not. Probably all we want is the next appointment time, but maybe uh Bayes makes a difference there, but you move forward in the list of problems you've solved. Um this might be your job instead of finding the next appointment. What if your job is figuring out from the polls who will be the next governor? Now you 100% are gonna find the numbers. You're gonna know what the priors are, you are going to look at what is the new evidence provided by the polls and the scandals and the every piece of evidence you can get, and you are gonna use the math to solve the problem. Your original question was how will knowing what Bayes really is help me? And by me, you meant Jim, the programmer, looking for the next appointment. Whether it's the next appointment slot or the next time, you know, Joan comes in, whatever. Is the math going to help you? And and I'm not gonna try to deceive you. The math is not going to help you solve that problem. Um you are gonna use Bayes' reasoning. Okay, and you already now know that you do. Can Bayes help you personally? It could if things changed a little bit. Is it useful as a math answer in general to other people? Yes. And if your job changed just a little, you'd be one of those people.

Jim

Okay.

Wolf

So you got what you wanted and proved that I wasn't helping you, and also I kind of proved that I was.

Jim

Yeah. Alright, so there's uh there's certainly some people listening right now that haven't listened to episode 24 on the Bayes rule. So uh if you're curious what we're talking about, go back to that episode. It's a real fun ride through uh what Bayes is and how it works. Wolf did an excellent job of explaining the math and an understandable job behind it.

Wolf

Yeah. A human being can understand. Yeah, yeah.

Jim

So there's some feedback for you. All right.

Wolf

I excuse me. Before you move on to the next piece of feedback, um, I would like to express some feedback that I received about the Bayes episode.

Jim

Yeah.

Wolf

I got two different categories of feedback. One was uh pretty positive. There uh I got things that at at various different amounts uh sort of uh represented the idea that I I didn't know it at all, or I knew there was something, or it was pretty dry math before I ever heard of it, but I guess I see where it could be interesting and maybe important. So I got that. And then I got one guy who said, and I'm gonna take this as though he meant it as a compliment. I can see where you might take this the other way. Um, but he said this. He said, Wolf, you are without a doubt of everyone I've ever even heard of, the most, or maybe the only person who cares this much about Bayes' rule.

Jim

That's an observation I could make as well. I mean, this guy, Wolf cares so much about Bayes, his license plate says Bayes, so yeah. It's an important topic to Wolf. So it's good. So go ahead. But Bayes himself.

Wolf

Yeah. Bayes himself is not my hero. The rule is is uh you know fantastically important. My hero is the guy behind the work, Laplace. Laplace, right?

Jim

Right.

Wolf

But the rule might be more important than the work that made it possible.

Jim

So if you haven't listened to it, go back and listen. Um uh meanwhile, one more little piece of feedback from me. Uh, you know, we've got this friend Marlon, he works for Meta, he's a genius. Uh, you know, surround yourself with smart guys. Uh that's what I try to do. And Marlon is is up there at the top. Um he was diagnosing a problem on his network, uh, his home network. He had some Wi-Fi thing going on, and he he started digging into it and he ran TCP dump to uh capture the packets uh into a PCAP file. He fed that into Claude, and Claude chewed on it for a little bit and told him exactly what's going on. Uh, this would have taken him hours and hours to do if he had to do it by hand. Uh and meanwhile, Claude was able to just summarize uh the network traffic uh that was going through his network, and I just thought that was so cool. He he occasionally he just pops up and and shows me what he's doing, and and it's always impressive. So that was pretty neat. So there's a use for Claude that I hadn't considered. Pretty neat stuff.

Wolf

Um since you mentioned Claude, uh I want to uh surface one of the highlights of what what's been going on at work. You know, often you work for an employer, and the employer's whole job is to satisfy you with the least that will let you keep working. Um but my employer uh has done just tons of stuff for me recently that make uh make me happier and make my job easier. They have provided Claude licenses for us. They're not making us use Claude, uh, they're allowing those of us who want to use Claude to leverage Claude and at the level at which we're capable. Uh so they've they've gotten me a pretty uh significant license just for me, and they've put me as the head of the Claude using team so that I can uh collect everybody together and uh help everybody move forward. Um that's super exciting. And as I mentioned before, another thing they did was they allowed me to switch from Windows to Ubuntu, um, and they swapped out my uh uh internal storage from a one terabyte uh SSD to a four terabyte SSD. So uh that you know, there's lots of things you can wish for. Obviously, you you the list would never end. But uh my employer is making my life better, and I really appreciate it. They're taking care of you. Good. They can they kinda are, and I like that.

Jim

Yeah.

Wolf

Uh do you wanna do you wanna get into the meat of the episode?

Jim

Let's do it. We're 15 minutes in. Let's uh let's let's uh give them what they came for, right? All right, go for it, man. Okay, so uh, you know, uh if you've used a Linux desktop um uh you know since the beginning of Linux, you've almost certainly used the X Window system. It wasn't created specifically for Linux, but um it's there on Linux. Uh so I thought I'd give you a couple of minutes of uh kind of some history and some overview of it, and then we'll we'll get into some of the nitty-gritty stuff. Uh it was created in 1984 uh by Robert Scheifler and uh Jim Geddes. Uh Robert uh was working at the MIT Laboratory for Computer Science. Jim Geddes was working on Project Athena, which was a joint project between uh DEC, MIT, and IBM. And their goal, uh Project Athena, was to uh create uh easy access to computing resources for students. And Athena, by the way, uh came out with several things. One of them was the X Windows system, the other thing is Kerberos. You've all heard about Kerberos, right? Well, that came out of out of Project Athena. That was part of that project. Um, but uh Jim was working, uh he was working at he was an employee at DEC, uh, and he was uh uh they needed a graphical user interface. Um he got together with uh Robert Scheifler and they they created the X window system. Um gosh, what is that uh 42 years ago? It's kind of crazy. Uh at the time there were some competing uh graphical uh windowing systems. There was uh the Xerox system. I think that's what um what Bill Gates and uh uh Steve Jobs saw uh and they they wanted to emulate. So there was uh the Xerox system, uh Apollo had their graphical interface. Um of course around that time, you know, there was the Apple Lisa and the Macintosh, they had a graphical inter graphical interface. Um and the Andrew project from Carnegie Mellon. Now I've never seen the Andrew Project, but I've heard a little bit about it. And uh anyway, these guys they wanted to create a windowing system that was portable across uh all kinds of different machines, different architectures. Um you know, think about it. At the time there were great big machines, you know, the Cray supercomputers and uh and the IBMs and the and the the research computers, uh and they wanted access, they wanted they want to be able to get at those machines and run programs, uh harnessing the power of those machines, but displaying the output on their on their desktops. Um so we'll get into the uh network transparency part of that in a few minutes. But um uh over the years, the X Windows system was um uh governed by uh several different uh organizations. Uh and I say specifically the X Windows system, they really don't want you to call it X Windows. That's not the name that it is, it's either the X Windows system or just X. Um uh and for some reason I always call it X Windows, but that's not it. That's that's that's not the right thing to call it. So the X Windows system. Uh it was created, like I said, by by uh Jim and Robert. Um uh it was controlled by the uh the MIT X Consortium, which became just the X Consortium as it kind of moved out of MIT. Uh then then there was the open group that was controlling things, and then uh as we got into uh X on uh the Intel architecture, um there was the X386 system. That was a port of X the X Windows system for um uh for the Intel architecture, and then it kind of moved on to X.org, and I'll talk about that little migration in a little bit uh because I was I I played a small part in that. Um the thing about X Windows, uh see there I go. The thing about X that uh I used to hear people explain this all the time, and I got kind of tired of it, but now I'm gonna explain it to you, and that's the concept of the server and the client. You know how you think of a server as being some big machine in the back room that has all the resources and it runs things, and the client is what you have in front of you, it's completely flipped around in the X world. Um but if you think about it, it kind of makes sense. Um a server is responsible for for managing resources. In the case of a graphical desktop, those resources are sitting there on your desk. They're the display hardware, the the mouse, the keyboard, um, whatever else you have. Um those are the resources that need to be served up. So that's where the X server runs. Um the client is the application that needs those services. And a lot of times the client would be running on a remote machine somewhere. So off in the distance is the is the client, and locally on your desktop is the server. Uh I hope that makes sense. Uh we'll we'll get into more of that. Does it make sense to you, Wolf? Uh, sure it does.

Wolf

Well, I you you used mouse, but you used mouse at the server side of the of the words instead of at the client side. And that was I didn't that like the first thing that happened was I was surprised. Why does the server know about the mouse and not the client?

Jim

Well, the client knows about it through the protocol, but it's the server that's managing that resource, right? The pointer device, whether it's a mouse or a trackpad or a or uh you know some kind of a pointer thing or even a touch screen, um, that's one of the resources that the server manages. Um the client finds out about mouse movements and stuff and stuff through X events. Those events get sent across the wire to to the client application that's running remotely. Does that answer your question?

Wolf

Okay, so th what this makes me feel like is that the server is running on my machine and the client is running uh in the rack in the computer room? Sha sure, or across the internet. You can see my surprise.

Jim

Yeah, it's weird. That's just the way it is. It's so maybe give me a couple sentences about that. What what else can I say? Um Like I would have started with that. That would have been the lead.

Wolf

Yeah. Okay.

Jim

Well, let's let's uh uh let's just keep going, right? Oh okay. I'm not sure I can explain it any more clearly than that. Um when when all you've got is a computer on your desk and you're running the applications there and the display is there and the mouse is there and the keyboard is there, i i you don't even think about this stuff, right? Um you don't you're not thinking about app uh clients and servers and stuff, it just all works. But when you separate it out and and and use the the beautiful network transparency uh that that the X window system has, it starts to make sense, I think. Um it's kind of neat how how that works. Uh uh there are three basic parts of the X window system. There's the server, like we talked about, the thing that manages the resources, the the mouse, the keyboard, the the the graphics hardware. Uh there's the clients, that's the application that's running someplace. Might be locally on your machine, it might be across the internet, uh, it might just be in the data center or the or the closet where where the server is, right? And then there's the X, uh there's the window manager. That's the thing that manages all those windows. Uh and and and that's just it this add even more confusion. That's a client as well. But that's a client that knows about all the other clients, all the other apps, and the the window manager um uh negotiates uh between all the clients to make sure that they're displaying on the screen properly, and they um you know regions get clipped properly. So if one window overlaps another window, it's only showing the things that it's supposed to show. Um you know, everything underneath that window is hidden. That's the window manager that takes care of that. Now all of these applications, they're built with toolkits. I mean, if we had to sit there and and hand code every graphical application and the and there was no consistency in them, we'd have a hot mess, right? So there's these these really neat uh window toolkits, and I know I I know there's one of them that you know fairly well. Um but uh uh the the the big ones, GTK and cute. Uh GTK was uh it's written in C, it's part of the GIMP it was the GIMP toolkit. That's where GTK comes from. Um uh it it uh it contains all kinds of uh widgets and you know menus and and and all the all the things you need. Uh input fields and um I don't know, help me out here. What else does a toolkit have, Wolf?

Wolf

Uh so toolkits often handle events and event loops, they handle peripherals, they handle uh all of the things in the windowing system not provided by the underlying OS that supports them. They handle uh, for instance, uh a thing that we call themes. So, like the underlying system will give you uh rectangles, this is where your window's gonna go, but then you lay something on top of that, and then you can have, oh, I'm gonna use aqua or I'm gonna use blah blah blah. And that's a theme that can be applied to the provider of the actual look of your windows. It can provide, for instance, when it comes to windows, um the specific rules and mechanisms, like here's an annoying one for you in the Macintosh. If a window from your application comes to the front, all windows from your application come to the front. Who makes that happen? It's the windowing system that in this case would have been provided by uh the thing that you're describing. So there's a ton of stuff that's in one of these toolkits, um, and it's behavior and it is appearance.

Jim

Yeah. Okay, so so we talked about uh GTK, uh, that's part of the GNOME project. Uh GNOME is all built on that. And then there's cute, and I I always it's spelled QT, and I always want to call it QT, but Wolf always corrects me. It's cute. Uh and if you look it up on Wikipedia, yeah, it's cute. So I'm gonna try my best to call it that now. Uh, but you've got some history with with cute, don't you, Wolf?

Wolf

I do. I worked in Troll Tech for uh a while, over a year, um, and I have to uh uh express my respect for the founders um and for every engineer I ever encountered there. Um in fact, almost all the people that I met at Troll Tech, which is now called the Cute Company, were sterling people, and I wouldn't hesitate to work with them again. Uh the engineers are some of the best I've ever been able to encounter. Cute itself is written in C. Um because of my experience with cute, I also have a ton of experience with GTK. And uh I do want to say this one thing if you feel it's appropriate. Can I talk about sort of the reasons behind their existence? Sure. Uh I mean, there's a lot of times when things come into existence in roughly the same time period, uh, sometimes because of each other, or sometimes because of some third thing that spurred them both. Git and Mercurial both came about at the same time because of bit of uh it was a need. Now GTK came about uh because of cute. Now, if you talk to the people who decided that it it was time to make GTK, they will say this to you. They will say cute had a bad license. There was no way to do the right thing, the open source, the good thing, uh with cute and have what you wanted. So we wrote something that did have the right license.

Jim

That may be true.

Wolf

The GTK people. The GTK people. That may be a true statement. But every GTK person to whom I have ever spoken, um, I don't think they even thought that was the reason. Every one of them told me the same reason, which is um just like Java was founded on hate, Java was made because they hate C. C is too complicated. Every person and and Java's not. And Java's not complicated, exactly. Every GTK person I ever talked to, the whole point was we're gonna do it in C because C is wrong. C is evil, C is something to hate. So uh, you know, there are political parties that exist to do specific things, to accomplish specific goals, and there are other political parties that exist only to stop them, to cancel any of those things. They don't have goals of their own. They just want to make the other guys not succeed. And Java was one of those things with respect to C, and GTK was one of those things with with respect to C. Um you can come up with good stuff. Y you could be a good new language, uh even though you were founded on the idea that this other thing is wrong and we're gonna do the opposite. You could still end up in the right place. It is my opinion that Java and GTK did not. They really they they are based on hate and they ended up being not as good as if they had had actual goals in mind. Hey, let's build a system that makes this easy and does that, and the they didn't do that. Instead, uh their primary goal was about cancellation. Um so I do know a lot of people who love Java, and I do know a lot of people who use GTK. My evaluation, and I don't give this out lightly, and I don't allow it to be swayed by emotion, yeah, okay, I know the the cute guys, but the fact is, cute is technologically better than GTK. We have reached new times, there are lots of improvements we could make in both of those things. Rust is a better language than either C or Java, not because somebody started smart, but because we know more things and we could use them, and we picked them because we wanted what was best, not the opposite of what we didn't like. So there's places to go. But my evaluation between cute and GTK is that cute is superior to GTK. Pick what you want, if you want GTK, that's for you, fine, I don't care. Um whatever's right for your job, your problem, your money, that's what's right for you.

Jim

Um in your current job, you get to use cute, and I and maybe maybe that's part of the reason you were able to get that job because of your experience with cute. Right?

Wolf

It's possible.

Jim

Yeah.

Wolf

Yeah. I I do know some other stuff too, so maybe that helps. Yeah, you do.

Jim

What are two other things? Um those aren't the only uh uh uh games in town. Sure, there's GTK and cute, but uh the Oh yeah, there's a zillion. Way back when. Oh man, there was uh there was the uh the Athena widget set. Uh that was real early on, and then there's Motif.

Wolf

Um and don't forget, uh I I don't know if you would have considered this if you would have thought this counts, but tickle TK is a thing.

Jim

Yeah. Yeah, I didn't have it in my outline, but yeah, uh TCL slash TK. There was uh there was something. I did a very tiny little bit of work in that, and that was um it was interesting. But it was a next step.

Wolf

Next step is a thing, not based on any of the languages we just said.

Jim

Yeah, but was Next Step an X thing? Or it was just its own thing, right? Uh it was more isn't Next Step kind of what what kind of became I don't remember the the all the origins, but isn't that like Coco, and isn't that what sort of became the the the Apple uh graphical system?

Wolf

Next step did uh form the foundation for uh everything that Apple did since then, everything in uh what started as uh OS 10. But um it's important to know that uh Qt and GTK uh the X Windows system is just one of the platforms they support. Yeah, the thing that is that is great about both GTK and Qt is that they aren't single platform systems. They are an answer when when you want to sh wanna ship on multiple things. Sure.

Jim

Sure. Um okay, so let's go up a step, up a level on top of that, and that's the desktop desktop environments. And it took me a while to understand this. Uh uh the whole concept of an environment, uh a desktop environment, and it and it makes a lot of sense now. Uh but you know, it's one thing to have a toolkit so that you can create your application and it, you know, it handles the mouse and it uh uh you know there's input fields and stuff. But you take you take it up a level, and that's the the whole environment. There's a lot of things that you want so that all of your applications kind of have the same look and feel. They all behave the same way, they all have buttons in the same place, and the buttons kind of look similar, uh, so people know what uh uh you know what a certain button should look like and what it does. And you know, there's menu bars, there's the doc, there's the file browser, the print dialogs, uh drag and drop capabilities, notifications. That's all the things that a desk desktop environment gives you. And some real notable examples we've already talked about too. That's uh GNOME and KDE. GNOME's based on GTK. Uh in fact, they just released uh a couple of weeks ago uh GNOME 50. That's that's a lot of releases. Um and GNOME has a uh an annual conference uh called Guadec. I've been to a couple of them 20 years ago. Uh but Guadec is a really interesting uh conference. Some great people show up there. Uh this coming one is uh gonna be in July in uh Corona, Spain. Uh so if anybody wants to go there, uh that that's some great guys and a lot of fun. And then Katie E, that's built on cute, uh, and they have their conference called Academy. Um and the last one was in September of 2025 in Berlin. Uh the next one is gonna be in uh Graz, G-R-A-Z, Austria, but they haven't picked a date yet. My guess it'll probably be somewhere around September. Um but what happens some years the two groups get together and they they they put their their developer conferences together at the same event. And that would be like the the Linux app summit or the Linux Desktop Summit. So while these two groups came up separately, uh one of them in response to the other, uh hate or whatever you want to call it, uh they do work together to try to further the the Linux desktop um uh together because you know they do feed off each other. It's good to have competition, right? And that's that's what they are for each other. So sometimes they show up together at the same conference and and and work together and and collaborate. Um there's some other lesser known desktop environments uh and window managers. Uh remember the Enlightenment window manager? Did you ever see that? You remember it?

Wolf

I don't think I've ever used it.

Jim

No, I played with it a little bit back around 98, 99. That was a big thing. That was all over Slash Dot, and everybody was talking about it. It was uh I think it was a guy from Australia or two guys from Australia that created it, and it was pretty neat. And that was that was a window manager that all the windows were transparent and they had these crazy backgrounds, and man, it was busy. There was a lot of things going on. It didn't really appeal to me, but a lot of people loved it and it looked cool. Uh FVWM. Remember that one? That was the first one I ever. I remember my my first, I think, I think I started with Linux with like Red Hat 4. I'm not talking about Red Hat Enterprise Linux, I'm talking about years ago, the Red Hat unit uh Linux operating system, and that came with uh FVWM, uh the window manager. That's where I got my start. And that thing was very configurable and and it worked well. And XFCE is another one. I'm sure a lot of people uh that have been around Linux for a long time, they remember that one. Uh and then aside from Linux, there was the common desktop environment. Uh that's what that's what the X Consortium and those guys were trying to do um uh to pull something together that uh well for instance HP, IBM, and uh and Sun and Unix system laboratories, they were all behind that, trying to create this common desktop. Um some companies used it for a while, but you know, come uh once Linux came out, uh all those kind of went away. I mean those companies still exist, but most of them anyway.

Wolf

Um I I actually worked for a company that I might be the only person who remembers their name. That company was named NetManage. And uh NetManage built Chameleon the Network stack. We made Chameleon, which was a thing, a web browser. We made uh our own network stack that you would use on a Windows box so that you had everything that you wanted. We made um a couple of networking tools, um, and uh eventually uh it just sort of faded into obscurity. But those were good people, and that was a good time.

Jim

Yeah, yeah. Uh so so there's a a lot of stuff there. But let's talk about my uh my interest and my involvement in this. You know, I've I've I think I've mentioned a few times in the past. I back in 1999, I created a project called uh LTSP, the Linux Terminal Server Project. Thin Clients for Linux. And that could not have existed without the X Window system. It just flat out wouldn't be anything without that. Because what we did was uh we would boot up the thin client, a little x86 computer, uh, didn't have a hard disk, didn't have a floppy drive, it just booted across the network using NFS for its file system, and it used X to uh display on the screen. All the apps would run on the server and display on each of the thin clients because uh the X Window system was network transparent. Uh you could you could run programs in one place and display them somewhere else, and uh and it worked perfectly uh for what we were doing. And you know, that project really really had a life. We had uh at one point we had millions and millions of people all over the world using this. Uh and like I said, it wouldn't exist without X. It needed a lot of other things too, it wouldn't have existed without Linux. Um, we certainly weren't gonna do that under under uh Windows. Um uh so that uh my involvement in that sort of led to my involvement in a few other things. And I mentioned earlier the X.org group, uh the foundation that took over kind of ownership uh of the X Windows system. Um somehow I managed to get myself on the board of directors. I was on the board of directors for them for two years starting in uh 2004. And boy, I I I I was so far out of my depth. I was I was I was kind of lost, but there's some great people there. I remember I worked with uh Jim Gaddis, the guy that created X, Keith Packard, he came along uh not long after X uh got going. He was part of the group, um Stuart Kreitman, uh Stuart Anderson, um oh uh I don't even remember. Leon Scheiman and a couple other guys. And I would show up uh every couple of months at a at a board meeting uh like out in Boston or something, and that was that was a lot of fun. I got to see firsthand how all that stuff was working. So that was pretty neat. I I really enjoyed that. Um I I haven't been much involved since 2006 with that. Uh in fact, I really haven't been involved in LTSP since 2007 when uh another guy, a guy from Greece um we sort of handed the project over to him. I I I got into a situation I had uh kids going to college, uh graduating high school going to college. I needed to make some serious money so that I could afford to send them to college. So I kind of let go of LTSP at that point. Uh but it still lives. You can go to LTSP.org and check it out. Um anyway, we've been talking kind of about uh uh uh the X Windows system uh as though it pertains just to Linux, but you know you can run uh X programs on Windows and on a Mac. Um if you're on a Mac like I am, uh my my my daily driver is a Mac desktop, uh you can run Windows, you can run X applications on your Linux box and display them on your Mac. It's really quite simple. I did it this afternoon. Uh I had done it a long time ago as well, but there's an application you can download called X quartz. You install that, that's an X server. So again, back to that server client uh uh nomenclature. Um you run X quartz and that that runs on your Mac, and then you SSH over to the Linux box and you you can run an X application over there, and it'll display using Quartz. On your desktop. The neat thing is you tunnel that protocol over SSH, so it's encrypted. All you got to do is to turn on X forwarding to make it work is you're at your desktop, you type SSH space minus capital X space in the name of the machine you're going to SSH to, and that turns on and sets up X forwarding. So then you run away. And of course, you know what I'm going to say.

Wolf

Yeah, what are you going to say? I'm going to say every single SSH configuration that you would have specified on the command line, the way all of your friends told you, almost certainly should have been in your tilde slash dot conf.ssh slash config file.

Jim

You know, we could do a whole episode just on SSH. But yeah, I agree. I do a lot of ad hoc stuff, so I just want to try something. So I'll just do SSH space minus X space, the host name. But if I'm if I'm logging in more than a couple of times, I'll put it in my dot conf my dot ssh config file. But it's it's kind of neat because uh the X uh the SSH Open SSH will proxy your X Windows uh X protocol stuff across the network uh encrypted because by default uh the X Windows system is not terribly secure. In fact, let's just say it's not secure at all. Right? The uh the the the the the the the protocol goes across the wire, not encrypted or anything, it just goes across uh from machine to machine. So you really want to secure it using SSH. Tunnel your X over SSH. Uh and it's surprisingly easy to do. You just like I said, when you want to log into the other machine, you type SSH space minus capital X space machine name. And when you're on the other end, if you echo the display environment variable, you'll see uh like when I did it today, uh the variable is uppercase display. You echo that in in your shell. Uh and in my case, it had the value localhost colon 10.0. That means when you run an X application, it's gonna go to uh OpenSSH on the local machine. Uh uh well on the machine you've SSH'd to and and uh open SSH is gonna take care of tunneling that down the wire to your your desktop where you're sitting. And it's it's nice and easy. I I had very minimal setup. In fact, I my setup was install uh X quartz on my Mac and install Xterm on my Linux server, and boom, it was working. Uh and there's a whole handful of uh uh silly little applications. Xterm is one that I used to use all the time. That was my terminal. Uh but there's XClock and XCalc and XI's, and you can even run like uh Firefox or or um uh Chrome or Chromium, what you know, whatever.

Wolf

Right, so you you've just said uh a ton of things. Yeah. I guess a couple of them do matter to me as you were getting to the end where I was talking over you. But here's what does matter to me. Um I'm actually doing work on my Linux box, but I'm doing it from my desktop because the Linux box is in the closet or whatever, or in you know, some foreign state, I don't know. And the work I'm doing is I'm doing a bunch of stuff with databases and pandas, data frames, and I happen to be in iPython or something like that, and now I want iPython to draw me a graph. That's my use case. Can I have that?

Jim

Uh well, draw you a graph. What what is your graphics thing? Is it iPython that's doing that?

Wolf

Or so iPython is the thing that just asked a whole bunch of other things to give it data and draw a graph. And then those things probably have a quote backend. And one of those back ends, I believe, um is uh well, I know you could say mapplotlib is a back end. But what I'm what I'm hoping is you could say X Windows is a backend. And then if it said that, which I don't know, but if it did say that, then I would know for sure the thing I want you are telling me I can have. I can be on my Mac, connected through a normal SSH connection that looks to me like all SSH connections look, a text terminal, but suddenly a window pops up on my Mac that isn't the terminal that has a graph, and all of that came from the remote server.

Jim

Okay. If that if that back-end driver that you're talking about is an X Windows system app or client app, then yeah, certainly. Uh I I do something kind of similar. Um uh I use Image Magic to generate images all the time. Um and which is great.

Wolf

Image Magic is one of the greatest apps of all libraries or everything of all time.

Jim

Any kind of image, and it's it's fantastic. I I create icons and and uh indicators and all kinds of stuff, and I use I use Image Magic, and it'll create almost anything you want. But let's say it creates a PNG or a GIF or uh or a JPEG. That's that file is sitting there on the Linux box. How do I display it on my local machine? Well, the the poor man's way is uh SCP it back to your desktop and then you know type open space file and and uh the Mac OS preview thing will open it up and display it. That gets really that gets really tedious. That's the way I do it, but that gets really tedious. Now you can also run image magic on the Mac, uh, but a lot of times the the software that I write, the server software that I write is running image magic things. Or here's another one LaTeX. I I generate a lot of LaTeX and I process that uh to eventually turn it into a PDF. So all that stuff takes place on the server. Um and you know, I'll generate uh in the process, it'll create a DVI file. Uh and uh over on Linux, you've got a program called XDVI. That's an X client app. Uh you could generate that DVI file and then run XDVI to display it, and it'll come across the X Windows system using the X protocol and display it on your local machine without SCP in the file over to look at it. Um you can do things like that. Maybe you got a PDF preview or something. You you can run that on the on the Linux box and display it on the local machine. Um there's there's so many different things you can do. Now I I talked about uh X quartz on the Mac. Well, guess what? You get to do this on Windows too if you want. There's something called X Ming, it's XM-In G. I've I used that years and years ago, and it's still out there, and it's the same kind of thing. It's a it's an X server. You install that on your Windows machine, you SSH over to the Linux box, and you can run apps. Uh uh, you know, and uh on Windows, you might use OpenSSH or you might be using Putty. Both of those can handle uh proxying uh or forwarding the X protocol. Um there's uh a settings in in uh Putty or there's the dash X option in in OpenSSH. And X will go across the network. Uh and if you just happen to be sitting on a Linux machine on your desktop and you're talking to a Linux server in the closet, that's easy. You can just use OpenSSH, SSH over to the other machine and and uh and run your app and it displays locally. And then the the kind of cool thing that I like is you can have dozens of servers uh all over your network and even across the internet, and you can run apps and all those servers and all those windows will display on your local desktop. And it's it's it's kind of neat because you know now you like that's uh multi-computing, right? Multi-processing. Uh you got different things running on different servers all displaying on your local desktop. It's it's it's pretty cool. Um so anyway, we talked an awful lot about X, right? Uh certainly not enough for you to go be a programmer, but you you might have an understanding now of kind of what the X window system is. Um but there's a new kid in town, Wayland. Uh even back around I I think Wayland got its start around 2007, 2008, something like that. And and not that many people these days are working on on big, huge supercomputers running graphical apps that need to display on a desktop across the network. A lot of people thought that that network transparency was just useless. All right, there's extra layer that was a performance issue. The X clients apps can't really talk to the hardware because there's a network in the way. Um so some guys from the Xorg group, they went off and they created something called Wayland. And it's a whole new windowing system that doesn't involve the network at all. It's getting the apps much closer to the hardware. Um you know, back in the in the late 2000s, uh people were talking about putting uh uh putting Linux on phones, a little tiny device like that. You don't need the power of X with network transparency. You just wanna want something fast and lean and and small. Um so Wayland is a is a different way to do it. It's it's not the X system, it's just a different way to do it, and it's it's gotten to the point. You know, back when they came out with it, I thought, yeah, okay, somebody's gonna do this, uh we'll we'll watch them flop. Well, guess what? They did not flop. It's turns out it works pretty well. All modern Linux is come with uh Wayland now. Uh in fact, you have a choice. Like if you install Ubuntu 2404, in fact, 2604 is coming out soon, but uh 2404, um you're gonna be running Wayland. Uh but it's a simple switch, uh a little command you run to switch it back to the X Windows system if you want, if for some reason you want to do that. Um and it just fires up a whole different stack of of things, uh, and then you're running in a Drax. Um but uh you know kind of sad to say, uh the X Window system is is more or less reached its end of life. Um uh Wayland it seems like the way to go.

Wolf

Uh in fact, okay, so you you just said end of life. Yeah. But there's a difference between someone says the words now it's end of life. That's a thing. Yeah. Like I'm declaring it's the end of life, and the thing just turns out to be not useful anymore. You know, owning horses is great. Horses as a standard mode of transportation is beyond end of life, not because someone said so, but because they don't go on the highway.

Jim

Yeah. Um other things like that were better. Right. So which is it? Well, certainly the X Windows system is still out there. Right? It's just not as useful uh in the way that it that some of the newer things are. Um uh it it it is being deprecated. Uh I mentioned earlier that GNOME came out with release 50 back in March. They've removed uh X11 support from it. So if you're gonna use GNOME on a Linux box uh GNOME 50, uh you're not gonna be running X. You're definitely gonna be running Wayland. Uh KDE is doing the same thing. When they come out with uh Plasma 6.8, which is scheduled for early 2027, it won't have X11 in it. So yeah, so I I did a lot of talking. I did 40 minutes or so of talking about uh the X window system, and uh you you you may not see it very often anymore, if at all. Um so that's kind of sad because I've got you know I've got some history with it and I enjoyed it, but I'm all for new technologies coming along that are better. And I think a Wayland turns out it's better if you don't need network transparency.

Wolf

Okay, so but suddenly I have a problem again. Yep, and I need you to solve it. Okay, my new problem is okay, the server and the thing I'm calling a server that lives in a closet and is running whatever the best version of Linux it reasonably can is. And in my actual real case, has a bunch of GPUs, modern ones, nice ones, with lots of RAM, because that's a thing my problem needs. Uh so there's this new hardware. What's it gonna have on it? And I would have said minus capital X, I want that goddamn graph. Okay.

Jim

If you're running uh uh if you if you're running uh well, the X stuff is still there. Uh if your if your desktop uh what is your desktop? Is it a Linux box? Uh and you wanna you want to display, okay. Let's say it's a Linux laptop. It's an Ubuntu laptop. It's an Ubuntu laptop. 2404. 2404, running whatever the latest version. You're running KDE on yours, right? Are you running GNOME?

Wolf

I am not. I am not running kubuntu. I am running Ubuntu. They gave me stuff, and I could have had better, but I am using what they want me to use. Okay, so you're running GNOME. Um and I can't even install a font. I normally could grab 50 font files and say, hey, install these. I think I can install one font file at a time, but I can't actually prove that.

Jim

Oh, there's gotta be a way. Um uh okay, so Ubuntu 24.04 is not running uh GNOME 50, so you do still have X support. But the next version of Ubuntu may not have that. Uh but here's the good news there's something called X Wayland. Remember how we talked about X quartz running on your Mac? There's something called X Wayland that'll run on your desk on your Linux desktop, and it is an X server. So while you might be running Wayland, uh you've got this nested X server, so you get to do your graphical stuff like you wanted. You do still get to do that.

Wolf

Okay, one how the sausage one I I do want to try it. One how the sausage is made question.

Jim

Yeah.

Wolf

What language do you think X Wayland is written in? Oh, I'm gonna guess see, but I really don't know.

Jim

Do you know better?

Wolf

Well, is it a cross-platform app or is it a Macintosh app?

Jim

Uh X Wayland would be a Linux app, because Wayland is about doing display stuff on Linux.

Wolf

Um well, here's an interesting thought. I wonder how much stuff that is you know Linux targeted is gonna skip C entirely and go straight from C to Rust? That is a question.

Jim

Um It seems lately like everything. Right? I mean they're rewriting all the all the the shell utilities and and all that stuff is is all being rewritten in in Rust. So um yeah, there's still some C stuff going on out there, but uh it sure seems like Rust is is taking over.

Wolf

Man, I used to be the biggest C fan. You were unstoppable.

Jim

Yeah, and you uh you don't talk much about it anymore. I miss I I miss that wolf.

Wolf

Do you do you? I mean, you have that with lots of other topics. Uh yeah, I do. I do.

Jim

All right. So so yeah, so X X11 is kind of going away. Um it's kind of a bummer after we spent 45 minutes or so talking about it. Uh, you're not gonna see that much of it in the future, but it is there. And uh for those of you who have been using it, maybe now you know a little bit more about how it uh how uh you know what it is and how it worked. Uh there are some competing protocols as well to X. Um you know, if you used Windows, uh you almost certainly used remote desktop on Windows, right? That that gets it. Always, all the time.

Wolf

When I when I worked at Learning A to Z, um almost all the stuff that had to happen really happened on my Windows box, but using my Mac was so much superior to the Windows box that um I used Remote Desktop and Windows was just a there's two modes that the remote desktop stuff can run. It can run your entire Windows session in a Mac window, or it can do, and it had a special name for it that I don't remember. It can have all of your Windows windows be Windows.

Jim

So it's just like it was like a rootless, a rootless thing. Yeah.

Wolf

Whatever it was, uh that's what I used, and it was pretty, pretty good. I I would swear now, but it's good.

Jim

Yeah, so there's so there's it that's the RDP protocol. That's kind of pretty close to what the X protocol is. Uh then there's VNC. I know you've used VNC. Uh I've used it.

Wolf

I have and I many times. Never satisfying.

Jim

I don't care much for it. It's there, right? Back when we were doing um uh LTSP, uh uh VNC came out of Olivetti. I think where were they? France. Uh and they were talking to us. They really, really, really wanted us to incorporate VNC into LTSP. And uh boy, I just didn't like using it. Uh so if if I don't like using something, I'm very reluctant to incorporate it into my product. So I didn't. And it's still out there, you know. You can run uh VNC on your Mac and talk to a Windows machine or talk to another Mac or talk to a Linux machine. Uh and then there was something else that came out back when we were doing LTSP called uh NX. And that was just this big huge wrapper on top of the X Windows system, uh the X the X11 protocol. Um, and that, you know, that what they did was they sort of managed the whole SSH connection for you, and it was it was interesting, but it's gone proprietary now, so it's it's not even a contender, as far as I'm concerned. I I guess people are using it, but I I was never terribly interested in that. But I don't know. I I I don't know that I have anything else to say about X, my friend.

Wolf

Uh this was way, you know, a lot of times, uh I and I think we both do this, and neither of us admit it, but the other one will say, Hey, I want to talk about foo. Yeah. And foo is gonna be super exciting. And then in the head of the person who is the hero of this discussion, you know, uh, they're like, foo. Uh well, I guess if you want to talk about foo, that's that's fine, but I can't imagine you could make foo even interesting to the guy who invented foo, but okay, let's talk about foo. And then we don't say anything about it, and then uh, you know, whomever it is talks about foo, and foo turns out to be a lot more interesting than I thought. Yeah. Uh when it's me, and you have gone so far as to tell me, hey, you talked about blah. You didn't tell me in advance you assumed blah was gonna suck. But at the end you will say, yeah, blah was a lot better than I thought it was going to be, which implies immediately to me that you did think it was gonna suck.

Jim

I would I would never say that, would I?

Wolf

So I'm gonna say right up front front, I you know, you told me, yeah, X Windows the I'm sorry, the X Windows system is going out of favor, and we're moving to other things. Uh predominant among those might be Wayland. And I thought, well, why talk about X-Windows system at all? And this probably won't be that interesting. But uh I did, I feel, learn from this. I learned things I didn't know. It was interesting, it absolutely kept my attention. So uh as always, I am surprised by how much better it was that I had foolishly uh underestimated in my mind. Yeah, well this was a good one, I thought.

Jim

Well, good. I'm glad you enjoyed it. Um uh, you know, uh that that thought you have about you know thinking it's not gonna be that great. I, you know, Wolf and I belong to the uh Michigan Unix users group, mug.org if you're interested. And I and I've said for years and years, it's the it's the presentations that we have at Mug that I'm not interested, not uh not excited about, that always turn out to be the best presentations. Because like like you say, I I learned something that I didn't expect to learn. And um and I always enjoy that. It it's it's so I I've learned now to uh if I'm not excited about it, that's okay, it's gonna be great. Um so uh and speaking of mug, we do have a meeting coming up uh April 14th. If you're listening to this before then, I mean it's it's not that far away. Um uh we're we're Gonna be going over uh containers. Remember the episode we did uh I don't know, six or eight weeks ago on on containers, including Docker and several others. Uh we're gonna be talking that uh about that live. So go to mug.org. There's a link on the website. You can join the Zoom thing, it's free. Uh it's on Tuesday night, um uh April 14th at 6 30 p.m. Eastern. Um you'll get to uh ask questions and see examples and have all kinds of fun. So yeah, show up to that. So I think uh I think I'm about all talked out. I'm sort of losing my voice and I'm uh Should I close it up? Uh yeah, I I think I'm done.

Wolf

Well, let me tell you uh all the details. The most important thing is uh I'm so glad that uh you're listening, who whoever you are out there, and I'd like to know who you are. Tell us who you are, send us some feedback, which you can do by email, feedback at runtimearguments.fm. You can reach us on Mastodon. Jim is jam jam at hackyderm.io. I am uh yesjustwolf at hackyderm.io. Um our podcast is runtimearguments at hackyderm.io. And you can go to the website runtimearguments.fm. Um there's going to be show notes in your player. You can send us email. I just said that. That was the very first thing I said. Feedback at. I should listen. Um it's easy not to. Um there's gonna be transcriptions, there's gonna be show notes. The show notes are gonna say everything that Jim thinks was important that you should take away. Um, and we'd love to hear more from you, and thanks so much for listening. Um, I don't think I have anything else to say uh except for thanks and goodbye. Uh Jim, you? Uh I I'm I'm gonna go with goodbye. How's that? All right. All right, see you guys. Thank you very much, everybody. Uh bye bye.

Podcasts we love

Check out these other fine podcasts recommended by us, not an algorithm.

CoRecursive: Coding Stories Artwork

CoRecursive: Coding Stories

Adam Gordon Bell - Software Developer
Two's Complement Artwork

Two's Complement

Ben Rady and Matt Godbolt
Accidental Tech Podcast Artwork

Accidental Tech Podcast

Marco Arment, Casey Liss, John Siracusa
Python Bytes Artwork

Python Bytes

Michael Kennedy and Brian Okken
Talk Python To Me Artwork

Talk Python To Me

Michael Kennedy