 Or if you cut a file, they're both different operations, but when you paste it it looks like it's the same thing. But here it looks indistinguishably in these two contexts and call the islave according to upon the islave. So this is what I was talking about earlier, that with the same care and copy job, you can have an application actually performing many different options. For example, if you are on the file islave in Dolphin, it will copy a file in the local file system using qcopy. In case you see the ftp islave, it will download the file from the local file system and you try to copy it. This file such islave is actually what I was working on last year. And in this case it will send the URL of the file to a kddemon to store persistently. And then you also the kdconnect islave which implements the copy operation between. So in kdconnect, you try to copy the file using sshfs on your android phone. So these are kioswaves, these are just local applications and they help your kd application achieving the input and output which is required. So these kioswaves actually implement the code for copying or deleting a file. And these are out of the process which means that they run a separate process when they are called. So if I try to copy a file using the file islave, it will then open a new file process for that. And then the process is killed as soon as the operation is over. So as such, the kioswaves do not last very long. They perform the task and then they are killed immediately. And send it to you, I guess. So they are actually quite easy to program. It doesn't require much work. You have a seamless header and program file obviously. And then you have a protocol JSON file. And the protocol file specifies what the kioswave can do. In terms of what entries it can list, whether it can list it directly at all. And the path of the islave with the path is for the K non-chip execution. I also have written a trial on how to write a kioswave, a basic one. And then you are able to do best scanning and point to having if anyone is interested. How do you come back really? So these are the three components which are the two components of the islave. The protocol file and the c++ header and cpp file. So with islaves, you have the slave-based... So kioswave actually provides you some classes for creating islaves. One is the slave-based class which helps the islave communicate with your kd application. And there are a lot of kd applications which we use in this. You can try using it in Dolphin, Crusader, or the older class. They all use islaves the same thing. So this slave-based class implements this communication between the application and the slave. So you won't have to worry about how that's happening at that level of abstraction. But most custom kd experience which you will use for local file operation, you can directly inherit from forwarding slave-based. So this class will actually implement all the local IO operations. So that's another thing which you won't have to worry about. But the nice thing is that you can re-implement these functions in case you want to extend the function and can make your own list. And this is what I did with my project as well. So I inherited from the forwarding slave-based class and then re-implemented the methods which I needed to perform a specific action. So there are some targets when developing an islave. One thing which must be remembered is that the islave is a very short-lived process. And this presents some challenges when you're developing one. For one thing, you cannot store any data in islave because if you do, the data will be lost as soon as the islave is terminated. And the islave is spawned again when you have to use it again. So the data will never actually be used in any particular. Then the next thing is that you cannot call the method in islave over divas. Again, because the islave is very short-lived. And by the time, it probably picks up the divas in my vehicle. The divas has to be in my vehicle. Yeah, I always remember to execute kdml file. So kdml file can pick up the islave and execute it on the file. And do not forget to end the islave operations with finish. So if you have a copy method in your islave, you have to terminate each function with the finish. So it's actually a different function. And this basically terminates the islave. Without writing finish, this is very simple. This country you're running without actually terminating it. So these are some cells you can see in here. But in the case that you don't want to store data in your islave, like for some persistent use, you might want to store that in kdml instead. And because that is a very long-lived process, it lasts for as long as your session is. So you can try storing data there and communicate with it over divas. So islave cannot be out over divas, but it can send messages over divas. So you can send it to the diva, the diva can store the data, and then the islave can call it in nth method. So this is the final thing in the picture. We have the UDS entry. So this transfer universe is directly serviced. And this is how any carrier application will actually see data. So this is just a screenshot from Dolphin of screenshots. So these are our UDS entries. And UDS entries give you... So UDS entries basically list all the properties of a file. It lists the date of the file, the date the file is created, the time it was accessed, and the permissions which it has. So all of this is obviously stored in the file system using whatever Linux file script was used. But for carrier applications, we need a different way of representing it. So we'll be representing that using UDS entry. And this object will store all the metadata of the file. So the thing with this is that UDS entries, they don't actually have to represent files. They can also represent things which are not files. So if you open Dolphin, for instance, and you type in settings colon slash, you can see the list of settings on your computer. And this is because UDS entries which don't actually need to represent files, they're just objects which can store data. So you can store... So you can make UDS entries directly. Even though it's not actually representing any directly and have items underlapped. And that's exactly what the settings are used to do. It takes our settings top category and makes it directly. And then as top category, it makes them sub-folders. So you can store these things in a UDS entry. And then you can specify which properties you want the ISO to represent. And I was then also responsible for trying the UDS entry in some cases. So we can go to that one. This is just a picture of how everything works together. So you have a KDE user, an anonymous user. So it executes an operation in a KDE application. In this case, they'll say it's working. And they'll say it's a KDE job. So first the KDE job gets called by working. And then there's ISO. This is the URL I want to delete from it. And then it will tell the ISO which folders need to be deleted and which files should be deleted. The ISO will show the eye operations to the disk. And then the ISO will update the directory contents because it has overwritten all the... because it has rewritten the contents of the folder to the disk. And then we'll prepare UDS entries to the app to display in the folder. So this is just a picture of how everything works together. And then there have been some recent developments in the KDE world. One thing is that my iris team, which was Google Summer 4 Project last year, had been released earlier this month. So I'm very happy about that. And this actually implements virtual folders for KDE applications, which means that you can... So it's basically a virtual folder where you can copy files to the folders and then store it as URL's. And then you can connect to these like all these URL's and do a five-minute operation for another directory. Then the next thing is that we have a KDE Live ISO which was in development for a few years. This has been released recently as well. And this lets you access the contents of your Google Drive folder in your KDE application. And it works quite well, it works in both and others. And then the next thing which is coming up is some modifications to the file ISO to allow it to perform superior operations. So as of now, if you go to DOSPIN and you try to edit the contents of a drive protected folder like slash OPT, it won't let you do that because you don't have the right permissions when you're running it in user mode. Because you run GUI applications mostly in user mode. And DOSPIN doesn't have the permission to edit like slash OPT. So there are some changes coming to the file ISO which will let you do that. So we try to make a change to slash OPT. The ISO will trigger a chaos window which you can use to enter a password. And then you can modify the contents of the drive protected locations. So this is currently working promise. It's a Google Summerboard project for this year. And I will go and hang out with Elvis who is at Indonesia today. So this is also coming up soon. So as a DECA, we studied the introduction of KIO and the basic importance of it. KIO jobs and how they relate to ISLIS, ISLIS themselves and how they use UDSM to participate in it. And then the big picture of how it works together. And then lastly, I will start with the recent developments in the KIO. So I can then conclude my presentation. Any questions or happy answers? So one thing that KIO does from the competition is when access a network application like SAMBA, wherever they do a local mount, using Q, and give access to applications of that. And we don't do like that. We use the SAMBA libraries and there's conditions for that. But at the same time, it's always a pain point that our mechanisms for accessing SAMBA are only for applications that actually use KIO and we don't switch to the outside world. So that's what we think of that. It makes sense to expand the scope of KIO to do something like that and sort of address that pain point mentioned. And no doubt it has a strong opinion on that. The opinions start hoping that there's a clash of titans. So that was a rather long question. So the question is, like, GIO, which is the known input output system, so that's kind of confederated to KIO in the sense that there are books for known parameters that are not list. So I believe it was with SAMBA, like, sort of, I don't know. They do a mount into some location and they don't use Q. Well, I actually don't know the implementation by enough of that group. Have a look at my comment. Well, basically it means that at that point in the application that the rule of the file access can adjust to that. Like, I think they just be regular else to this sort of asking on the scenes and then you can do that. And I believe it goes the other way. It's a mental process for a file handle to be advocating a question to you. But also mount it to use just the cost. Just because. So the idea is you mount it in Dolphin, not Dolphin, of a Dolphin, not this, and then you open it up. But, yes, you do it form into a G8 that it won't use its use, which sounds bizarre after you've gone to all of that happens. But who am I to question? I'm putting in an application that supports GIO if we use GIO. I'm putting in something that doesn't. I mean, we fall back. You know, I really give it a pass through that mount. I mean, we use that, right? And on paper, it sounds great. You get the best of it. If the application spots the type system or the official type system, you use that, otherwise you have to fall back. What does not make sense is you use simply the same AI, you do network orientation. That's really what this is about. I mean, if any of you have mounted an NFS share, you use it globally. Everything's fine. There's some steps on the plug. The server goes away. And then your whole system is that directly on that shelf is broken for five minutes. And you can't get it back here. It's stuck trying to do some network communication in a synchronous way. And it's not made for that, right? That's where the whole thing breaks apart is that the final idea has been made for local funds, which are always accessible. Not for something that's mounted and that would suddenly go away. So that's always been my reservation that is infused for at least months. But then again, maybe these days we've had better support for a little and brought a new factor in that, so I don't know. Based on the bottom of course, we've had some previous. It does not go better. We have a big problem that there's NFS mounts, not usually NFS mounts. And the file here, our file here, it's the next file to our CAD files. And because we've got NFS mounts, we think it's a file and we've got thousands of them. So we're not having that with people. Another thing I remember is that back then people used to bring in somebody who drove the bridge that was allowed to mount and I always say, okay, I always say, you're using cues. So maybe that's like, maybe it's what was redirected and that's the fallback thing. And you can take it in K-runs to some hotel with applications, understand. Like, yeah, of course, that's the policy part of those, but application can take a pass or it can be an L, right? So I don't think it was going to pass and it didn't end and that's the end point would fall back to the who's not off the KL side and ending them all over the path. We have QQ file, which is worth, right? We have one QQ file. QQ file. Well, it doesn't. You need to know exactly this. Yes. Which is, yeah, the fallback we have is we download the file for you, bring the application and then when you quit that application we should have a little bit of file contact with the server, right? Which works for actual rule of course. Assuming that the application will quit when it's done, which is not the case with all these unique applications type of thing where, you know, it doesn't reward like that, right? You launch an office, if it's already running then the process you just launched and everything may get needed and the components may not. Yeah. It's one of the overall solutions, you know. And that's what the problem is. The thing I always liked about Fused Mario is that it put the problem in someone else's hand. Mario was not touching Fused. Some people want to take it like that. It's a choice, right? Yeah. This is something you don't see when it just happens to me. Yeah. So it feels like the reason is right in that but... Then more questions. How much time do we have? You share this for 10 minutes. You got half a year of it. I just use it for tournaments like G-Sol project since there's an extra hand. But then I... Yes. Comfortable. Okay. So this is just Dolphin and it's the same, Dolphin as everyone has seen before. So, like, this is actually coming on slowly in a series of matches. So I've been making some modifications to Dolphin to support my attitude and they're not very big changes but they're basically quality of life that means. So, I'll show you how it works. So I open this here and this is my and the basic word for this is that you can copy files like this. Files or syntax or whatever. Copy here. And maybe then I can copy some other folders here and maybe then I can also copy some files inside another subject here. So, I've copied a lot of files here. But the thing is that all of these files are just stored in an even process. They're not actually written to this. So, this is just effectively a virtual folder where I can copy and which I'm wearing and copy files from different different subways. Get them all in one folder and I can collectively copy all these files to a single directory. So, some workflows in this which would be useful is like if you're going through a picture gallery of a lot of photos and you want to select a few which you want to edit or keep for later, like the good ones, you can just drag and drop all of them to the stash how you save and then later on you can copy and paste them to your dedicated folder. So, what a manager this is and it reduces the file IO. So, in case you're not using a very fast disk like an old HDD, this could actually speed up the process because your workflow is just copying files to run. So, it's just copying the URLs of files, not the actual files. And that could actually speed up the workflow in some cases. Yeah, that's it. What happens if you move the files with the same name to this stash? That will actually cause you... No, actually that would work. That would work fine because we are storing the URLs of the files, like the targets of the files instead of just the file names. Like if you would then use the stash and copy it to some other destination then it would not work, right? Probably. Then you get this little carrier there which is very fine. Yeah, of course but actually it's very late in the cycle. It's not in the first step. It's not in the second point when you integrate it all with it. So, it's not in the first step. No, you don't have to do that. That's a stash. Watch the files. Isn't that such a file name with the case? Like for example, if I copy a file with the stash and I rename it with it, it doesn't happen. Yes. So, how it works is that the daemon actually has a catered watch object in so that's actually the spring for any changes in the files. All right. So, if I do that, it will not... it will get deleted from the ISO. Yeah. So, that's just a small demo of my project as well. Thank you. I hope... Can I have one? No. This actually only works... There is only one daemon process which is running so you can only have one stash for it as such. Like, it is kind of a bit possible. Maybe we could work on that later. If people like it. Thank you.