Who said Apper couldn’t have a plasmoid?


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 😛


Who said Apper couldn’t have a plasmoid?

33 thoughts on “Who said Apper couldn’t have a plasmoid?

  1. Like it, looks slick. Plasma is really starting to take off as it matures and developers get a feel for it.

    Like you I’ve had limited use for plasma widgets as I never see my desktop. Two things are changing that though – better use of the system tray and a second monitor 🙂 I tend to use that for a konsole and information widgets.

    You wrote the tray widget using C++ rather than one of the script languages? how did you find it?

    1. dantti says:

      It’s hybrid plasmoid, UI in QML and data in C++, there is no way to do it only in QML with dataengines (I’ve tried it before it’s too slow when you have a large number of updates). Actually now I plan to do the same for the printer-manager plasmoid since then I can add back an option I had to remove due to large data…
      What did you mean by “how did you find it?”

      1. Interesting.

        I meant how did you find it mixing C++ and QML? I have a small C++ KDE4 app that could use QML as the UI but I’ve been finding the documentation for this spotty and light weight.

      2. dantti says:

        Well on #plasma irc terier (iirc) told me about the weather plasmoid, so the code is a fork of that. You can also fork my plasmoid now 😛

    1. dantti says:

      OSX speaking they are those applets you put on the dashboard, but on KDE we can put them on the panel or inside a container like the system tray. 😛

  2. anonymity is great says:

    Very nice! It would also be nice if the update icon in the systray would show the progress of the update similarly as the progress of downloads is shown.

  3. This is really cool, but as a user I usually do all the updates. Couldnt you give a summary or expandable tree view in the plasmoid, with optional detail somewhere? I don’t know if users would prefer it if they had a list with all the updates. Maybe “Security updates, System updates, feature updates?”

    1. dantti says:

      This plasmoid isn’t finished/functional yet, but I liked your idea of having a Summary view with an “Update” button, maybe with a list of the updates groups, dunno.
      About tree views IMO they are a bad way of navigating through a list of packages, if you want to know if package X is going to be updated you have to expand and inspect each grouped list which is very inefficient if there are several groups with lots of updates.

      1. bonmanche says:

        I agree with the tree view not being a good idea now that I think of it. Maybe they can click somewhere to customize updates? I’m just throwing some ideas out there, cant wait to see and try out the final product!

      2. bonmanche says:

        I mean 2 buttons, one button applies all the updates, a second “customize update” button fires up the full GUI where people can choose packages. Crude mock-up

        [Install Updates] 73 Mb <- button installs all updates

        [] System Updates (45 Mb)
        [] Application Updates (23 Mb)
        [x] Security Updates (5 Mb) <- checkboxes allow selecting/deselecting a group
        [Customize] <- button activates full GUI

  4. Beojan Stanislaus says:

    Attempting to Compile Apper from git gives errors along the lines of qt_metatype_id is not a member of QMetaTypeId. This appears to be because many of these classes aren’t declared as Qt Metatypes in libpackagekit-qt2

    1. dantti says:

      You need packagekit-qt2 from packagekit git repo, but currently I’m breaking both repos so packagekit-qt can be usable from QML.

  5. Beojan Stanislaus says:

    Its not that long:

    [42%] Building CXX object ApperKCM/CMakeFiles/kcm_apper.dir/FiltersMenu.cpp.o
    /root/apper/ApperKCM/FiltersMenu.cpp: In member function ‘bool FiltersMenu::filterApplications() const’:
    /root/apper/ApperKCM/FiltersMenu.cpp:321:20: error: cannot convert ‘QString’ to ‘bool’ in return
    /root/apper/ApperKCM/FiltersMenu.cpp:323:1: error: control reaches end of non-void function [-Werror=return-type]
    cc1plus: some warnings being treated as errors
    make[2]: *** [ApperKCM/CMakeFiles/kcm_apper.dir/FiltersMenu.cpp.o] Error 1
    make[1]: *** [ApperKCM/CMakeFiles/kcm_apper.dir/all] Error 2
    make: *** [all] Error 2

  6. Beojan Stanislaus says:

    Another issue is a significant rendering bug in apper. See image http://i.imgur.com/ekPh4.jpg

    The relevant part is the missing area at the bottom. The description only appears after clicking where it should be, though switching to another application then back also causes everything that should be there to appear.

    I am using the open source radeon driver with an ATI Mobility Radeon HD4200

    1. dantti says:

      It’s a theme issue you don’t have that with oxygen…
      can’t wait to have all in QML so this kind of issue won’t happen so easly I gues..

      1. Beojan Stanislaus says:

        It appears with MS Windows 9x, Phase and GTK+ (perhaps more). I think you are either doing something oxygen-specific or depending on an oxygen bug.

      2. dantti says:

        there is no such code, it’s a simple fade effect supported by Qt, but the themes don’t repaint the background as they should…

  7. Beojan Stanislaus says:

    The MS Windows 9x theme is technically unthemed, so anything caused by a theme bug shouldn’t show up under MS Windows 9x

    1. Beojan Stanislaus says:

      I’ve fixed it (sort of, it’s better than before) by adding a new slot that call ui->stackedWidget->repaint() and then hides and reshows ui->stackedWidget. This slot is connected to the animation finish signals. I’ve also reduced the animation times to 1ms, to reduce the time the buggy screen shows.

  8. Stan aka 'Xeno' says:

    I know Apper plasmoid that currently is in F18/redhat-kde.repo is not very up to date, but there’s one minor bug tha can be easili overlooked. Problem is inconsistent text color. It’s visible with dark themes like oxygen, where package names and update button text are white, but package/uptade details and update count summary remain black where should be white too (it’s a bit hard to read black text on black widget backgound 😉 )

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s