# Kutu WM Firstly, why im interested in wm's citing i3 and awsome etc as my inspiration but the fact that using similar systems for a while now, and i wish to explore every part of the software everyone uses and doesnt even feel the existence of. ## X11 Windows uses Desktop Window Manager (DWM) Window management is part of the OS core Not replaceable by users, meaning i cannot make a custom one for windows systems so i need to look into a system i can build, and as linux based operating systems are very highly customizable we can look into our options there. The 2 options for linux on which window managers can be built are https://wayland.freedesktop.org/ and https://www.x.org/wiki/ And for comparing them here are some links -> https://linux-hardware.org/?view=os_display_server shows wayland overtaking x11, but only very recently https://blog.davidedmundson.co.uk/blog/metrics-in-kde-are-they-useful/ (shows 45% wayland and 55% x11) but a lot of older devices wouldnt switch as the difference isnt as noticeable, but for newer systems where wayland is default it was more like 80% wayland and 20% x11. gnome has cut off x11 support entirely while being the most used de. https://www.phoronix.com/review/x_wayland_situation This explains the problems of the x11 system https://www.linuxteck.com/x11-vs-wayland/ wayland improvements for security, frame memory usage and fixing the tearing And even though wayland seems to be a more modern version X11 is time tested and has a implementation that is easier I also use X11's ssh support for remotely working with my server a lot and wayland does not have a native solution to this So I'm gonna go with an X11 WM implementation as my artifact. ## then research findings for the X11 windowing system and how all teh communication etc. happens and compositors and WM's and ssh access etc. (basically the mental model behind X11's philosofy, with diagrams maybe?) and then about DE's and what DE's that work with X11 systems exist and how they exist to make utilizing a system easier and how people take it for granted with a little secion on trying to use a a system without any WM or DE to show how hard using such systems would be. And then focusing on WM's and how they are supposed to work with X11's event system and how much control they have over windows then continuing that with icccm and netwm standards and their history + why standards are getting messy over time or do not apply in all cases, for example they assume WM's will always have iconic, minimized and visible states etc. (with research findings of their histories) then explaining how a WM is not that helpful on its own so we build some basic components to make a usable system - the components being, a simple info bar (kinda like polybar in terms of usage) - a menu thing similar to rofi (with simple searching) but in this case reused for a clipboard manager, command runner and emoji/unicode selection thing - and finally a notification daemon that just shows the title and body of a notification int the corner of teh screen and a little highlight in the bar (i can easily do the whole system and i kinda have built similar stuff b4 but im more worried about teh writeup than actual project) --- This was kinda the preface section on X11 and WM's, now we do analysis of the project i chose itself. --- starting with what im deciding to build to actually go through this, with a section comparing xcb and the X11 library and then other x11 tools like xrandr etc. and here about other similar systems like i3, awsome, bspwm, the suckless one, and similar for minimalism, and also gnome and xcfe and why that would be out of scope for this but how these work with X11 with focus on the reparenting system that is standardised among these even though it is not stricly a rule needed. and here focus on teh exact rules laid out by icccm and netwm and how much would be needed to get working and how much would be needed for full compliance which might not even be possible in certain situations then a final concluding chart of what needs to be coded with diagrams of the system states and how they connect and teh data needed to be stored and ill be building a mostly tiling but with floating support and workspace divided system identical to i3. (basically a requirements list) then actual implementation of the core WM with development logs of what im actually doing with screenshots errors, fixes and rewrites id have to do because of rending issues etc. (huge section here) while using O notation to show what complexity every component has and maybe even one or 2 graphs of performance/space somparisions for teh sake of it Then a sort of indev testing report of what works what changes i had to make to the initial requiremnts due to complexities arising etc. --- and now for sections on each additional component --- first the bar, research on common bars used in minimalist systems and comparisions with bars in like windows, feature wise. (also ones like polybar etc.) and then a list of info i might need on the bar building on top of that section of what is commonly done then a diagram of the flow of states etc. of teh code and what objects and stuff i need to do, with requirements i plan on fulfilling with the bar then the actual implementation and logs etc. from that --- Then i talk about abstaction and code reusablity which i then exapnd on to talk about why i can reuse the same underlying system for command runner, clipboard and unicode selector, the fact that they all have a simple menu that can be sorted using searches and one can type a text at the top and hit enter to run it --- then a log of building this menu and then using it to build those 3 sub systems --- then teh notification daemon - i first focus on research for dbus and how it works and how do i get the notification data from the apps in the first place - then i focus on research behind existing notification systems like dunst etc. --- tying it up together --- here i can now show testing of the system and how it works and a little self evaluation on the implementation part of them first and performance reports and any bugs etc. i was unable to address. then i can show the integration of these components in a normal working situation while tying it up with the starting secion on trying to use a system without any WM, and showing how even with such a minimalistic setup we can work so much more efficiently than then and then comparing what i built out with other ones liek xfce i3 and all in terms of how it turned out. --- then a section on what i learnt from building this system and what i could do more and how it makes me appriciate windowing systems and parts of our computers that most people ignore while actively using