 Hello my dear kitty fans, I've missed you. Did you miss me? I'm sure you did. Anyway, this is a type of video that I haven't done in a while, a devlog. As you know, I do kitty development and now I'm here to report to you what's up. So of course, the big thing is floating dialogues. I've talked about them already and the very weird thing is that while they are already done and it has been really easy to implement them. I just told the dialogues to believe that the screen is a bit smaller than it actually is and they automatically avoid to touch it. Easy peasy. So Nico, you have some explaining to do. Why isn't there a merge request from you to kitty that pushes those changes? Well, funnily enough, the issue here is how to turn this feature on and off, because obviously we can't ship this feature enabled by default or with no way to turn it off. So there has to be some kind of UI to switch this on and off. Firstly, there was a thinking stage. How to enable this, like in the UI, the thinking stage eventually ended with this idea. Currently, the panel settings allow you allow you to switch between floating and not floating. I want to change that to three options to choose from. Nothing is floating, dialogues are floating, and both panel and dialogues are floating. Generally speaking, I wouldn't want to have more than three options and panel is floating, but dialogues aren't doesn't really make sense because it sadly leads to visual glitches. So that's the the issue. How do I implement it? Well, simply adding the button is really easy. I just copy paste the code for the previous buttons and that's it. Of course, I do have to, you know, make the buttons do something. Luckily, this is easy as well. I can add a property to the panel called dialogues floating or something and then switch that property between true and false, depending on what's selected on the settings. Easy enough. Of course, there's still a piece of code left, making sure that dialogues are able to read this setting and know whether they should be floating or not, but that must be easier, right, Nico? Right, Nico? Why are you crying inside? Things are never that easy, namely the dialogues of the applets know almost nothing of the panel itself, given that they could be used anywhere really, you know, you can put widgets on the desktop to or even in weirder places. So what do I do? Well, there is a standardized API that allows applets inside the panel or desktop or anything to know something about their containers or rather containers as they're called in in the KD code. So just use that then. Well, that's what I currently do for transparency. You will notice that applets will be transparent or opaque depending on whether the panel is transparent or opaque. How that works is that one of these API properties contains a flag that tells the applets whether they should be transparent or not. You might expect this flag to be called, I don't know, a plate opaque or something, but it isn't. It's actually called desktop is covered, and according to the documentation, it should tell we just whether there's a maximized window or not, but it doesn't do that. It tells applets whether they should be transparent or not, which is completely different. In fact, there is basically no relationship whatsoever between a maximized window and a transparent panel, except for maybe the fact that maximizing window is one of the ways which could make your panel opaque if you have adaptive transparency on. And that's it. Now, clearly, that flag has a pretty bad name, and we should change it. Here's the problem. We can't. It's a public API, and once you do a mistake in a public API, you cannot fix it. It's there forever, or at least it's there until the next major version, which could be years in the future. I mean, how long until Kiri Plasma 6, right? Decades, right? Surely it's not the very next release of Kiri Plasma, isn't it? Okay, so irony aside, this is our one chance to fix the name. I don't know if we'll do that. I asked other devs, but yeah, we can. The other thing I need to do once that is addressed is to add a new flag for the floating applets. I think things to the API makes it more complex and harder to maintain, so it always gets some rightfully skeptic eyes, but it shouldn't be that controversial. So as soon as that is done, which hopefully is soon, I'll make sure that the buttons in the panel's settings also use this floating applets flag in the containment API to tell the dialogues they should indeed be floating. Isn't it ironic how it's harder to implement the on-off button of a feature compared to implementing the feature itself? I guess that sometimes it happens. However, all of this is not that hard to implement, but there still was one thing to address before working on all of this, because see, I could add a button to the more settings section of the panel settings, but look at it. Seriously, look at these super tall dialogues that screams help me, please. Is it just me? It can't be just me. Is it screaming help me, right? So on my to-do list, I've had for a good year to finally revamp this poor thing. In fact, it's been on my to-do list for so long that somebody did it before me. That's what it means for me to be productive, procrastinate for long enough that somebody helps does the stuff for me. I'm talking about this merge request opened roughly one month ago. This is the proposed new, wait, wait, wait, wait. I have to do warnings. This is just a merge request. It did not land yet. The design will change. In fact, as we'll see, it already did. Anyway, now look at it. Looks pretty, doesn't it? In fact, I thought it looked phenomenal. And sadly, the merge request has been completely inactive for super long because nobody was reviewing it. So you can guess what it did. I tried it out and I did a code review. I noticed a couple of things that were missing, namely the labels, colors on dark mode and the plasmoid headings, but everything else was practically perfect. One complaint stuck in my mind though. It's still tall. Like it's, it's very tall. In fact, it requires some special code to become less tall on small screens. Otherwise it would overflow. So I thought, okay, okay. What if I tried, what if I tried to do a design that's less tall? So I made a merge request on top of their merge request, using their code just to tweak the design a little into this, which to me looks better. So happy I was able to give at least a little contribution to this menu. I sent my design to the Kiri Visual Design Chat and they did not like it. In fact, it sparked a super long discussion and after a lot of back and forth, we kind of decided to go with something more like this design. Again, none of this actually landed yet. This is just how things are right now whilst recording. And since now things look freaking beautiful, not thanks to me, but who cares, I can finally add my little button for floating dialogues. If everything goes well, which it won't, but if it does in a couple of days, all of this will be over and I'll have three plasma merge requests banding review, the floating panel one, the floating dialogues, and the redesign settings UI that's not actually me, but the other contributor. I'll then be able to focus on some different stuff entirely, like finally upstreaming some icons that I've talked a bit of time ago. But see, that's not everything I've done in the past week or so, not at all. You often hear me say that I'm supposed to be doing something about plasma on a ink devices, especially given that, you know, I was sent a pine note from pine 64 to do stuff with plasma on a ink devices. Thanks, spine. So I was super busy in the last months. So I just procrastinated that as well. And yet again, somebody did very cool stuff and the pine note improvements just not to plasma on GNOME and such. So I started feeling super guilty again, and I decided to resume my ink work. So I had to start a new plan from scratch. The first thing I did is I pinged one of our best kitty designers, Aaron. And I that's not how you pronounce it, Aaron. And I asked him to please update their mockups for a plasma ink shell. After a bit of feedback and such, this was the design he came up with. And well, it looks gorgeous. So I jumped to the implementation. I started thinking about what to start with. And I noticed that a very important part of this design is the ability to show you all of your app apps and PDFs. And I already knew that this was going to be very complex to implement. So I decided to start with that. Hear me out. This is the part where you make fun of me, I promise. The thing is listing files in your home folder is not something you can do in pure JavaScript nor QML, which is the backup language of QT. It requires writing C++ code, writing a CMake file, compiling it with the correct libraries and so on. And I'm so bad at that. So bad, so, so bad. In fact, I thought I would start with just writing a low word in C++ and compiling that. And I failed. This is actually the moment of last week where I had a complete breakdown and my impostor syndrome went through the roof. I wasn't able to compile Hello World. Like seriously. See, compiling is not my thing at all. I'm a Python QML interpreted guy. See, this is exactly the type of task that would take any developer, I don't know, 10 minutes. It took me a week. A week. Eventually, copy pasting a lot of code from Plasmanano and Darviana, two other KD projects. I was finally able to compile a little library called Plasma Inc. that exposes being able to search for EPUBs. Now, for some reason, potentially related to the fact that I copy pasted the code from an EPUB reader, the code only searches for EPUBs, not PDFs, but I'm not sure why, but hear me out. It's a proof of concept. What I can do now is start working on the stuff I actually know how to do, that is, the user interface. It's going to be a very weird user interface where it only shows you EPUBs, even for PDFs. Yes, but here's my dialogue plan. I am going to do the whole UI, actually implement everything that should be implemented. And then I'm going to show my project to other KD developers. I'm going to upload the code to GitLab, and then I will say, site, site! It doesn't actually work and start running straight in the opposite direction until I cannot see any KD developer around. I will wait, I don't know, a couple of weeks and then I'll get back, and I bet that somebody will have fixed my code by then. It's basically a given. Then I will say, I don't know, sorry, I just subscribed to a mathematics of relativity exam and now I'm lagging behind the homework of differential geometry and functional analysis, which by the way is completely true. If any of you is a functional analysis expert and feels like it's explaining to me why I should care about weak start topology, reflexivity of Banach spaces and such, feel free. I'm basically burning out over just how much I hate dual spaces of infinite dimensions. KD, I was talking about KD. Yes, you were. See, that's not everything I've done this week. I have worked on yet another thing, which I'm not sure I can talk about, but it's all stuff that will be eventually open sourced. Anyway, there is a company paying me, which is extraordinary, not even KD does that, to implement a KD Plasma shell on yet another different kind of device. That's not a laptop, not a tablet, not a smartphone, not a TV, not a smartwatch, and not what you're thinking about. I won't talk much about it since it's not KD's work, it's that company's work. However, the cool thing is that whilst doing that, I found a bank in KD Plasma itself, a pretty big one too. By the way, when you first start using KD Plasma desktop, there is a JavaScript script that runs and sets up your panel layout, your desktop type, your desktop widgets, and so on. Now, the Plasma desktop JavaScript script is pretty simple, it's only about your panel, because they will prepare you the default one anyway, and KD Plasma desktop doesn't have any default desktop widgets. However, if we did have widgets, then they wouldn't be correctly created at all. If, right now, you change the JavaScript to have a default clock as an example on the desktop, it won't actually be created at all. We don't notice that because we don't have any widgets anywhere, but the bug is there. It's only on X11, not Wayland, but still, it's a pretty big bug. So I spent a couple of days with the help of another core KD dev to try to track this down. And I did. Basically, the issue is that when the script is run for the first time, the data about your monitor doesn't exist yet, meaning that if the JavaScript tries to say add a clock to the desktop on all monitors, well, all monitors is going to be no monitor at all. So no clock will be added. So I did a pretty simple merge request that says before executing the JavaScript, please wait until monitors are loaded up and read. I was really happy with this merge request. I was really happy. I was really happy. I was. As soon as I created the merge request, a more expert developer than me replied that my approach was actually incorrect, and that there's a better way to do it. So now I have to do another merge request using a better approach, which will require actually understanding even more code that I usually don't even touch, which isn't a problem usually. But as you might have noticed by all the floating dialogue stuff, all the plus main stuff, and all the math rumblings and so on, I'm clearly overloaded right now. And I haven't even told you about the other big secret development project I'm working on. And you know, I have a YouTube channel to keep alive. In fact, I've written these 2,500 words of a script yesterday evening at 11 p.m. with a terrible headache, which is why it's particularly rumbling and stupid scripts. Sorry about that. But you get the point. I'm trying really hard, and I'm managing to do some cool stuff, which is a perfect, beautiful way to switch over to talking about all the people who allow me to actually do all of this KD development and video recording and scripting and ping and editor. And yeah, it's you. There's all the people on Patreon, Liberpei, Kofi and people backing me up. And there's the sponsor, Malibu. All of you are helping me out in this exciting, but sometimes extremely hard to keep up journey. Patrons do get some benefits too. It's like sort of podcast every morning and secret blog posts and such. But even if you're not a patron, thank you. Thanks everybody. And yeah, I think I'll go to sleep now.