Down to the meat of things, I am currently taking part in the Summer of KDE (SoK), wherein I have my Handy Dandy Mentor, Aaron, whom I am required to bug oh so very much). The project I chose to work on was this nice idea over at KDE Brainstorm: http://is.gd/yghE
Since everybody loves images, here is one. This is just a mock up, from the expertise` of the idea creator.
I just loved the idea so much, and felt that I would really enjoy the moment when KDE could have this feature. Basically, when just about any transfer job is created, it would show this progress on the actual icon. So lets say you copy folder "/home/shaun/Abstract" to "/home/shaun/Pictures/Abstract" and when you navigate to "/home/shaun/Pictures/" you will see folder "Abstract" is now created, and will clearly see that there is a job being performed upon this directory--which is copying--so it would be green with progress stats on it. This would especially prevent accidents, where you suddenly realize that you just pulled a Shift+Delete on a folder that you were in the process of moving somewhere else (in the background) You thought it finished, or perhaps you just completely forgot about it, and there goes your data. I'm not saying I had this happen to me before *shifty eyes*.
Whether this should also display something for jobs that are currently reading a "source" file/folder (as opposed to just displaying what happens to the "destination" folder), I do not know. I was thinking along the lines of having it show job status for the following:
- "Download/Copy", shown on the destination file/folder.
- "Moving", which is just as before but this will also show some kind of move icon (if we have such a thing?), to say that something is being moved. The move status would allow you to inference that you shouldn't be trying to copy that folder.
- "Deleting", shown on the destination file/folder. This is where the image shown above would play a part.
I am in love with the thought of rearranging my file collections with this feature in place, it would greatly help to project an image of precisely what is happening to a folder and how long it will take. Without this, you are somewhat probing in the dark, especially when you have multiple files/folders. Naturally, this is applicable to transfers for both files and folders (since some files can get very big, think movie files).
This is quite a big task (from my perspective), but I have already begun ~2 weeks ago. What it essentially entails, is cleaning up KUIServer, to make it much easier for me to use and improve it. Instead of it being some kind of unused birds nest, it will now be depended on to relay information from all of the KIO jobs, to any "subscriber" of data (via DBus). This also means that the status of jobs will not be lost after a Plasma crash--yay!
This does however, entail 'kuiserver' basically running at start up now. Although, it will only start up when a DBus client wants to "talk" to it and when it does, it will start up in non-UI mode (since we won't need that). If no connections are made to 'kuiserver', which would be in the event that Plasma did not connect to it, it will know that the only way the status for jobs can get shown is if it does it itself. So, 'kuiserver' will relay all of the data on any jobs, to both Plasma's DataEngine, and my progress-in-icons-thing. I then have to make the Plasma DataEngine reflect these new changes. From there I will begin actually drawing the progress onto the icons.
The majority of this goal, is dealing with the back end of things...
Since the actual painting of the progress will be done in kdelibs, anything that would want to take advantage of it, would be able to turn it on with the flip of a switch.
Naturally all of this is subject to change and as such, I would like to have some opinions on it, so comments are warmly welcomed.
Updates will be posted here and for anyone concerned or wants to look at the code or what have you, I am working on it in the kde repo, at: "/branches/work/sok-progress-in-icons/runtime/kuiserver". Naturally, I will have to add more branch-nisms relative to my SoK folder
Kudos goes to TheBlackCat for his mock ups, which are very eye-catchy (at least to me).


Great idea. I'd like to add another use case besides Copy/Moving/Delete (or maybe it's rather a corner case?): Extracting (from archives). Copy/Moving/Delete usually don't cause problems for me, as I usually look if a progress window exist before doing something which may interfere. But with archive files I more than once opened one to start extracting but forget actually doing so, think I have done so already, delete the archive file, and extracting consequently fails. <_<
ReplyDeleteCopying is considered a base action of extraction (at least in my book), it's essentially the same thing, it unpacks the archive, and copies it into another path.
ReplyDeleteI should update the blog entry and make a note of that...
I think extracting and packaging is splitted in two distinct variants: the one is keeping the old data, the other is removing it.
ReplyDeleteHow often does one keep the tarball around if she extracted the files from it? I seldomly do. Also, not so often, I put some files in a container to store them away for archiving and remove the original ones.
So extracting is not just copying for me, but can also be like removing the container from some items. And vice versa for packaging.
Would be cool if you could integrate this into your modelling.
Can't wait to see this code in action :)
ReplyDeleteReally great idea! A good implementation will lead to a very useful feature :)
ReplyDeleteThanks for your work!
BeOS had file download progress in icons many years ago, it was really cute - they had a narrow progress bar under the icon. Ssorry, can’t find a link for you, but it should give you some hints.
ReplyDeletePretty aawesome!
ReplyDelete