We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

X11 and Wayland: A tale of two implementations

00:00

Formal Metadata

Title
X11 and Wayland: A tale of two implementations
Subtitle
Implementing the hikari window manager/compositor
Title of Series
Number of Parts
490
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
In this talk I will outline my journey implementing my X11 window manager hikari and the corresponding Wayland compositor shortly after. hikari is a stacking window manager/compositor with some tiling capabilities. It is still more or less work in progress and currently targets FreeBSD only but will be ported to Linux and other operating systems supporting Wayland once it has reached some degree of stability and feature completeness. This talk covers: a brief explanation regarding differences between X and Wayland some of hikari's design goals and motivation choice of programming language an overview of libraries that were used tools for ensuring code quality and robustness obstacles resources that helped me to implement the whole thing
33
35
Thumbnail
23:38
52
Thumbnail
30:38
53
Thumbnail
16:18
65
71
Thumbnail
14:24
72
Thumbnail
18:02
75
Thumbnail
19:35
101
Thumbnail
12:59
106
123
Thumbnail
25:58
146
Thumbnail
47:36
157
Thumbnail
51:32
166
172
Thumbnail
22:49
182
Thumbnail
25:44
186
Thumbnail
40:18
190
195
225
Thumbnail
23:41
273
281
284
Thumbnail
09:08
285
289
Thumbnail
26:03
290
297
Thumbnail
19:29
328
Thumbnail
24:11
379
Thumbnail
20:10
385
Thumbnail
28:37
393
Thumbnail
09:10
430
438
2 (number)Data managementRight angleLink (knot theory)WindowFreewareObservational studyLecture/Conference
Local GroupStatisticsRootPlanningCase moddingHeegaard splittingGastropod shellGroup actionVertex (graph theory)DialectData managementOpen setVideoconferencingTesselationMaxima and minimaDifferent (Kate Ryan album)Web 2.0Keyboard shortcutWindowSpacetimeWordSheaf (mathematics)User interfaceComputer filePasswordFood energyBitConfiguration spaceTouchscreenCycle (graph theory)Projective planeOperator (mathematics)Point (geometry)Radical (chemistry)Formal languageView (database)Water vaporFreewareHacker (term)Focus (optics)PixelCommunications protocolTelecommunicationAlgorithmEscape characterMultiplication signTournament (medieval)Conservation lawArmRevision controlTowerGame theoryLine (geometry)System callDisk read-and-write headArithmetic meanRow (database)Product (business)QuicksortMetropolitan area networkWritingService (economics)Cartesian coordinate systemPhysical systemState of matterMereologyAddress spaceFluid staticsVideo gameMusical ensembleImplementationContext awareness1 (number)Computer animation
Communications protocolCartesian coordinate systemProduct (business)Musical ensembleComa BerenicesWeb pageEvent horizonLecture/Conference
Kernel (computing)WindowEnterprise architecturePhysical systemOrder (biology)Data managementControl flowEvent horizonProcess (computing)Client (computing)Figurate numberComputer configurationComputer programmingServer (computing)Radical (chemistry)NeuroinformatikContext awarenessTouchscreenTelecommunicationWindowProgram flowchart
Electronic visual displayRootSimultaneous localization and mappingTorusPhysical lawSlide ruleInternetworkingData managementFunctional (mathematics)Optical disc driveServer (computing)Maxima and minimaWindowSource codeJSON
Server (computing)Reading (process)Different (Kate Ryan album)Communications protocolServer (computing)Dependent and independent variablesData managementGamma functionDoubling the cubeBlock (periodic table)ImplementationGroup actionMultiplication signWindowOrder (biology)State of matterArmProduct (business)WritingUser interfaceMetropolitan area networkFerry CorstenRight angleBitComputer animation
WindowWindowFunctional (mathematics)Server (computing)Data managementSynchronizationOrder (biology)Open setMultiplication signGraph coloringQuicksortLine (geometry)Group actionUser interfaceCycle (graph theory)Radical (chemistry)BitCuboidSpring (hydrology)RoutingMetropolitan area networkComputer animation
WindowTouchscreenTouchscreenWindowClient (computing)MereologyFunctional (mathematics)Sound effectData managementUser interfacePower (physics)Event horizonQuicksortCodeLibrary (computing)Computer animation
Keyboard shortcutIRIS-TMaxima and minimaRootTouchscreenElectric currentSynchronizationClient (computing)WindowServer (computing)Data managementMetropolitan area networkEvent horizonObject-oriented programmingGroup actionDifferent (Kate Ryan album)Ultraviolet photoelectron spectroscopyComputer animation
Keyboard shortcutTouchscreenRootElectric currentSynchronizationEvent horizonData managementoutputKeyboard shortcutProcess (computing)Client (computing)WindowWhiteboardRight angleMultiplication signResultant2 (number)JSON
User interfaceSpacetimeEnterprise architectureClient (computing)Kernel (computing)ArmMetropolitan area networkRight angleTouchscreenKey (cryptography)Artistic renderingData managementMultiplication signFood energyWeightRow (database)Server (computing)Hacker (term)Process (computing)Data miningElectronic visual displaySound effectClient (computing)Extension (kinesiology)User interfaceDifferent (Kate Ryan album)WindowBuffer solutionModel theoryShared memorySurfaceContext awarenessNeuroinformatikSmoothingProduct (business)Functional (mathematics)Communications protocolGroup actionPoint (geometry)NamespaceoutputLibrary (computing)Event horizonSemiconductor memoryCartesian coordinate systemMobile WebMeasurementQuicksortHydraulic jumpLecture/ConferenceProgram flowchart
Client (computing)WindowRadical (chemistry)RootLibrary (computing)Buffer solutionAuthorizationDemo (music)Doubling the cubeMereologyTouchscreenBlogRevision controlRoutingOffice suiteVideo gameWordComputer animation
Server (computing)Stability theoryFitness functionMaxima and minimaLine (geometry)CodeElectronic visual displayCodeIntegrated development environmentCASE <Informatik>Slide ruleRootImplementationProcess (computing)Library (computing)Lie groupPoint (geometry)PlastikkartePhysical law
AeroelasticityProcess (computing)Function (mathematics)Client (computing)System programmingOpen sourceMaxima and minimaTouchscreenProduct (business)WindowFront and back endsRow (database)Variable (mathematics)Communications protocolProcess (computing)Integrated development environmentDependent and independent variablesClient (computing)BitVideoconferencingCodeRootImplementationTerm (mathematics)Value-added networkMoment (mathematics)Information securityoutputGoodness of fitRadical (chemistry)MereologyPhysical systemBuffer solutionLibrary (computing)Video gameEstimationStandard deviationGame controllerWebsiteRight angleCore dumpComputer animation
Projective planeLecture/Conference
Memory managementFreewareFormal languageChannel capacitySemiconductor memoryRootLeakLecture/Conference
FreewareMemory managementDoubling the cubeMoment (mathematics)LeakSemiconductor memoryAcoustic shadowRight angleEmailMessage passingMatrix (mathematics)
HexagonOpen setMilitary baseEmailHacker (term)Matrix (mathematics)Right angleSpacetimeOnline chatProjective planeBitProduct (business)Computer animation
Position operatorOpen setTouchscreenMenu (computing)Instance (computer science)CuboidWindowGreen's functionGame controllerInheritance (object-oriented programming)WordLecture/Conference
Point cloudOpen source
Transcript: English(auto-generated)
30 seconds extra nice. So hi everyone. I'm right you I'm going to talk about X11 and Wayland and unlike the link to this talk. It's not about porting Wayland It's also not about this window manager slash compositor. It's basically about how I got there and
All the little hurdles that you have to take when you are doing this on on on FreeBSD We heard this from the year for our net BSD now same thing for for FreeBSD, so yeah, um This is basically just the hack space that I'm at so don't care about the water So I basically give the stock at 36
C3 before now I have 10 more minutes, and I don't have rushed that much which is good So first of all what was my project so the project is called Hikari Which is a window manager and a Wayland compositor? So I thought why not just like twice the time for a project and re-implement the thing using two different protocols
So yeah that was fun, so I roughly spent six months in every Technology so I can kind of like I think I can form an informed opinion about this So maybe this is useful to you so first of all why did I do that? So why do you write another window manager another compositor?
planning out there So yeah, basically I wanted to write something that's Sort of like a stacking tiling window manager approach anyone know CWM from the open BSD folks Yeah, the open BSD everyone so that's that is something that I was using on free BSD before And I thought this was a pretty nice concept, and I wanted to have something a little bit more
I thought this idea of groups was very intriguing because CWM has groups one to nine and I Basically just started using them as workspaces, which is not really the idea of CWM I think but I thought this group concept was pretty intriguing so like having
Arbitrary groups was probably this was something that I wanted to have and I'm going to show you what I mean by that so this is This let's start a terminal so this is Basically just a simple terminal. This is my aesthetics like one pixel border. I'm happy with that every pixel means something Which I think is a nice thing so this is my white border. I know I have contacts
Focus so This concept of groups. I have two terminal nodes now, and they reside in the same group It's the root shell. Oh, it's the shell group so when I Press mod now I get my title bars And it shows me all the windows that belong inside of that group so you can see okay?
This is my fish. We're on sheets too. I use the word sheet for workspaces Kind of different semantics, but anyway, I won't go into that here, and it's in the shell group So I wanted to be able to like arbitrary group windows together as I have a communication
web video audio shells and also Maybe something like root shells, so this is a root shell not going to type in my password here You can see this is a different group And what I can do now is I can cycle just between the most important views of the group so to me that was something that I really wanted to have is kind of useful and
as you can see this is like the Usual floating thing which everyone thinks is totally inefficient, but I don't think it isn't it isn't but sometimes I want to arrange my views sometimes. I want to have telling and So this is a very basic tiling algorithm that I used and was kind of inspired by what helps Luft
VM or herps Luft VM of you ever want to pronounce it does where it can basically Split up the screen into different sections and different frames and use different tiling algorithms like grit vertical horizontal full screen and stuff like that and you can configure that in the configuration file and Kind of likes look like it kind of looks like JSON. I'm using the UCL configuration language which is something that the FreeBSD folks are
Using as well internally so far. Why not use that as well, so yeah And as you can see I Only have my title bars when I press mod Which is it's kind of nice because I think title bars really take about a lot of screen escape and some sometimes
I want to I want to see what the title of the window that I'm currently at is so that that can be kind of useful Yeah And I want to have a very keyboard driven Workflow where I can just jump to different windows just using like shortcuts and speed dial thingies kind of useful. Yeah
Yeah, and I also want to have minimal dependencies. I know this is something different for everyone I just depend on a couple of things like Cairo which Kind of like spoils it for some of the people from from open BSD that you can't pull that into base. Sorry Yeah, I just need to have something to draw and that was the first thing I thought and I wanted to be
Kind of energy efficient, so I was in CWM back then and that's a very minimal window manager and When I switched to Weyland I suddenly had one hour more Of battery life like okay. This is interesting. What's going on here, so I wanted to investigate more
Yeah, it's obvious last hug at free BSD. So yeah at one point. I will try to support other Operating systems, but I don't have that many computers and don't want to go into virtualizing everything in but I will go It will get there first things first
Yeah, and I have two implementations because yeah spent twice the time on a project why not So yeah, what's what's the difference? What what was? What was the different thing that I felt the different problems that I encountered there is an X there I don't know if you can see it in the back, but yeah, that's X or
Versus Weyland basically those two are just protocols We started think a lot of we always talk about are you running X or whatever and X is basically just a protocol that we speak and Then an application speaks that draw me like that draw me like one of your French windows. I don't know And also Weyland is also those are just protocols like TCP, so how do we manage
Events how do we want to look like whatever and this is what these two things do? So let's look at X first, so I stole these from the Weyland page So this is this is like the situation you have with Weyland this step with with X this step is sort of optional and
What happens if first you press a button? Generate an event you send it to the X server the X server figures out What client it sends this event to like the terminal or? Your lock screen or your window manager your window manager basically is a client to the X server
It's like any other program, so it sends it there then it this client Replies what it ever like I want to look different now, or I did something and Communicates this back to the X server and when you have a separate process like Compton it basically sends that
The all the stuff over to the compositor the compositor does something overwrites everything that the X server does and yeah So there's a lot going on here And you can see all these different processes a lot of context switching a lot of work that the computer has to do just to Talk to just basic when you're pressing a button like hell breaks loose
Yeah, and I said before your ex your your window managers also just a client and this becomes interesting in the future spoiler So yeah What does a window manager look like so this is the most minimal window manager I could find on the internet It's called tiny WM by Nick Welch
And it basically fits on a slide. I don't expect you to read that you shouldn't but This is I just wanted to show you how much work it takes to really get something working And this is what I found it was kind of impressive because after a week. I had a working window manager That was like oh wow this is this kind of cool because in the X server get all this functionality
Everything is ready for the taking everything is already there, so yeah, why not just use it, so I thought well It's kind of neat Well we met maybe maybe maybe this X stuff isn't so bad after all And Now that we know our window manager looks like we want to figure out how to to speak this
Protocol that I was talking about how do we speak X and there are two ways to speak to the X server? The first one is like the traditional way. It's called excellent, and it's very synchronous so You talk to the X server
Then you wait Then a reply comes then you do something and as you can see you You write the request you wait you read and this this this blocks a lot, and you can see that In some of the window managers that are basically using Xlet that it's not as snappy as you would like it to be because why would you just write?
Repress them and wait for the answer. Maybe you don't need that immediately Maybe you want to write a couple of requests and then later consume the responses And this is basically what XCB does so XCB is the XC binding which is sitting underneath the X slip and We can talk to that directly and now we can just write all these different different requests
And then we get the responses, and this is pretty this is really making a difference so with my first implementation of Ikari I was comparing this against C double gamma all the time that felt way snappier that was like because
All the stuff that I saw in CWM maybe they are using X to be somewhere down down the stack But I don't know they are using excellent, and you can really sometimes see when you're switching between groups It takes some time until everything gets redrawn, and it's kind of annoying So um
Let's talk a little bit about how the X over draw things because obviously when you draw windows you need an order in which you want to draw them so we usually draw from top to bottom and Most of the time this is also your stacking order in which you want to cycle through the windows I want to just go up and down the stack if you're using a stacking window manager and
Yeah, so this is the first place where I got a little bit. Okay. What's going on here because When you have this I showed you this group thing that I had I can group Kind of differently and want to cycle between groups and now I have some sort of ordering
inside of my window manager that the X server knows nothing about and You kind of like when you look at other window managers You see a lot of them are reimplementing this functionality where you how do you order your windows? Basically everyone's doing that you're reimplemented So the X server knows has an order in which it right draws the windows and you on the window manager side
Have the order in which you want to cycle them or stack them or whatever so you are basically having this thing in two places Which is kind of annoying? Because you have to keep them in sync and things things can go pretty bad another very
fun thing that I just started another terminal and You see these CDs borders there On these orange borders now drawn over the other window and X you're doing that in a very very ugly way because basically every
Line there, and I didn't make this up other window managers are doing this as well. This is a window This is a window. This is a window and this is a window and you just give it a background color and this is so Open boxes doing that I was doing that as well And when you have a stacking window manager you always have to keep those on top which is fun
It isn't Can be pretty frustrating So yeah, that was the first thing. I was like why do I have to do that annoying? and another thing that will you will see pretty quickly when you're not running things like Compton is
Screen artifacts so imagine you have this window too, and I want to raise it so we do that we Probably need to redraw this part of the window and what X does is like it sends an expose event to that window to that client Just like hey, you've been exposed. Please draw yourself. Show me how you look like and
if you're running on power management or something you can watch the window getting redrawn and We sort of learn to accept that and it's kind of funny when you draw a window over other windows you get this nice little Windows 95 ask effect It's beautiful modern art
Yeah, this this was real. I mean gets a lot better when you're doing compositing and things like that, but Well when you do compositing your clients still have to have to implement that functionality as your libraries at least have to do that Because you cannot depend on the fact that her compositor is always present so yay
useless code lying around there Yeah, so things are getting like pretty weird So you fail handling special events when you don't actually do need them. It's yeah, it's weird So go back to the mentally go back to the thing where I told you that we had that every client is
Every every window manager is always also just a client that means that the X server is Basically handling all the events and stuff like that so your window manager is just a client so it has to ask for events so um
When I do something like this and I want to put that in a different group oops So now this one has input and I can do typey typey and all the stuff now my window manager or compositor it just wraps the events and you type in there and all the Events get sent to my my compositor instead of client so when I'm in in X. I have to fight for the right
To process input events, and this is how awesome does it awesome basically just tries a thousand times, please? Give me that keyboard. I am the window manager. I am in charge. Please give it to me and waits
eyes again and for about a second your I mean the awesome people they know what they're doing, but yeah, this is fun. I had to implement this myself and It felt wrong Why exactly I know why it felt wrong, but yeah, it's like you are in the window manager should be in charge
But now you're just please give me resources Because I really need those Yeah fun stuff So Yeah, so this was my my journey into the world of X as can as can feel I have some issues
With there, but it was very easy to get something up and running like having a working window manager that you could White use in your day job after week. It's like yay feel Pro hacker no It works nice But yeah roughly you have interfaces also have evolved and you have tough screens we have things that can rotate for some reason and
Also toolkits have evolved you have things like off-screen rendering and buffers that get flipped around so things look smooth And you also have those in in actually also have those nice extensions Product extensions that you or usually stumble in when you're trying to start Firefox
Which Nia also mentioned his interest doing interesting things for the computer Yeah, that's that's also fun when you start a client that's using a protocol that you never heard of before and things started look weird and Windows jump around and resize themselves for weird reasons. Yeah But the main problem that I'm having is X is a global namespace
so Every client at every point in time can just turn into a window key logger or screen recorder and just send that over the wire Because like in every window even knows where it is on the screen why I Mean, this is weird And you're you're duplicating functionality and screen artifacts and all these things that we've kind of learned to accept. But yeah
So what's this other thing Wayland Actually started with them with looking into that when people started bugging me would have weight on sport like nah Just I'm going to use things that work
like X Yeah past me. I Don't know what was wrong with me back then Yeah and I also saw nice little screen tearing effects when a friend of mine was using my compala my window manager and started strolling and In Firefox and it wasn't fun. It looked like
I'm not going to say that it looked not good But yeah, this is the situation with with Wayland and you can see it's a lot more cleaned up because now we have the X server like the display server the Window manager and the compositor is all wrote in to run process So you're not jumping around a lot anymore and that also really makes a difference
context which is especially because Intel has done such amazingly great work with Things that have become quite expensive Yes, and this really really helps and now What happens now is your client basically just gets a
Surface and it just draws stuff in there and tells the compositor. Please use that. So we're automatically using a shared memory model Which is nice because now we can have things like the client can have a like stuff like buffering and so smooth transitions And stuff like that Most libraries do that. You don't have to care about this. This is this is great. You can get this for free
and yeah now said that you have stuff like screen lockers like I said before screen locker is a really weird process because you start an Arbitrary process and now it gets all the input events. Okay, I
Cannot see how you can exploit that Well, yeah Anyway, but now the compositor has a lot more stuff to do and actually I'm doing screen locking in my compositor Which is also nice you kind of can turn up the screen and stuff like that and save energy which is also neat these days
but yeah, this is this how it looks like with Wayland and Yeah, every frame is perfect This is everything when it evolves around the idea that frames frames should be like perfect You don't have screen tearing you don't have things when you're scrolling things are starting to look weird or
Expose a window and then you see just half the window and watch it get itself redrawn, which is super annoying But as you wanted to show a demo where I demo all this damage stuff But basically my compositor only redraws the things that the client tells it to not get not currently running
Not that it's not the debug version. So I can't show you but it's actually kind of nice when you just Start this and you type into a terminal and the only thing that actually gets redrawn is like the part where you're typing This is pretty neat. You're not just redrawing everything So but since we're using this this double buffering stuff
We we really just the client says okay draw this and then we just flip buffers and stuff like that But you have to take care that this Works correctly because you can have very interesting artifacts when you're not telling This you should redraw this part of the screen
you have to take care of that and compositor, but thankfully There you can read this blog post It's by one of the authors of the WL roots library how to handle how this all of this works But basically the library that I'm using is taking care of that. So what library have I been using? So I've Used the WL roots library. Yep. That's clean on ten minutes left. So I'm using the WL
WL roots library, which is 50,000 lines of C code that I was had to write myself and I didn't want to do that So thankfully someone else did It's the foundation for sway which is like I three four for our Wayland and
Probably on one of the most popular Just standalone compositors. That's not embedded into a desktop environment and and it reached 1.0 0.1 in in October that was after I started working on the X thing. So yeah, I
Came right came came. I came earlier to the party but not before it was it has its first stable release And it's now the common ground for a lot of compositors. So Sway is using that cage. It's just a little kiosky thing which is also an interesting implementation that you can look at it's probably one of the most minimal things and
There's tiny WL which is shipped with WL roots, which is The really smallest use case that you can have and it's just like a thousand line of code Well, the other one fit on a slide. This is a thousand lines of codes It sounds like much but remember this is the display server the compositor Every it's everything in one process. So I think a thousand line of lines of code is is actually kind of nice
Yeah, and some things that when you're starting to run one Rayland Most of these libraries that we most of all use them like GTK, QT, Clutter, and NSDL All of them already have Wayland backends
So you don't have to care about this. Just start a process and it just works. So I'm using Sakura which is a very minimal GTK terminal and I didn't have to tell it anything It just starts and it's already using Wayland because it sees oh, there's a Wayland process. I can just use this
backend now and What you see right now is Firefox natively running Wayland. My compositor has no currently ex-Wayland support is a bit broken for me because I'm not maintaining it anymore because I'm just using Native Wayland clients at the moment probably need to fix that in the future. But um, yeah, you can pretty quickly
Replace everything with with Wayland native stuff and you don't have to care about X anymore Which is kind of nice and you also have clipboard stuff that makes my neo van happy video Firefox if you're using Thunderbird, you just have to set this environment variable and Everything starts to work which is pretty neat. You don't see a lot of weird stuff happening
So, yeah, um It's it's hot. So this was what what this felt like her But it was harder to get something up and running It took me like three or four months to really feel confident enough to use it at daily work
Which was yeah Way more work than a week, of course Well, and the the final product that I'm having right now, even though it's more powerful It's roughly the same amount of code that you have there Which I think is also kind of neat a few processes aren't involved
like I said The nice thing about this is that you are really really Saving battery life there and you have to you ice isolation, which I think is really awesome Every client just thinks it's the only thing on the planet. So one client cannot look into the buffers of another client, which
Actually is very interesting security Issue there that this can happen that everything can become a screen recorder There are all protocols that you can implement to implement something like a screen recorder or implement something like screen locking this exists But I don't know how standard it is because it's I think it's part of WL roots and it's not standard
Yeah, it's all WL root stuff. Yeah Yeah, you have direct control over over your stuff It's not like oh, I have to fight for input resource and stuff like that control over frames. Don't know flickering Sometimes client-side decorations get a little bit in the way because this is what a lot of clients are doing there
Have their own borders and you have to take care of that as well. It's a little bit weird Yeah, but if more more responsibility in the compositor things like screen locking things like recording Yeah, but Generally, I think it's a really really a great opportunity for us as BSDs to catch up with other operating
Systems in terms of how things look like and we can really seize that So yeah, I was using C to implement this and So one side of the room is basically going yay the others
And for good reason I can I can sympathize with that Because yeah, why would I do that? Why why you know rust this was everyone is asking me and There was this way cooler prayer project. They sadly sadly stopped working on this, but they started with rust then they rewrote everything in C and now yeah
Now they stop working so yeah It's really hard to wrap like Nia Nia said it before Those are C API's wrapping this in another language is why this is more work than I want to do
I want to don't want to work with this why? Extra work, and I don't want to rewrite w roots completely myself. I don't have the capacity to do that so yeah, I Coped out and said okay. I'm just going to write that with C and obviously everyone No wondering okay memory leaks stuff like that ugly things going to happen
Yeah, basically through everything at it that I could that it could handle so I'm using clang and all the sanitizing stuff so this helps me to to deal with things things like double free and use after free and This really helps a lot and I also have since I'm running on FreeBSD also have D trace
I can track all of my memory allocations and can see one there when again freed This is very useful, so I I kind of like think I don't have a memory leak at the moment I Think she's always there to surprise me But yeah, I'm trying to take care of this
So yeah, that's pretty much it if you want to talk to me I'm on mastodon kale social right you or matrix or you can send me an email and I have this little Chat I don't know if you can see that it's a cari at Space which is also a matrix chat, and you can also come to our hex base and talk to me there, but yeah
It's in benefit Germany So if you want to come there Hack on stuff hex bases are just hex bases are just basically hacker communities People hacking on stuff and this one of the projects there even though. I'm currently only maintainer, so yeah
I'm open for questions now Yes, you said in the beginning that you think makes no sense for a window to know its position on the screen
As a user like I see for instance. I think a win has this issue where? for the Wayland Parts they're not able to show these menu from the title We don't title Like the main menu and on the x11 it works. You just click and it shows exactly on the position you clicked
Inside the the window, but on Wayland. They are not able and I think they said It's not possible because the the window doesn't know Not in position. I don't entirely know what you mean, but I can Yeah
Okay Yeah So I'm not entirely sure what you're asking But maybe should to talk this offline because maybe you can show me maybe you can take one more question, but Yeah, one more yes
Yes, I did the same thing that open look because then I would have even more stuff to care about but I was Reparenting is not it. I think it's not really helping me if I have obscured the window by something else because that yeah
We'll just put that into another window and then all this reparenting stuff would get replaced Maybe you can do that reparenting. I have no idea how to do that, but all the other things Yeah, exactly I just like do weird stuff, but
What what I would I to to for these borders I basically did what open look open box did and looked reasonable to me and but yeah This so yeah, thanks. Thank you
No, thank you