print-manager updates in KDE 4.11

For those who doesn’t know print-manager is a project I started back in 2010 (yes it’s 3 years old now!), but only got included into KDE 4.10 (the current stable release). The reason for that is that since it was meant to replace system-config-printer-kde it needed to provide at least the most used features, and that was only possible as the logic to find a good PPD for a given printer was then exposed through DBus, so we could use that but not it’s GUI.

I’m very pleased to say that my expectation of receiving bug reports of missing features, surprised me by being just one of the few bugs it got (sadly it’s not the easiest to one to fix). The number of bugs was also quite low and it’s acceptance quite positive, which helped me managing fixing most of them then in a short time. Currently there are only 2 standing bugs, and none of them are crashes (all were fixed), one is a missing convenience feature and the other is half fixed but I failed to setup a similar environment to figure out what was happening, but this next version will include some debug info to try to figure that out.

What about new stuff?

So CUPS is not a new project that earns features everyday, actually we fear to have more features removed, that being said print-manager already covers most of it’s functionality. One CUPS feature I didn’t make use in 4.10 was the ability to reprint canceled/completed jobs, this feature also only works if the job is preserved which is something that can be disabled on the server. Of course we only enable the button if the job can do that: p-m-queue-reprint Notice the Reprint button, now there’s something even cooler than that, the last column “From Hostname” is also new, but the coolest part of it was that this was actually a feature request from a KDE 3 (kprint) bug, funny enough I fixed it on the exact same day were it completed 10 years 😀 (I accept cookies…) Next we have a bunch under the hood changed and fixes.

When I first presented the print-manager plasmoid it would have a feature to configure which jobs to show. Having “Active jobs”, “Completed jobs” and “All jobs” ended up becoming an issue, since if the completed job list had like 20 entries the plasmoid was taking several seconds to load, so since the “Active jobs” is always the smallest list I removed the other options to avoid bug reports. Latter Apper gained a plasmoid and I run into the same slowness very quickly, actually a list of 200 updates (which is not uncommon) was taking half a minute to load.

My previous investigations showed the Plasma DataEngines were too slow, in fact I believe it’s the mapping between the DataEngine and QML since plasmaengineexplorer is not _that_ slow. This was a no go for Apper, so I created a hybird C++/QML plasmoid, and quickly I noticed that this would also be the best thing for printer manager. It’s not only is blazing fast now, but also has the important benefit of not keeping four models implementations as the QWidgets dialogs already had them, so now I fix one model and both plasmoid/KCM/print-queue get it. p-m-plasmoid-configIf you have used the 4.10 version you will also notice an important improvement on the above, instead of a weird LineEdit to select which printers the plasmoid will display, now you have a nice checkable list.

Bonus points to Kai Uwe Broulik that added the second icon there (and did some more stuff) which is the full System Settings printers module so you don’t need to open system settings. And yes I’d like to have a different icon for the first option but I failed to find the option (if it even exists) to do that as Plasma uses the plasmoid icon for the first item. The internal library that talks to CUPS also got several improvements and fixes which made it Qt5 safe, due to QHash getting items stored randomly (yes Qt4 says we can’t rely on the order but we know we can :P). To be honest I don’t really know how well this worked with the mess it was… The plasmoid also got several improvements:

  • It’s fully usable from the keyboard now
  • The highlights/states work more reliable
It isn't empty anymore if no printer is configured
It isn’t empty anymore if no printer is configured

You get this if you filter some printers out and they get removed
It detects if CUPS has stopped and show a proper error message
It detects if CUPS has stopped and show a proper error message

And finally the plasmoid full of printers and a few jobs, with the new NIHSwitch, fully draggable and with I/O visual to avoid confusing, done my real world testing and so far nobody got confused:

print-manager plasmoid in KDE SC 4.11
print-manager plasmoid in KDE SC 4.11

Until KDE Frameworks 5 isn’t released (and probably also packaged), the development of print-manager will continue in the next SC 4.x releases, of course the list of TODOs is quite small and if you are willing to give a hand send me an email.

Enjoy.

print-manager updates in KDE 4.11

new Apper updater

Hi,

I’m very glad to be able to be making new posts about stuff I like, though my situation still not finished, we have sent some papers to lawyers at Argentina and since this year booking is too much expensive my wife will only be going there next year. The donations money helped a lot but almost half of it is already gone, we still need to pay the Germany lawyer and if you know BRL vs EUR it doesn’t play  nice 😛 Maybe next year I’ll set another pledgie, and I hope to be able to have payed most of bank debts till next year…

Back to the topic, I’ve already said I was planning a new updater, and now I want to share it with you. I’m so happy about it because it makes the updating use case much easier… come on! Just click the icon (maybe do a quick) and press update 😛 how easier could it be?

Apper 0.8.0 will probably be released next week, tomorrow I’ll try to do the last strings changes, and then I’ll give the translators a week to update the few missing strings, 0.8.1 hopefully will follow by January to fix the new introduced features that certainly broke something.

I’m not entirely happy yet with how it works but it works. I still have to show some KDialogs to review dependencies, agree with not trusted packages… hopefully in near future all of that will be inside the plasmoid.

The old tray icon will be gone with this and more changes (I’ll blog when I handle the release) to move away from the regular tray have been done too.

And really thank you very much for your support, thanks to everyone that cared about me I was able to be at my wife’s birthday 7th, my soon 8th and today mine on the coolest day of the year 12/12/12 😀

Enjoy the screen shots:

Getting Updates
Getting Updates
A rare up to date system
A rare up to date system
The list of updates
The list of updates
Downloading Updates
Downloading Updates

UPDATE – I forgot to put the screen shot when you click and expand an update, to see it’s changelog (still misses some info):

Updates Changelog
Updates Changelog
new Apper updater

Who said Apper couldn’t have a plasmoid?

Hi,

This will be a quick post, I’m about to travel to my parent’s house this weekend, it’s elections on Sunday, so I’ll go right to the point.

When I first started Apper (well it was KPackageKit), people were all “wow plasmoids are so cool”, and well they were indeed but 99.9% of my time I don’t even see my wallpaper, my desktop has nothing but the default wallpaper, so I thought “Why should I make a plasmoid for it?”, well it isn’t a fancy comic strip, or an cool CPU usage widget.. Who would want to go to the desktop just to search for a package?

It turns out that after I wrote a plasmoid for print-manager and realized it was really that easy to do, and also that for some releases now you can even put them on the systray I started thinking what else can I make? It was fun so I wanted more…

It turns out that I sort of hate systray, but for system (and only for that) stuff it’s quite handy to have smaller icons. Now that PackageKit 0.8.x has it’s API frozen and I have fixed all changes in packagekit-qt a new Apper release is needed. The new PackageKit is awesome, though most backends (including my aptcc) doesn’t support parallel transaction, adjusting to this new ability is a must for Apper, so I started hacking in it again, I want to replace the current UI with QML but there are distros waiting for my release so I will do this change slower.

Apper-sentinel has 3 systray icons, one for reboots, one for backend messages, and one for updates. It turn outs that I can get rid of the three of them. The reboots can be made a persistent notification, if the user doesn’t care it will just go away. The backend messages should already be simple notifications, and the updates icon can be a plasmoid! Yup a plasmoid!

Wouldn’t it be cool to see the updates icon on the tray click it and see the updates right away, push an “Update” button, and have it started? And if you don’t want it on the systray you can move to another place, it makes you free from systray!

It’s not finished, but already lists the updates:

A quite huge list of updates…

Yes, I do update my system 😛

Enjoy!

Who said Apper couldn’t have a plasmoid?