Tech Over Tea - He's Building A New Modern X11 Server In 2026 | dec05eba

Episode Date: January 30, 2026

Today we have the developer of both GPU Screen Recorder as well as the upcoming Phoenix X11 server, a new X11 server that isn't built off of a fork of Xorg and aims to add a lot more functionality====...======Support The Channel==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson==========Guest Links==========Phoenix Repo: https://git.dec05eba.com/phoenix/about/Website: https://dec05eba.com/GPU Screen Recorder Flathub: https://flathub.org/en/apps/com.dec05eba.gpu_screen_recorder==========Support The Show==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson=========Video Platforms==========🎥 YouTube: https://www.youtube.com/channel/UCBq5p-xOla8xhnrbhu8AIAg=========Audio Release=========🎵 RSS: https://anchor.fm/s/149fd51c/podcast/rss🎵 Apple Podcast:https://podcasts.apple.com/us/podcast/tech-over-tea/id1501727953🎵 Spotify: https://open.spotify.com/show/3IfFpfzlLo7OPsEnl4gbdM🎵 Google Podcast: https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xNDlmZDUxYy9wb2RjYXN0L3Jzcw==🎵 Anchor: https://anchor.fm/tech-over-tea==========Social Media==========🎤 Discord:https://discord.gg/PkMRVn9🐦 Twitter: https://twitter.com/TechOverTeaShow📷 Instagram: https://www.instagram.com/techovertea/🌐 Mastodon:https://mastodon.social/web/accounts/1093345==========Credits==========🎨 Channel Art:All my art has was created by Supercozmanhttps://twitter.com/Supercozmanhttps://www.instagram.com/supercozman_draws/DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.

Transcript
Discussion (0)
Starting point is 00:00:00 Good morning, good day, and good evening. I'm as well as your host, Brodie Robertson. This is actually the first episode I'm recording of 2026, so there is that. But that doesn't really matter. So today, we have the developer of a project known as GPU Scream Recorder on, which you've probably heard of before. But we'll talk about that maybe a bit later. The main thing that we are here for today is a new X-11 server being developed, known as
Starting point is 00:00:29 Phoenix. So how about you introduce yourself and just we'll go from there? Yeah, so I'm the developer of GPS screen recorder and now Phoenix. And the name I go by online is it's not pronounceable but you can call me Deco Zeba. Okay, I saw the name, I was like, I assume it's just one of those names where you just want to make sure it's, because you don't, we don't want to show your face and all that, so it's just like a name to have.
Starting point is 00:00:59 And it's not going to be taken anywhere. Yeah. So, yeah, I'll also made some other software, but it's mostly GPU screen quarter that I'm known for. So I guess we'll just get
Starting point is 00:01:17 right into it then. Why? Why are you making an X-11 server? I know that's really broad and we can branch out a lot from there, but just at like a high level, why start the project? Right, so in almost all of the project that I've made, I've had issues with Wayland because of restrictions.
Starting point is 00:01:44 And the reasons are not technical, but because of the decisions that they have made to design the way like compositors for their own, they only, they mostly only think about their own applications and the style of applications that would fit their desktop and not the general applications that might need to do something unusual. Often the case, for example, if you make some application that looks like an application that was on Windows, that won't really work that well on Wayland. So I tried to make my own. Will you go on any further?
Starting point is 00:02:25 Yeah, for example, in GPS screen recorder, it's the, It's time to look like NVIDIA shadow play, and it's a full-screen overlay. It's transparent. And for example, in the Wayland Protocol, it says that a full-screen transparent overlay, so I'm not allowed. The background has to be black. So I don't want a black background for the window. I want to see what's behind it.
Starting point is 00:02:49 Right. You want it to be like Shadow Play. You want it to appear over the game. I actually have another similar idea to this, which doesn't work properly. on Wayland. I don't know if you've ever played Path of Exile, but for that, there is a really common tool that people run called Awakened POE Trade,
Starting point is 00:03:08 which is a trading overlay, which tells you the prices of items and things like that. On X-11, works great. On Wayland, thankfully, they have a fallback where it can run the overlay as a web browser window, so it's just in the window to the side, but the overlay part of it just doesn't function at all, like, at all. Yeah, so for example, in GPS screen recording case, it runs as an X-11 window on the Wayland.
Starting point is 00:03:36 And it happens to work in some composters, but it's not really specified how X-11 windows should behave. So it works on KD and Gnome, but not on Cosmic, for example. Right. And Cosmiss is not doing it wrong, just that it's not, it's undefining the protocols, but it should we do X11 windows. so it doesn't work properly. And there are also other issues with, if you want me to mention all of the issues, but there are too many.
Starting point is 00:04:05 We have plenty of time. Yeah, so if you want to display the next 11 Windows, specifically, full screen on one monitor, it doesn't really work that properly on Wayland. I've seen these examples. For example, if you try to run a D-Mew or application like that on Wayland, it won't display properly. So I do a really bad, ugly hack on Wayland
Starting point is 00:04:32 when I try to display it on the focus window monitor. Like I use instead of, because I need to know the cursor position to know which monitor is focused. So I don't use Wayland for that. Instead, I look at the Linux DRM API. Now look where the cursor plane is, like the graphics, where it's displayed. And you don't need root access to do that,
Starting point is 00:05:01 which is funny. So you can get the first position on Wayland without any root access, but the Wayland Protocol doesn't give you access to that. I did, wait, I had no idea that was a thing. Okay, that seems like a obvious oversight. Yeah, but it doesn't work in all cases. for example, if before some months ago or early in that,
Starting point is 00:05:31 for example, in KD, when you enable the VRR, it disabled the hardware and cursor plane. So it draws the cursor directly on the monitoring instead. So you can get the position then. So in that case, I had to do another hack where, like I create the next 11 window. That's not full screen. In that case, it will, most cases on Wayland, composites on the perfect monitor.
Starting point is 00:05:56 So I just freight it quickly and then get the position of the window to know where the focus monitor is. Right. Right. Yes, and then there are also other things I need to do in my application. For example, I need to get the focus window to put the recorded video in a folder with the name of the game. So you can automatically sort the games that you record. And that's not possible, as you know, on Wayland. So I need to use the instead of X-11 to do that. And hopefully the focus window is in X-11 window.
Starting point is 00:06:40 That works right now because Proton runs as in X-11 mode. But if it's... Yeah, I'm going to say that that's a toggle that you can now enable. Yeah. So that will be a problem in the feature. But you can do that on Wayland in not only. There is a protocol for that, but it's only implemented for real routes and Hypland and some others.
Starting point is 00:07:06 That's usually the case. And also one thing in my application that I want to do is, like on Wayla, you can display a full screen overlay and like a specific position, things like that, but it doesn't work and done. And the same for my notif. that I have I custom notifications because one thing about this is a bit troubling when you're tight to record with the desktop portal is when you're recording it's enables notifications usually on some wayland composters so instead in my own solution I have my own
Starting point is 00:07:44 notifications that that always display and I want them to show a specific position but But Gnome doesn't want you to make custom notifications. So they don't allow you to put the window wherever you want. So you're basically in a position where you have these hacks in places where you can have them. But the experience for a user is going to be different on each of these different compositor bases. Yeah, so I end up using X-11 in all cases because of that, and then that works better. So I'm forced to do that to do that. Yeah, and there's a major issue is even if it could work on Wayland, all of this,
Starting point is 00:08:41 I can't still use it because right now when Proton runs in X-11 mode, one issue is that if you run a false-spring game and then open another, window like an overlay on top of that is we minimize the game so yeah so I so I need to do a hack another hack for that I need to I can't move the focus to the overlay window instead I have to grab the keyboard you know in X7 you can grab the keyboard so other windows don't get to focus and then create an overlay override window so it doesn't get the focus the window the window but it still has input to the window.
Starting point is 00:09:23 So it has like fake focus. Yeah, so and that doesn't work correctly with Wayland because you can't grab the keyboard on Wayland even in X11 mode. So it works if the focus window is an X11 window. So I have to test the take if the focus window is an X11 windows on Wayland. Wayland. And you can't really do that either. So I had to do other hacks for that. So, okay. If you're on, let's just say KDE, because I'm sure the experience are going to be a mess across everything. If you're on KDE and you're using GPU screen recorder, is the experience going to be
Starting point is 00:10:10 on par with the X-11, like if you're running on X-11? Or is there still some stuff where even with all of your hacks, it doesn't work correctly? For a lot of users, it seems to work as expected on X-11 as well. Okay. In the same way that you would expect. But some features might not work if you use them. So if you don't use all features, then it will work. Right, because when I was talking about Phoenix in my video,
Starting point is 00:10:43 I mentioned that you were saying that, like, GPU stream recorder doesn't work properly on Whalen. And I had a bunch of comments, people. saying, no, it works just fine on Wayland. It works perfectly on Wayland. Right. So I guess with all your hacks you have got it to a point where even though it's a mess, like, it works well enough for some people. Yeah, but they haven't seen the bug reports that I yet, so... I see. I see. Yeah, like almost all of them are related to Wayland, so... Mm-hmm, mm-hmm.
Starting point is 00:11:19 So just for your own sanity is part of the reason why you want to make your own X-11 server. Yeah, and there was all other issues like this is an issue on both X-11 and Wayland. But when I'm recording the screen, I don't want, I want to hide the notification that is shown, but it shows up in the recording. But that's really not possible on Wayland and X-11 right now if you don't record it. Windows instead. So as an alternative paper, I have, so you can show the recording status as a LED net notification on your keyboard, like the scroll up lead. And you can't change this product lead on Wayland as far as I know. So instead I have, I bypassed the Wayland Compostor and use root
Starting point is 00:12:11 access to change the lead on the keyboard. And that has issues as well. So on X11, I could easily easily changed it, but it doesn't work on a wayland even with the X-Wailand mode. So the obvious question that I'm sure you've probably got is, why not build a Wayland compositor that basically just branches off in a direction that has everything you need? So realistically, it wouldn't be Wayland. It would be very custom, but it would have everything you wanted. Right, because in the Wayland, the user experience it's tied to the compositor in practice. Like, if you run,
Starting point is 00:12:57 if you want to use my compositor, you can't use KD, the KD or Gnome or whatever you like to use. So that's the issue. In the case of Cosmic, you actually can swap out the compositor, like that window management component. Most of those now you can't, though.
Starting point is 00:13:15 Gnome, you definitely can't. KDE, no, you can't. no you can't but Cosmic you can it's just not documented I believe I believe Victoria Brackenfield did a talk a few maybe like a year or so back demonstrating using Cosmic's
Starting point is 00:13:31 like desktop environment with like Sway as the compositor and various other things right right it's not an issue really and it's not technically an issue but because of the way Wayland is designed well and composites compositors don't end up doing that so
Starting point is 00:13:52 right right and especially if you're on something like a sway or a hyperland there's no component to swap out there so that experience just wouldn't be possible with this custom thing you make yeah right so I guess the question then becomes
Starting point is 00:14:10 why build your own thing instead of taking what exists with X-Og and then changing it into what you want. Right, so I did some work in X Libre.
Starting point is 00:14:28 I'm not really I wasn't interested in XOG server because I think it seemed like they have passed up the development on that. Yeah, so I want so I did get involved a little bit
Starting point is 00:14:42 in X Libre, but the issue was that they were more focused on refactors, and that cost also bugs and things like that. So like almost all of my committee in X-LIP, there was bug fixing. So it seems like it wasn't moving forward to making changes. Yeah.
Starting point is 00:15:02 So I want to try something new and an experiment. And also because of there is a large issue in the X-ROS server, and that's that they handle all of the protocols manually. like they parse them a protocol code manually and things like that. So that's a large issue. So you need to do all of that from scratch to do it properly. So that's one of the first things I did in Phoenix to parse the protocol automatically. So Exxel kind of has like a lot of baggage with it where to really start making a lot of changes to it,
Starting point is 00:15:42 you would need to do a lot of additional work to sort of get it in that direction. And there's a lot of code there to sift through to know what is actually wrong. Yeah, that's correct. Okay, so I guess then that sort of takes us into Phoenix itself then. I'm sure it's going to come up at some point,
Starting point is 00:16:09 but the first question I do want to ask is why decide to go with Zig? Because, you know, you could have gone with C, you could have done Rust like everyone else is doing. Why Zieg? Right, so I actually like C, but I've been invested in Zieg for quite a while now since very early days,
Starting point is 00:16:33 and I just wanted to try something new because Phoenix was first also mostly an experiment to do something. you. And there are also some features in sync that would allow me to make it better, like the memory handling plot and automatically being more secure, like, array out of bounce index checks. And also it also allows me to do that, the automatically parsing of the protocol directly in the language at compile time instead of, like, for example, in Wayland and X11, you have in
Starting point is 00:17:11 in x11 we had xcb xcb proto handling these parts of xmlifies and generate cc code from that the same way in wayland and i didn't want to do that i wanted to have it directly in the language just compile it not without any x-saps and also that ends up being much simpler it's like 300 lines of code you set of thousands of lines of code in like in x11 wayland okay so had you tried any prior, like you said you've been involved in Zieg for a while now. I assume you have some other, if not important, just random little projects you've made here and there with Zieg.
Starting point is 00:17:53 I haven't made very large projects, but I have made some, yeah. So this wasn't like the first thing you were jumping into with Zieg? Yeah, it's not the first. Okay. I have spoken to some people where it's like, Like, ah, so I picked up this language and I'm going to write a kernel. Like, good luck.
Starting point is 00:18:19 You're going to rewrite a lot of the early code, but good luck. I hope it goes well for you. And also, sing is not a complicated language. So, like, even if you, whenever you use it, you can very easily know how to use it if you have used some other languages. So it's not an issue, really. I've never actually tried Zig myself. what is the actual like
Starting point is 00:18:43 what is I guess the common selling point for it I know what the common selling points is but the reason I use it many but for example it can directly include see headers many modern languages can't do that and the way it handles errors
Starting point is 00:19:05 is very good is one of the best language to do that in my opinion And also the way you handle memory, even though it's manual, you have all the nice things like the fair, echo the fair, and things like that. And also the compile time is very nice. Like you don't have another language to do compile time. Instead, it's the same language. It's just runs the compile time instead.
Starting point is 00:19:32 But there are many features of it. It's just nice. But the point is that it's not two different from C. and I like C There are some things I don't like in C so it improves on top of that What is GPU screen recorder written in? It's C and C++
Starting point is 00:19:51 Okay, okay So that's Would you say C is the language you have the most experience in? No, it's actually C++ Okay I guess then why not go C++ with the project? I don't like C++ even
Starting point is 00:20:10 Fair enough Even though I've used, I've been using it like for like 13 years or something. And also it's professionally, I don't like it. I don't think it's a good language. I think that's the case for most C++ developers. They don't use it because they like it, but because the other alternativeos are not as great, maybe. Okay. Fair enough.
Starting point is 00:20:33 Fair enough. I know at least one C++ dev that likes it, but I'll make sure to send that specific section to him to see what he has to say. Did he mean a back to trick? Yes, that's the way. Okay, you knew exactly what I was talking about. Look, I don't know if he'll...
Starting point is 00:20:57 Half the time I don't know if he's being serious or if what he's saying is a joke. So look, maybe he actually hates C++, but he certainly... I think he likes it. I think he likes it. Yeah. Okay, so we have the language
Starting point is 00:21:13 and I guess where do you even start building an X-11 server? Like, what is the first thing you do? At least, what was the first thing that you did? And even maybe before that, like, what was the prep you did to sort of even know where to begin? Right, so I've been, I had some knowledge before a bit of it about the protocol. I only did the basic things like connection and authentication and that. But also when I worked on X Libyan, I looked at XO code before. I read the protocol and things like that I saw that.
Starting point is 00:21:54 But then I also just looked at the X for Phoenix. I looked at the X11 protocol documentation. In there it explains everything. At least for a core protocol, it explains how everything is set up and things like that. And also I had to compare it to XEB code and XR code, but usually if you look at the X11 protocol, it's pretty easy to see. And also you can use a program called X11 trace. When you run an X11 program with that, it will print out the protocol messages. It sends. So you can see from that you can learn.
Starting point is 00:22:37 Okay. So where did you begin? Like, what was your first goal when you started developing the project? I didn't have an end goal or so in mind, but I just wanted to first get it to display graphics on the window to see first if it was even possible to realistically get it into work. I always want to see how complicated it was but then I saw that it's not really that complicated and yeah to make it work it's just implementing the protocols one by one until it works
Starting point is 00:23:18 where is it right now like what sort of state is it in? Yeah so it can display some basic applications and also it can display my own application another application I have not the GPS screen recorder So it's missing some input handling and some events and stuff like that. But like if I add that, then my own application should just work. So for some applications, they don't really need that much.
Starting point is 00:23:53 They just need to display graphics like using OpenGEL. They don't even need all rendering things. And then you just need input and then they work. So some applications just are simple. But then there are other ones that need to some older rendering stuff and some X-11 rendering stuff. And right now, right now I'm trying to get super tucks to run. And it is STL2.
Starting point is 00:24:20 So if I get that works, then SL2 applications will work at least. But here, there are quite a bit to implement. But yeah, I don't see anything hindering it. So it's relatively straightforward. Did you expect it to be so straightforward? I didn't even think about that. I just went in and then tried to get the basic things to just play too. That was the step to see if it was a single.
Starting point is 00:24:53 And then after that I saw that it was simple. At this stage, how long have you been working on the project for? Right, so I started on when I was on Rikki. but in active development is around maybe two months. Okay. When you, like, how much has been done in that last two months? Was it at the point where I was rendering basic applications before then? Or is that a really recent thing?
Starting point is 00:25:27 Right. Like when it costs all of this attention, at that point, point, it can only render the open the DLX Gears app demo, if you know what it is. Yeah. And then after that, there's forged so it can render my own applications. So, like, in just a few days, it was able to display a real application. So obviously, being out of display, like, basic stuff is cool and all. But the point where it would be actually usable is when you can go and display,
Starting point is 00:26:06 an entire desktop. Let's say like a XFC, for example. How much would need to be in place to make that possible? So, for example, yeah, if you want to display XFC, you need to GT applications, and you need the, like, the render extensions, things like that. So that's a bit related to what I'm working now. That's a bit little bit more work.
Starting point is 00:26:36 So if I get, at first I would try to get DVM for example to run because that's what I'm running. Getting DVM to run is not that hard. But if you get one, get XFCA, that's a bit harder because even though if I implement everything, I need to see if everything behaves as expected with a more complicated desktop. Right. But it's not that difficult. It's just how much time I have to focus on this. My understanding with X-Og is over the years, a lot of, like, subtle changes had been made, like, from the Destim environments.
Starting point is 00:27:20 So I don't know if you're going to run into a point where there's things that exist in X-Sorg that are technically off-spec. I haven't seen that issue yet, but I have seen, for example, bugs in X-Lib, because it expects Xorg. Not on a protocol level, but for example, optional data that is supposed to optional. It expects it to be there, otherwise it crashes. Right. Yeah, but in that case, it's not because it expects exactly to XOR, but it expects like they thought to be there
Starting point is 00:28:06 that they hadn't implemented yet at that point yeah so I might need implement a bit more than just basic things to get to work because of things like that that was bad. Now
Starting point is 00:28:21 X hasn't been around for a long time 84 something like that that sounds about right over that time there's been a lot of a lot of things, I would say a lot of things
Starting point is 00:28:36 add into X-11 and whilst most people nowadays using X-Og in a relatively simple way, relatively standard hardware, my understanding is also a lot of a lot of things that are supported
Starting point is 00:28:50 by X-Og that nobody is reasonably using now. Yeah, that's right. So, like for example, in my own application, and that I run with Phoenix. It just only uses a tiny fraction of the protocol.
Starting point is 00:29:09 And that's the case for most applications. So like if you try to get my games to run, it will be the easiest part because they don't really use a lot of the protocol. They usually just want to get the buffer and then display it on the screen and get the input. So getting games to run will be the first part it will be able to do. And then, as you said, there are a lot of things that people don't use. And right now, I'm just implementing extensions of the X11 protocol as I see them. So, yes, the way I'm implementing, if they set, I don't just start from this first thing and then go down and implement everything.
Starting point is 00:29:52 I just run real applications and then see what they need, then implement those things. Mm-hmm, mm-hmm, mm-hmm. So you didn't really have a idea of where to start. You wanted to just base it off of, hey, I can trace what protocols are being used. Let's just follow an application and see exactly what that needs. And then if you don't run into any applications that need something, that can sort of be left somewhere down the line. Yeah, correct. Okay, that actually makes sense as a way to sort of guide your direction because
Starting point is 00:30:30 there are these, there are a couple of other X-11 implementations out there, but the idea of building an X-11 server hasn't been that common of a thing. There's, um, X-11 minimum, no, I don't remember what it's cool. There's definitely a few other servers out there. But the point of trying to get out there is there is there's not a ton of other examples of sort of how to approach building an X-11 server. You have X-Lorg, which has tons and tons of stuff in it, but not necessarily everything in that is actually required for, you know, real applications now, or even possibly real applications ever. Yeah. So,
Starting point is 00:31:17 I think it's much easier than people think, um, at least the core part. Like, For example, the extensions, not everything is properly documented. Like it mentions which things are part of the API, but it doesn't mention how the messages are supposed to look like. So you have to look at it sometimes you have to look at the X-A-B-X-Ml files instead, and maybe sometimes in the XR code. But that's one thing my project Phoenix will improve because it will generate the protocol from the
Starting point is 00:31:57 parse so it will always have all of the implementations, I mean all protocols documented so it would be a little bit easier for others to get into that. One thing I'm
Starting point is 00:32:14 kind of curious about is how does I guess how does an X server work if that makes sense? Like if I'm trying to run an application what is the X server actually doing? Right, so when a client connects to X11,
Starting point is 00:32:34 that's the first thing they do. They connect to the X11 and then after that, they want to display a graphics inside a window usually. And they do that by like, for example, if they do use OpenGL, the OpenGL creates a buffer, the GPU drive, we just that. Then he asks the X11 server to import that. So yeah, the shared file descriptor to the server. And then the it imports that with OpenGL. And then the driver will ask you to display that and it will display that.
Starting point is 00:33:17 So the communication to the X11 server is not just in the application, but also in the driver. So the drive, because on Linux, there is no way to, there is no standard way to like share the graphics state that we did display server. Instead, there's a Wayland Way and then there's an X-11 way. So yeah, it uses a DRE3 extension to that. And then also you want to do things like when the Windows focus, you want to get input then instead of always getting input. And that it does that by sending events to their clients when they're going to. you move the cursor, for example, and press buttons. But that's just, yeah, that's the basic thing to set up. You have the applications. There are other things that you can do, like, around that, but those are the important parts. Right.
Starting point is 00:34:09 Okay. One question I do have to ask about is hardware support. Like, how was it being handled in X-Og? And I guess how do you make sure that hardware is actually? actually going to work with this thing? Right. So Linux has a, it has standard for that the driver's use right now, the Linux DRM API.
Starting point is 00:34:38 And then you have also the Mesa KPM to create the buffers. And the modern hardware supports that Intel, AMD and Nvidia. And Vedia had issues with that before because they want to push EGL streams. So that's cost some issues in ways. custom is just in Wayland as you know and but modern Nvidia's but there's yeah there's also the issue that all the Nvidia drivers which are tied to older and Nvidia GPUs as well because they can't update to newer drivers so they can't really use that so that's how old are we talking here
Starting point is 00:35:19 I don't know exactly with this but I think it's Yeah, the 10-meadri version is for, is it 490 or 475? Yeah, it's earlier than 900 series at least, I think. Latest supported, you can use 490 would be last support 900 like 800 series something like that yeah I think that's correct so relatively old cards at this point
Starting point is 00:36:10 yeah exactly there were some way like compost that used EGL stream before but I believe they're all moved onto MesaGBM But I want to try to support those old Nvidia GPUs as well, but I don't know if EGL streams works as expected since Wayland Compostel just moved on. So I assume maybe there was some issues or not. I don't know. So I would have to try that. But yeah, one of the main reasons that I can't support all the Nvidia GPUs is because they're tied to the X-11, I mean X-R-Server, because they use the direct API.
Starting point is 00:36:51 that exposed from the Xero server is not part of the X11 protocol and they are proprietary the drivers so yeah yeah so it just like isn't impossible it's not possible to do that if I if I instead I could support if I like copy the XServe code and then did that but then it would be X4 server right so right and um I again at what point does it real, like, this is a problem that exists with, what do you call it, the Red Hat's new Nvidia driver, Nova, that's it. If you're going to be building a new project, you have to pick a cutoff point for what you're going to support. And it sounds like you have a reasonable point where it gets considerably harder to make that hardware supported. so unless you wanted to start doing, you know, API reverse engineering to make that happen
Starting point is 00:37:58 or just copy the X-Or code, it seems like a logical stopping point to say, okay, we're going to support everything after that, which supports the new modern thing. Right, right. So, yeah, I put that limitation not because, like, because I wanted to, because, but because it would be otherwise impossible to do it. Yeah, so on the AMD and Intel side, it works with much older hardware, so at least for that it's good.
Starting point is 00:38:35 So one of the nice things that I think being open source, people can actually go and support things and fix things that they want to. Invidia, we love Nvidia. Great company. At least in recent years, they've been sort of coming around to doing things better, but it's a video, right?
Starting point is 00:38:57 Like, there's only so much you can do if they were never going to support the hardware properly on Linux anyway. Yeah. So, uh, wait, well, I forgot where I was going to go from there. Um, so hardware support's not a concern. I guess we can talk about what are the actual goals of the project? Like, where do you, like, what do you, like, what do you, like, what do you? want this to be. Right. I just want to mention one more thing
Starting point is 00:39:30 about the hardware support. Go ahead. I will also be open to accepting full request to support all the hardware as a as a back. Because in the Phoenix stroke, it's
Starting point is 00:39:44 abstract the invitation. So I have a like a backend interface and there you can add more drivers and input and graphic and stuff like that. So I will support also all the hardware is somebody wants me to and they provide the code. Right.
Starting point is 00:39:59 So I'm just, I'm open to more implementations. Right. So it's not a, it's not a project we won't do that. It's I have other things that are more important right now. Yeah. So what's what's what I'm saying?
Starting point is 00:40:15 Other question? I was just saying what are the goals, the overall goals of the project? Like long term, when things are in a good and, you know, useful, functional state, what do you want to actually do? Right, so I want to, well, first I want to be able to run it on my own system
Starting point is 00:40:38 instead of Xero server. That's the main thing. And then after I make it work like an X or so we can display, we desktop environment and things like that. I want to add support for all these nicer things like HDR and the making a bit of different. more secure or private can you say maybe like having the not being able to listen to all keyboard inputs and having a prompt when you try to record the screen and things like that so
Starting point is 00:41:11 and those are the easier part actually to do so just when I think get everything else in place than I can add that okay actually do want to I do want to go into that because that is one of those things that I think in my video I said that you're sort of taking what has been learnt from the improvements in Wayland but also learning from
Starting point is 00:41:35 I honestly in many ways I would call them failures of solutions they came up with problems that existed but the solutions they haven't they've caused some issues under themselves right now there are issues with
Starting point is 00:41:52 um uh unattended screen recording, for example. This is something that Nvidia brought up in a recent talk. Then we have the issue of global shortcuts, which is a whole big mess with portals, which every desktop implements the frontend differently for, and basically no application support
Starting point is 00:42:12 because it requires a whole redesign of how they're handling shortcuts. And it's a whole big miss. The only one that I think actually has it in a good state is KDE. Hyperland, you've got to, like, modify the conferring fig file to implement any shortcuts for an application. And Ganoom, I, what, they don't even have the front end, I think, is what, what, it, what said in that, that, in the blog post. So, I guess, which one do you want to approach first?
Starting point is 00:42:42 We can talk about HDR, or we can talk about the sort of a better ways to handle these, these security problems. Right, so actually, Gnome has support for that. Oh, it has it now? Yeah, but there were some issues when I used it at least. Okay. Yeah, there are issues in almost all of them. So anyway, so yeah, let's talk about the security part.
Starting point is 00:43:08 Okay. Like for example, global shortcuts. Like one of the one easy thing you can just do is, like KD does. There is an option to allow X11 applications to get input if they have it depressed the modified keys so for example control shift and all things like that and so that will pretty good prevent the key loggers because they won't get any for example if malicious software ran on the computer it won't get really any important information then so that's just one easy solution can you can do that in extra server as well if you just modify to do that simple thing
Starting point is 00:43:50 But then I also want to show like I want to be able to show a prompt for example. If an application wants to get global hotkeys, it will show a prompt to the users to accept it. So it just doesn't do that in the background. But also I want to change some other things like I don't think the application will be able to listen to input without like grabbing it. So you can't just listen to it. They have to be the owner of the keys that they get. Because yeah, for example, like right now
Starting point is 00:44:29 in X11 application, you can listen to the input. But then when you try to write in another application, it will just work at the key logger will be there silently. You won't even notice it. But if it had to grab the keys that they want to listen to, it won't be able to grab all the keys. It will only be able to grab the keys specifically that you want to hit input for.
Starting point is 00:44:50 And also, if you had to click on them, then you will see that it wouldn't write anything to that application that you're writing into. So you want to make it so that, if I'm understanding correctly, that applications will request the keys they want to listen to, but they can't,
Starting point is 00:45:10 if they do that, then they can't just take everything. That makes sense. Oh, yeah. And right now on Xorg, you can just write a, Python script that says listen to keyboard and then just log everything. Right. Yeah. And showing the prompt is a nice part of that. But prompt are maybe not
Starting point is 00:45:31 always useful because often people just flick, except they don't really read. On Windows, you have like admin prompts that appear and people just like, oh, something wants to run, click it, whatever happens, who cares? Yeah, so that's one reason. Because of Windows, a lot of those prompts show up, and they're not really useful information in there. So people always kick next, next day, don't read. And I blame Windows for that.
Starting point is 00:46:01 So maybe if it wasn't because of Windows, then maybe people would read it a little bit more. So do you have some ideas on how you would present that? right now is it just more of a matter of I want to get it in a state where I can do this and then I'll think about how to properly present it later. I have thought about that. So one thing is that you have to make the prompt like not every application should be able to handle the prompts. So you need a special ways to do that. So one of the thing I thought about is when you run the Phoenix you can pass an application and then it will run the application and then it will
Starting point is 00:46:44 have a secure communication between them so then for example you have a disk environment you'll be able to run another application that handles the prompts for that so every after desktop environment will be able to have its own prompt for example if you want to display it in a way that fits to a desktop environment yeah that will handle it so it will be a communication between that application and X-D-Penics. So let's say I'm running, I'm a developer of an application that has global shortcuts. Would, with the idea you're suggesting here, would that developer need to do anything on
Starting point is 00:47:28 their end, or would the global shortcut solution you have in Phoenix just work, regardless of what the individual developer does? it will just work and that's one reason why um like they to push to wayland uh although some people maybe say it was because security and things like that that's really not the reason why people push to wheyland uh there was like one thing they wanted to do is every frame should be perfect that matter that they have and it's not really because of security because of the security, you can put that on top of the X-Pers server. It's really that hard to do if they really wanted to.
Starting point is 00:48:15 But I think there was a certain interest in the X-11, so that's really the reason why, in my opinion. What is your thought with everything? Every frame is perfect. Do you want to have some level of that with Phoenix? Like where do you sort of stand with that? Right. So I think from users perspective, I think one reason.
Starting point is 00:48:45 Before we do that, just for anyone who's unaware, what is it, what is meant by every frame is perfect? We probably should explain that. Right. So on the X or so you have had the issue where theory that you have, even though maybe some solution to run a composite. It doesn't always work, for example, if you have multiple monitors, some case and things like that. And so they wanted to fix that in the wayland to have every frame should be perfect.
Starting point is 00:49:16 And also, it has slower compositor latency compared to X11, at least, compared to the normal composites. And so they wanted to fix that to make it sure that it always looks perfect. Yeah, so if I go back to... Yeah, you asked if I want to do that in... in Phoenix, right? Yeah. I think one of the reasons that people voluntarily changed the Wayland was because of tearing. That was one reason.
Starting point is 00:49:48 And I want to at least split without any tearing by default. And actually, one thing in the XR survey that they have done is to enable tearing by default. They did like three years ago, but they never pushed that to a release. So even though they fixed that long ago, they know the distra has that. Right. Okay. Because yeah, I know there was a setting you could change with Xorg that,
Starting point is 00:50:20 at least on AMD and Intel GPUs would disable the tearing. I don't know if it worked with the video, you know, video. Yeah. Okay, it does work with Nvidia and you need to use Nvidia settings. Right, okay. Yeah, so yeah, also one reason that I want to make Phoenix and I want to move away from having that Nvidia specific driver for that. So all of the improvements that do will also be improvements on Nvidia side. And also there are things like bugs in the Nvidia X11 code because it proprietary, you can't fix it like.
Starting point is 00:51:02 it's related to V-sync and to have every frame perfect. You can't really do that on NVIDAX-11 because of their bugs in the code. So I know that MPV has issues with that. So they disable that code for NVIDIA. Yeah, anyway, so if I go back to Phoenix, I wanted to, yeah, I want to have no tiering by default. And I also want to do it better than what they have with even on XOR. with the tier three option. What is wrong with the tier free option?
Starting point is 00:51:48 Well, if I, for example, try to use it with compositor, then it will be double composting and things like that. Yeah, that's one issue with it. But yeah, I also didn't want for in Phoenix. I won't force it to run. For example, if you tried to run a full screen, game, then it should be disabled. So that the, because if you have a full-screen game,
Starting point is 00:52:16 you don't need the compositor to do anything. You can just run, the game can instead itself to decide if it wants V-sync or not. And that will display it because the way composters remove tearing on X-11 is that they run its fault. The composite is full-screen window that piece all of monitors. And the reason it doesn't have tearing is because it runs in V-sync. And so as long as you have a full screen window on X11, that I mean, by full screen I mean that it's full screen on all monitors.
Starting point is 00:52:49 So if you have multiple monitors that will not really full screen mode. If you have one monitor, that is full screen mode. So in that case, you won't have any tearing if you're enabled V sync. So in that case, in Phoenix, I have just disabled the Composter because the game itself will decide that if the user wants to not have his informants. One of the things I actually, so before we go to that, I guess we sort of diverged off security stuff a bit ago
Starting point is 00:53:26 but I kind of want to jump back to that because I just remembered something. With the way you're thinking of handling the keyboard input, so you mentioned the applications won't need to like go and make any modifications for this, my understanding for how this would, if I understand the idea you're saying here, is basically you hook into the protocol that they would have already been using and then just add a prompt in like in between it, I guess.
Starting point is 00:53:59 Right. So actually, let's go to how XOR, because XOR server has tried to fix this issue. they did it like 25 years ago with XAs and they did that it was NSA that implemented that
Starting point is 00:54:18 Oh yes yes I have been told about this okay okay yes go on sorry I'll see if I can find it here we go yeah so they did that for
Starting point is 00:54:30 for use with C Linux because with CLNix you have the like you have every application has more permissions that you have on top of the usual Unix permissions. With that, they have X-11 specific permissions for every window. They have a nice DUI prompt that shows you can specify the permission for every window, things like that. But the issue with that is that if an application doesn't have access to something, then it just crashed the application.
Starting point is 00:55:07 because with xlib by default it crashed application when it gets an error so unless the application itself decides to disable that so one thing i wanted to do and also what xlibres doing now with x-name space extension that they have is to instead of given error you just show double data instead so you have like if if you try to get access to the root window of the system and try to access keyboard for example it will instead get the it will get fake data. So it will seem like from its own perspective that it's reading input, but it's not really just have access to the real data.
Starting point is 00:55:47 So when it tries to, so in Phoenix, if the application will try to get global hotkeys, it will get that fake data. Then in the background, it may be showed the prompt. Then when you accept that, then it will get directed at the real data. Right. And this is the same thing you're thinking of doing with screen sharing.
Starting point is 00:56:07 as well, or screen recording. Yeah, right. Right. Okay. So, to the application, it thinks it is seeing either the keyboard, it thinks it's seeing a window it's trying to capture, but it's not, it's something that sort of pretends to be that. It's not the actual thing until the user confirms they want to share it, and then the
Starting point is 00:56:31 information is passed through. Right. So by default, it will, like in a key logger, by default, instead of getting access to input when everything is focused, it will only get input when its own window is focused until it accepted that prompt. Then it gets access to everything. One of the things you mentioned in the Read Me for Phoenix is, improvements for modern technology. And one of the things in here is
Starting point is 00:57:08 proper support for multiple monitors. I think a lot of people don't realize how, I guess, in many ways, how much of a hack the implementation of multi-monitor support is and how many problems that actually causes. Yeah, so in the XOR server, it has a frame buffer
Starting point is 00:57:31 that expends all of the monitor and it's this space set with the it tries to display at the same time. So it can cause some issues if you have multiple monitors with different refresh rate. But yet there are also some it's also the main issue really
Starting point is 00:57:49 with that is the way it handles composters because the compositor extends to all the monitors and when it has to sink it has to choose to which monitor it should be synced to. So I believe by default the way it works in AMD and Nvidia is that it looks at the center of the window to see which monitor should be focused, should be synced to. But in actually the X11 protocol, you can decide to which monitor a window should be syncedo.
Starting point is 00:58:19 Just that compositors don't use that. So actually somebody can make an X11 composite that works properly with multiple monitors, but nobody has really done that. that. So one thing I want to do it in Phoenix is to make that work automatically, even if you have a composite that's expense to all monitors. Because I want existing a compositor to work as well. Just not the one that I will make. The things like PICOM and anything else people might want to be using. Yeah. I guess you're not really, obviously, you're trying to just get like, basically, application started, but how would you even approach the problem of HDR? And I guess why, maybe it's a harder one to answer, why Xorg sort of never managed to do that.
Starting point is 00:59:25 Right. So there was a proposal by Nvidia quite long ago to add support for HDR in X-11, but it didn't really go any further from that. So, you can't really look at that and to see how this is on. But there's one issue in the H7 protocol is that in the core protocol, you could have support for 10-bit mode, but then the Windows wouldn't have really alpha support, for example. And it will be limited to 10-bit support, so you can't have a 12-bit or a unit as well.
Starting point is 00:59:58 And also that costs some issues, for example, if you try to run, you can run XR7 in 10-bit mode right now. But if you try to do that, it's with some of application on display properly, for example, and also steam, for example, if you just crash. So one thing I believe I would need to do is instead of making it like part of the core protocol, I would make it make it instead an extension that you have the application itself will have to use directly instead of as magically getting HDR. It will have to opt into that. So yeah, that's what that will be the way to print it
Starting point is 01:00:37 from applications to not be as expected. And then on top of that, to make it work like, to make HR work, it will be the same as in Wayland Compositor basically. Because that, yeah, that's the same. But this is something that you're probably not going to, probably not going to touch on for quite a while. Yeah, right. And also, maybe there won't be any X-11 application that uses this protocol that I'm,
Starting point is 01:01:07 I'm doing. And to be, I don't really need to make a new protocol, because X11, it has, it has, it has properties that you can set the windows. And it can set any property on any window. So you can use that to, for example, set this HG metadata, then the compositor would read that and that in this case, Phoenix would they also read that. So I don't really need to make a new, uh, protocol extension for that in X-11. But maybe there won't be any new application that would use that. But so one thing I want to do is support Wayland applications as well.
Starting point is 01:01:49 So like even if you ran, yeah, like you've tried to run a game and it used the way a HR protocol in Wayland. It should work in Phoenix as well. That's one thing I want to support. But yeah, HR and all of that, that's something I will support much later. yeah for anyone who doesn't know there are projects as you mentioned in the the thing like uh 12 to 11 to run wayland applications on an x11 server so you'd want this to be something like there's just a part of phoenix so it it basically to the user would be as transparent as running a regular x11 application
Starting point is 01:02:30 yeah exactly uh actually i've used element to 12 to 11 before and there was some there was some bugs in then so I fixed them so I have some knowledge of the code and fixes like that so if I wanted to I could just fork 12 to 11 and use that
Starting point is 01:02:50 I would have to look into which solution I would use right because even though this does exist this is something that like X Libre is going to have to sort of come to terms of eventually even though a project like this
Starting point is 01:03:07 exist, it's not going to suddenly change the shift, or change the direction that Linux is moving. Most of the major environments are moving towards Wayland. So a lot of new applications are going to it over time be Wayland-only applications, or if they're not Whalen-only, a lot of developers are going to focus on that side, and maybe the X-11 version is just a inferior version of it at some point. yeah and also in phoenix the goal is not really to make everybody use it i'm primarily primarily making it for myself and people that also want to use x11 yeah because there are just some amputation that won't really ever work properly in wayland so for those people they can use it as an alternative
Starting point is 01:04:02 and also as i said like wayland applications should be strong so in that case, you won't be missing out on anything. Yeah, I think having something, like having an alternative exist is really cool. Like, X-Og is going to continue doing the X-Og thing because X-Waelan's part of that project as well, but I don't see X-Og proper ever actually sort of getting massive development again.
Starting point is 01:04:38 So having this sort of new approach where you're not tied to what existed with X-Og before and trying to fix problems that exist with it? Like, honestly, I just think it's cool. I do just think this project is cool. Yeah, also, yeah, so one reason is I try to avoid even part of that core protocol. I won't implement them So I've thought about that Like
Starting point is 01:05:12 Since I don't implement Part of the Core Protocol It can't really be called an X11 server So maybe I will call it something else Maybe I will make His own protocol And just call it a subset of X11 Hmm
Starting point is 01:05:28 I think look at the end of the user As long as they can run the things they want to run And that's going to be a long time down Actually how long do you think sorry, I keep jumping around a lot I do this sometimes how long do you expect it to take to get to a point
Starting point is 01:05:47 where you could go and daily drive it? Obviously you're going to have problems to deal with for a long time but you personally for the stuff that you use so let's see like if I focused on it 100% it would only take a few months to do that
Starting point is 01:06:09 so you don't be that long time. And also, like all of these attention to Phoenix, it got some of me some attention from companies. So there's one company that you also know that I won't mention now because I don't know if it's supposed to be private information. Fair enough. But there's one company that wants me to make a display server for them. It's an open source company as well. So like I could use Phoenix for that and then I will be paid to work on Phoenix then it will be had proper support quickly and also HDR because it's something they once. So it's not really decided yet if it would be Phoenix or something else because they
Starting point is 01:06:59 don't really need the they don't think most features like X-11 and Wayland stuff like they just need very simple display server. So yeah, I will see how to do, how I should do that with that. But if I use Phoenix for that, then it would be very quickly work with, with a proper real environment. That's cool. That actually is really cool. Yeah.
Starting point is 01:07:26 So if I get a job, they also want me to move to USA and stuff like that. So that's good. Is that something you're interested in doing? Yeah I mean Sorry, I thought we DC'd for a moment We good? Yeah
Starting point is 01:07:49 Okay, okay I think you got out for a moment So I guess if somebody wanted to like help out with the project What would you suggest that they What would you suggest that they do Would it be just to find an application And see what protocols it uses
Starting point is 01:08:11 And just go from there? Or do you have another idea? Right. So right now, I don't accept contributions. Okay. Because I want to make it, there are some things I need to set up it, like some basic things that are missing that I want to set up first. And then I will mainly code that I'll accept first because it won't be that useful to test application
Starting point is 01:08:37 because I know that application won't run. So there will be a lot of application at one point. So, but I have already got a pull request, even though I closed it. But yeah, it was a bit. But I think I'll get at least, I'll try to focus on getting DVM to run, after I get applications run. And hopefully that that should be not that long to do. So after I get that, then maybe people could try and run application and see which
Starting point is 01:09:09 one still working on that. So with X-Sorg kind of being the X-11 server that people think of, one of the things you did bring up in the post was a lot of issues with X-Og
Starting point is 01:09:27 get treated as X-11 issues, and I've done this myself. I was under the assumption of things like HDR were an unsolvable problem with X-OG, things like proper support variable refresh rate,
Starting point is 01:09:40 you know fixing global shortcuts things like that I guess how I don't know I'm trying to say here but like how do you try to navigate these sort of problems where people seem to
Starting point is 01:10:01 have this misunderstanding of what what X-11's limitations actually are right so that's actually one reason I want to make Phoenix because although I was working on it, but then I see that people seem to misunderstand what X-7 is, because they say, why would you want to do that when it has these issues? But it doesn't have those issues because it just people think that because the only X-11 server
Starting point is 01:10:31 that they use is X-R, and Xorg has those issues. So they assume that that must be how it is in the protocol. Like there are even some wayland compositors, developers, I think that is the case. But when you clearly read the postcode, there aren't really that information. It doesn't define how things should really work because right in the case of X-Lab, it's not even made just for Linux. It's also made for Windows and everything. All of that can work because everything is abstract how it works. So you can run the XOXA right now on Windows and Mac as well. And, yeah, so the issues with you have in the,
Starting point is 01:11:17 what people have is not in the X11 protocol. And, yeah, that Phoenix will be one, just one proof of that that is not an issue in X11. That sort of leads me into another thing I wanted to ask. Why do you think there was this push towards Wayland? Obviously, we talked about, like, the frame perfect stuff, before, but a push towards Wayland, instead of building a new X-11 server that address the problems people had with X-Og? I think one reason is it's not fun to work on old technology.
Starting point is 01:12:03 Like, if you're not paid to work on something, you don't work to work on something that is old. That's usually the case. People want to work on something that is, like, new and exciting. Yeah, look at the web development space. Yeah, but then I also think there is like, like obviously there's some, I think the red hat is what is more interested in Wayland and X-11.
Starting point is 01:12:31 And also the developers here, so everything is moving just a set place. But yeah, I think the main reason is because X-11 is, this looks like old and ugly. Like I know that the protocol is not perfect. There are some issues with it, but you can make it better. It just doesn't look that interesting, like, it doesn't look new and shining. On that, on that note, you said there are problems with X-11 protocols, like, what problems actually, like, what are actual real problems with X-11? Right, so, like, in the, like, there are many about the, like, it's not really, uh,
Starting point is 01:13:14 One example is that is not the problem is like you have a lot of old things that in protocol that you don't need in the new really need. Like you have formed stuff that clients instead handle now with free type and stuff like that. So like I try to make it easy and defined by not implementing them because applications don't really use them anymore. But then there are also there are some issues in the way the protocol is designed. It's not designed they like consistently. And yeah, for example, they didn't think about the size of things like some protocol
Starting point is 01:13:55 measures might be long, very long, and the protocol is not handled to design that. So they put extension on top of that to have people handle that. Right. But in my case, I would be able to not deal with that. I don't have to deal with that because the reason they added that was because they had the rampering functions in the core protocol, like, granted a lot of rectangle stuff like that and since i won't support that i won't really need support that part of the extension as well so yes i think people should have long ago like make an x117 that is just a subset
Starting point is 01:14:32 of the protocol then you won't have to focus on the issues with it when you talk about things that nobody uses anymore my favorite example that i love bringing me up is the X-11 print server. Yeah, even X-O-Sever removed that, like, in 2008 or something. Yeah, obviously. For anyone who doesn't know, it was a... It's exactly what it sounds like. You could output your X-11 server to non-display devices,
Starting point is 01:15:06 like a printer or a fax machine. Yeah, so a lot of things in the back then, like they didn't have a standard way to communicate. between processes. So they try to put those in the X-11 protocol instead. So there are other things that are doing that. Like the session handling stuff and things like that. That's not part of the, if I remember, correct, it's not part of its protocol, but it still uses the protocol like yeah, you still use X11 codes to do that because they want to communicate between different applications.
Starting point is 01:15:44 So, I guess What have we not talked about? I actually don't know. We're just talking about problems with X-11. I did have somewhere I wanted to go from here and now I've lost it once again. Actually, I guess whilst I'm waiting for that, come back to me, What is
Starting point is 01:16:20 I guess what are you currently working on with Phoenix? Yeah, so right now I'm trying to get super taxed around and so I'm implementing parts of that right now I have to
Starting point is 01:16:38 well this is a bit like maybe hard to understand but I try to render the render extension of X-11 because it uses that but I want to have to implement all of it just implement all of things that it uses, that the SL2 uses.
Starting point is 01:16:58 Yeah, and once I get that to run, I believe pretty much all STL2 applications will run. And also one thing that I haven't said before is like even if Phoenix doesn't turn into, that you run there directly on your computer, you'll be able to run it as a window inside X-11. So you're like it will work like games so basically. Ah, right, right, right. So in one way, that's useful a bit. And also you were able to develop X11 application like composites and Windows Manches, things like that. Because there is a similar application in the X-O-Serve code.
Starting point is 01:17:35 It called X-Nest, if I remember correctly. And you can run nested the composite, I mean, X-O-Sever inside the X-R-Server. But it doesn't have, for example, hardware acceleration. So maybe you can't test composto and think like that. So when it comes to X-11 and Waylon, what do you, I guess, what do you see as the problem with the Wayland approach, with sort of how we've gotten into the state we're in. And obviously things are in a, things have come around, things are in a good, like, the, It's in a state where things are usable now,
Starting point is 01:18:24 but it's taken quite a while to get here. And there's still a lot of oversights that we're still trying to be ironed out. Right, so the main issue with Wayland isn't really technical. It's, as I've written on my own website, is that it's the difference in philosophy between X-11 and Wayland.
Starting point is 01:18:47 Because on Wayland, they won't make application specifically designed for their rail and compositor. And they want to make, they decide the protocol to fit that. Instead of making simple constructs that you have for applications to use that they use for a wide range of things. Instead, design, this is how application should use it exactly and for nothing else. And also because of that issue, that the issue that the they want the protocol to fit exactly how it's working they work whale and compositor. It caused some friction between the different whale and composters.
Starting point is 01:19:28 That's why they have a lot of discussion and every time they want to implement something new, that they want to change it how their compositor work instead. But on the X11 side, they don't do that instead of they say that, we'll decide it and then desktop environments can use it. But like I understand what, Why Wayland went that way because because of the freedom in application in X11, it could cause some issues with how application behaved. And also like I said before, like I mentioned GPU screen reporting, when you open the overlay, then it can make the window minimized that is behind it on X11. Like the game, when it's running false screen mode.
Starting point is 01:20:16 And also there are some issues like when you change works. and then go back to the other workspace that the game doesn't, like it doesn't have input or it's like it's like to get really small and things like that. So I understand why Wayland decided the Wayland Composter should decide how Windows behave, not the Windows themselves. But there are also applications like in GPU screen or recording, but it has to decide how it should display. It has to override the behavior of the Wayland Composter to work properly. Like in the case of the GPS screen recorder, it has to be an overlay because it's not that useful if you have to like pulse tab and then open the window, then do things. You want to do that directly in the game. Right.
Starting point is 01:21:03 One of the protocols that's been going on for a while, it's still going on, is like the whole Wayland positioning protocol, the window positioning protocol, where most of the discussion isn't about sort of the technical concerns. of how this would be implemented. A lot of it is whether or not this should be a thing that can be done. It's something that exists on everything else, but for some reason there's this discussion of, do we even want this? Yeah, so that's one issue that is, actually, there is a protocol to do that,
Starting point is 01:21:45 like not exactly, exact positions, but you can have relative to a screen. edge except the window but that's not part of the Wayland protocol is part of the BLROT's extension to that and VLROTS and KD implements but not Gron so the issue really is in genome they don't want to allow applications to do things like that and there is a lot of cases in the like Wayland Composcer where some things work on basically all other way like composites but not Gn. Then people might tell me just ignore Gnome but like half of all Linux users use to know, so I can't really do that.
Starting point is 01:22:26 Yeah, that's... Like, I can tell people easily, like, just don't use it. If you don't like the direction, things are going, just don't use that environment. But if you're trying to develop something that people want to use, right? Like, people are still using it. So you kind of have to... If you want to be able to have that access to that section of users, you kind of have to just deal with the fact that you are sort of limited by what one environment decides it wants to do. Right. And this is also an issue because when we, when we're moving, like, we want some Windows users to switch Linux.
Starting point is 01:23:15 they won't be able to use their applications, but some of those applications can't be ported to Linux, especially now with Wayland, because this, like, if you ported Windows applications to Linux, you could run them with X-11 without the initials because it allows all the things. But some things of those things are not possible with Wayland, so it will make that part harder as well. So what would, if you were, if you were the benevolent dictator of Wayland, what would you change with the, I guess, protocol development strategy? I would change the philosophy of it, but that's the issue that, I don't think any of the Wayland Compostor develops are interested in that, maybe Hyperland is because they usually implement everything, basically. But I've changed the philosophy that instead that the application should have more power to things. And instead of designing things, specifically how the wind and composites work, they should be more generalized.
Starting point is 01:24:31 So it works for more things. Then there are also an issue like with screen reporting, for example, it's way too complicated. And one reason for that is because they want to make it work with flat, and also because both flatpack and the pipe wire, the red has projects. So I think there was maybe a little bit conflict of interest when they did that. So like in the desktop portal protocol,
Starting point is 01:25:04 the pipe wire is hard coded there. So it has for pipe wire to make screen recording work on Linux if you have a if you use the desktop portal. So like right now, I believe they are trying to make just a Wayland Composter, I mean, Wayland Protocol, where it will be able to record screen without pipe wire. That will make it much simpler than it can skip thousands of life code. And I'm not sure if all Wayland Compostors will implement that. So you won't be able to use it even if they add it. Because why would you use that?
Starting point is 01:25:43 I believe that protocol was, came from the W.R. Root side, if I believe. Yeah, and I believe also Cosmic has implemented this differently, but yeah, why would you use that if you can use it as important instead and support all Wayland composters? So maybe it won't even
Starting point is 01:26:01 really be that useful. So that's an opposition that we have on Wayland. Yeah, Weiland is, it's in this weird state where whilst you have wide adoption
Starting point is 01:26:21 of a lot of protocols, because there is this one entity that decides it wants to be very choosy about what it's going to implement, you kind of create this, how would you say it? Like, I guess, fracturing, I guess, is going to put it?
Starting point is 01:26:49 Yeah, so there's like a lot of, duplicate the work if you really look at Wayland in the Wayland Compostors. Maybe if they would have this designed compositor that is more accessible that you can make your own desktop environment on top of that, then it wouldn't have been an issue. But I think a lot of work has been wasted, like, maybe some people think it's complicated for me to make an X-11 server, but I don't really think it's more complicated than making Wayland Composter.
Starting point is 01:27:22 if you try to make it work for a lot of applications. There have been sort of early discussions that got shot down relatively quickly about building effectively the Wayland Exorg server where it's a basic composite that everyone builds off of and a lot of the arguments basically boil down to this is too complicated.
Starting point is 01:27:51 It would create a lot of of complexity with environments wanting to add things into it, but at least, look, you are early on in the project, so maybe something's going to change, at least from your perspective, doing this, building something akin to an X-Horg, even though you are doing the X-11 again, isn't an impossible endeavor. Yeah. Um, um, uh, uh, yeah. So, as I said before,
Starting point is 01:28:27 It's not really that complicated, more complicated than making a real-land compostor, in my opinion, at least. And part of that is that I'm not implementing the whole protocol. Yeah. Let's see, we covered that, covered that. Actually, yeah, one thing that maybe some people might not be sure about is you say you're going to support multiple displays, but not multiple X-11 screens. And this is one of these weird X-11 terms that I feel like some people probably are not aware of.
Starting point is 01:29:07 Right, so it's a bit confusing on X-11 because they have screens, but they are not monitors. There were monitors in the past when you ran Cinerama, for example, because you had one screen for every monitor. But there was an issue with that, like, you couldn't move one window,
Starting point is 01:29:25 to another monitor with that. But now in X-Lev, we have a RADRRR, the extension for that. And that's the only thing I'm going to implement. And also that's what desktop environment and things like that use already now and window management and things like that. So they will work and nothing
Starting point is 01:29:46 will really break and yeah, things will work as people expect. And I would be able to remove a large part of that. And I actually believe in the X12 proposal, if you have seen that. Yes, yes, I have. X12 proposal. Let's see if we can find it. What was it called?
Starting point is 01:30:14 12 Linux. Ah, here we go away. I made a video on this like five years ago. Do I have a link to it in my description? Yes, I do. Okay. Thank you, me from the podcast. past. Okay, we found it.
Starting point is 01:30:32 I believe in that one, it mentions that they want to support only one screen, but then also make it work with the X-11 protocol. That's basically what I'm doing as well. So I was taking us a bit of inspiration from that as well. So,
Starting point is 01:30:50 obviously you couldn't call it an X-12, but you are, like, it is kind of, I've seen some people kind of saying that this is the X-12 that people wanted. Yeah, it wouldn't be that because
Starting point is 01:31:06 in X-12 they want to they won't support all of the things in all the protocol as well. And mine will be a subset that type you can't really use. It won't be X-12 even you wouldn't be able to call it that. X-11.5.
Starting point is 01:31:26 Yes, I thought about the name if I were to make it in your protocol, like there is X-11. server, there is also Y server. So maybe I call set server. That will fit sick. Right.
Starting point is 01:31:41 For anyone who wasn't... If I remember, isn't X called X because it was a port of W from the Y operating system? That sounds right. It sounds stupid, I'm pretty sure that's how the history
Starting point is 01:32:02 goes. I don't remember it. Yeah, it was in I don't remember the letters, but it was something like that.
Starting point is 01:32:09 It was like inspired by that. They wanted to make some, they wanted to make a graphical server for, um, for like general Unix.
Starting point is 01:32:21 Again, I did a video on this like five years ago, so I could probably go back and reference my old video. I don't, I don't fully remember now. Yeah, there's a lot of history.
Starting point is 01:32:32 I don't remember all in tedious, but yeah. So, I guess, what was I going to say? God damn it, this is happening a lot today. Jesus Christ, I keep forgetting what I'm going to say. I only took like three weeks of doing podcast, and it's already, I'm already an absolute mess. Yup, yop. But there I could mention, like, one of the issues
Starting point is 01:33:17 I had in another application that I worked on. I wanted to embed a window inside another window. Like I do that with a video player that have. And you can't really do that in Wayland. Instead, they want you to make your own compositor just for your own application. So you'd write your entire Wayland Composture just embedded inside the window. And I think that's a bad part because actually if you have a place separated in different its own processes, they're isolated from each other and you can set the sandbox.
Starting point is 01:34:00 You can do Linux sandboxing to make it more secure. So that's one security feature that Wayland developers, they don't want. So I thought that must be weird because there is also like in the digital audio workstations there is a standard plug-in interface that works that is cross-platform and one of them is to embed a window inside the digital audio workstation and that doesn't work on Wayland and like there is a very good reason to to work with that way because like if the if the application is selling it is one version of QT but the plugin is another version of QT then they won't work together So you have to have separate applications that you embed inside each other.
Starting point is 01:34:51 I remember the thing I was going to ask. Maybe it's kind of hard to answer now because the project is still fairly early, but how much of X-11 do you expect to not really need? How much do you expect can just be left in X-Og to not be dealt with by you? you. Right. So I won't really need any of the core protocol rendering stuff, just some basic things like opening your fonts. Like for example in X11, you have the cursor is actually, the default cursor, and it's like they are their fonts actually. But I won't need to really need to real fonts to display graphics and things like that. So I'll, like, I will maybe need
Starting point is 01:35:41 half of the core protocol actually only. And then some extensions I don't need to say either. So, yeah, it's a relatively small part that I really need. Like, I could invent those things, but I don't think I would really need them. So you, at least right now, right, you might like run into things that need more than you actually expected. Yeah, exactly. but sometimes also there might be
Starting point is 01:36:19 some applications that use a small thing, but they they might not do everything a single thing with it because there are some parts of the protocol that are pretty complicated, like the keyboard stuff, the keyboard extension XKB, and
Starting point is 01:36:37 I won't really need to implement all of that. Like if I want to do that, that would be pretty complicated. But there is a library called XDB common, then also within clusters and things like that uses. And I will use that and implement the things that that can do, at least to stop with. So you can use different keyboard layouts and other languages and things like that. But they won't implement all of those things, at least not to stop it. So how far back do you want to make sure is actually being supported?
Starting point is 01:37:12 to mean in the... Like in terms of applications if you wanted to run. Right, so every application doesn't use the core protocol for rendering so it will support GTP2 applications at least
Starting point is 01:37:29 and from there. And so it'll be like almost 20 like 15 to 20 years of applications with like yeah, so it won't really be
Starting point is 01:37:44 issue for like almost nobody will have issues maybe you've tried to run like cd like the old desktop environments cdd yeah yeah they have the common desktop amount i believe that's the name for it yes yes we actually had a new release not that long ago yeah 42 days ago they had a new release somebody's still working on that thing Yes, so I think it's his X motive for the applications, things like that. So I don't think that will work, but maybe I could support that later on, like if I have time. Like nothing in the description that I made for Phoenix is set in stone. So if I have time, I would implement more things as well.
Starting point is 01:38:38 Right, right. And again, once you said that you'd be willing to accept. drivers. So I assume that if people wanted to you know, make CDE work and you hadn't actually done so yet, that would be something you'd be open to as well.
Starting point is 01:38:57 Yes. So in the description, I just set realistic goals for the projects. And also I want to say that when I wrote that on all those things, I didn't announce the project
Starting point is 01:39:13 to anybody but somebody else decided to take that and put it on hack news so that because i was going to wait before like phil's first run real application stuff like that and then right so if you have like a better first impression of it yeah exactly and also because uh i wanted to show that it like like those things i mentioned before like um like people the issues with the x-lexlex that people think are part of the X11 protocol. I wanted to be able to show that directly that they're not issues with the X11 protocol and then have proof of that as well, not just writing.
Starting point is 01:39:55 Right, because right now it's just you kind of saying, hey, I can do this, but you don't actually have the proof of it yet. Yeah, exactly. So I guess what was it like kind of just putting this project out there and then it just getting a bunch of attention. Because obviously this isn't the first project you've had that's had a bunch of attention. A lot of people know about GPU screen recorder,
Starting point is 01:40:23 but I assume that when people found out about that one, it was already in a pretty good state. Yeah, so in the case of GPS screen reporter, it didn't actually get any attention for years. And the application was already working, but then I decided to post about it. So I was there on to announce it. to the White Republic.
Starting point is 01:40:45 I see. Yeah, so in the case of Phoenix, it was announced before it was ready. So I didn't know why people would be so interested in it because it was too early to announce. Like, there are a lot of projects on the internet that do interesting things, but early, and they're not really worth talking about yet.
Starting point is 01:41:08 So I didn't know why they would post about that yet. I think people are just kind of... There's a group of people that are just very excited about X-11 because there is such a push to Wayland. Anything that... Anything that seems to show an interest in keeping X-11 around into the future, just... You know, it's just going to be interesting to some people.
Starting point is 01:41:36 Yeah, I guess maybe it's copium, hawkium. Yeah, yeah. Look, as much as I'm happy on Wayland, at this stage, even with all of the problems that do exist, my workflow is good. I understand that there are people that have certain things where Wayland is just never going to, at least in the direction it's going, never going to handle everything they want. I think people, especially with the fact that like the only other project realistically that was keeping me. things going the Linux side was X Libre and you know as you said it's basically
Starting point is 01:42:17 just a lot of refact there's a lot of bug fixes there's not been a ton of sort of major development work to it in like taking it in a new direction so seeing something where it actually is a
Starting point is 01:42:32 different approach but keeping that X11 spirit there that X11 support there I don't know I think It's just something where it shows that there is still some interest in X-11. Yeah, so there are many people that can use Wayland without an issue, so they won't really have any reason to use Phoenix. But I believe one of the, if not the main reason people use Weyland
Starting point is 01:43:03 is because of the tearing issues that they have. So when they can see that it is fixed, maybe they will be interest in trying Phoenix as well. Now, I'll definitely be keeping an eye on the project. I'm very curious to see, I'm very curious to see how much of what you said can be done can actually be done. Maybe all of it.
Starting point is 01:43:26 Maybe, maybe you actually get all of it done and Phoenix ends up being great, but we don't have an example of it being, of that actually happening. So I'll be keeping a close eye on it to see sort of where it ends up going. And my suggestion, you are, maybe you've already thought about this,
Starting point is 01:43:44 when you do get it into a state where you consider it to actually be good, I would do like another sort of soft relaunch just so people kind of know that it's now in a good state. Right. And also one other issue that people have is multi-monitoring support with.
Starting point is 01:44:05 But that's one issue that, like even if I implemented, that and want to demo that it works. It's like, how do you do that? Like, you could record application, but you want to be able to see that it works. So they will have to try it themselves to just really see that it works with multiple monitors, I think so.
Starting point is 01:44:23 That's will be interesting. Yeah, that's kind of a hard one to demo, but, I don't know, if it's in a state where it can actually be used by people, that sort of makes that easy enough, I guess. There's not really any... If you provide a way for people to run it and people know that it works, then you've kind of done your part there.
Starting point is 01:44:55 Yeah. And also, like, one reason I use SIG is because it's really easy to build application with it. Like, I will try to remove as many dependencies as I want as I can. And so you can just run Siegbilt and try it out. That's also one reason. It will make it easy to people try and also develop it. So I guess how long do you expect it to get to a point where it would be worth people trying it?
Starting point is 01:45:37 Because right now it's probably very, very limited. would it be once you've at least got a super tux cat working just so there's something that's sort of easily testable there? Or like when would you want people to actually try it out? Right. So I believe most people would want to be able to run
Starting point is 01:45:58 the whole desktop environment inside it. So I don't know if they're interested in trying it before that. But maybe some people are and especially developers. So when I get super... Yeah, when I get supertucks running, then it will be more interesting. Yeah, okay. I think we've pretty much covered everything that I wanted to talk about. Is there anything else that you feel like we probably should touch on?
Starting point is 01:46:32 No. It's really interesting to see how it works with the job that I talked about. if I were to use Phoenix and build with Phoenix then it will be very quickly to get it to work in a work sink that people could use so I will see how that goes
Starting point is 01:46:51 yeah I wish you the best of luck with that if that doesn't happen how long the project ends up taking I hope this isn't a project that you work on for a couple of months and then it ends up being abandoned. I do hope this is a thing you stick with long term and bring it into a good usable state,
Starting point is 01:47:17 but I understand that other things would possibly get in the way. Yeah, and also I don't want people to just sit and expect it to come out any time. Because right now I work on it when I have free time and also work on all the project like the GPS screen recorder and fixing bugs in that. And also, I might not work on it every day. So people should just wait until it comes out and then try it. Like, don't expect too much, actually.
Starting point is 01:47:52 I guess that is kind of the problem with people knowing about it a little bit too early now. Now it's like, oh, people are kind of expecting it. People are sort of, hey, when is it going to be ready? how far is it away, all this stuff. Exactly. That's why I was super happy about it. But I guess since they got me this job, that I'm really happy about it.
Starting point is 01:48:18 Yeah, yeah. Well, hopefully, as I said, hopefully that goes well. And yeah. So if people want to, I guess, if you want to get involved in GPU screen recorder, because that one is the one that is all opened, that people can get involved in right now. Where can they go to for that?
Starting point is 01:48:40 So they go on my website, GPS screen, and there you can find GPU screening for them. But if they just want to install the application, they can do that on Flatup. But yeah, I don't use websites like GitHub and GitHub and stuff like that. So you can just contribute directly. I accept patches by email instead like the Linux,
Starting point is 01:49:04 Fernel does. Yeah, so you guess the development is similar to that. I guess that does, that does filter around a lot of people who may not be very serious about sort of helping out. Yeah, yeah, that's like it's, it's almost a feature that I don't get to dump bug reports and things like that. It's instead people that are more serious about that. then. Yeah.
Starting point is 01:49:36 Yeah. So Phoenix is in the same location, but right now, as you said earlier, you were not currently accepting call requests. Yeah, that's great. And also, yeah, I can say the name of the website. It's not pronounceable, but you can put it in this description if you want. Yeah, I will do that, yeah. I guess with you working on it casually,
Starting point is 01:49:59 when would you expect, when would you hope to get it to a point where you'd be willing to accept our Quarquests from other people. Yeah, so right now, there's one part that I need to do alone first, because it would be a little bit of massive people if multiple people worked on that. But after I'm done with that, then people could make full requests. So if I work actively on that, then maybe one or two weeks, then I will be able to open a full request.
Starting point is 01:50:31 Okay. Well, as I said a couple of times already, I hope the project goes well. I wish you the best of luck. And yeah, hopefully it gets to a good state eventually. And I will definitely be there when it does. I'll definitely be checking it out and seeing sort of what can actually be done with this. Yes. Also, one thing I didn't mention is that right now,
Starting point is 01:51:03 I'm focused on AMD and Intel. So actually, I don't think Phoenix right now even runs on Nvidia. Just when he ran it nested on X-11, it expects a different. It works a little bit different because he's running with the proprietary NVIDIA driver on X-11. So yeah, at first I will only focus on AMD and Intel, so people know that. Okay, okay, that makes sense. Anything else you wanted to mention? There's probably going to be something you think of as soon as you stop recording.
Starting point is 01:51:43 Yeah, yeah. Yeah, right now there are not, I think I've said everything. Like, there are some small things, but they're not that important. No other links you want to direct people to? No, just my website if they're interested in looking at that. so yeah, that's it. Okay. It was a pleasure talking.
Starting point is 01:52:09 This was, even though it was a bit disconnected and rambly with whatever I was doing this time, hopefully people got some value out of it. I guess I'll do my outro and then we will sign off. Yeah, it's actually been two hours. I didn't expect that. it's a lot of time. Yeah, much thanks. Yeah, no, thank you for coming doing this.
Starting point is 01:52:38 Okay, so my main channel is Brodie Robertson. I do Linux videos there six-ish days a week. Sometimes I stream as well. Check that out and see what's going on. There'll probably be another video about Phoenix. I don't know, eventually. When it gets to a good state. I've got the gaming channel Brody on Games.
Starting point is 01:52:56 Right now I'm playing through DMC Devil May Cry for some reason. And I don't know, Silk Song. That's the other one I'm playing right now. Also, if you're watching the video version of this, you can find the audio version of basically every podcast platform. That is Tech Over T. And the video is on YouTube, Tech Over T.
Starting point is 01:53:18 I'll give you the final word. How do you want to sign us off? I'm not having anything to say really, but... No one ever does. Yeah, thanks for having me on. Absolutely pleasure. Yeah. Bye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.