Skip to content
October 5, 2012 / dantti

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 :P

Enjoy!

About these ads

33 Comments

Leave a Comment
  1. Blackpaw / Oct 5 2012 18:53

    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?

    • dantti / Oct 5 2012 19:36

      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?”
      Best

      • Blackpaw / Oct 5 2012 20:41

        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.

      • dantti / Oct 5 2012 20:48

        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 :P

      • Blackpaw / Oct 5 2012 20:50

        Will do :)

        Could you point me to the repo?

      • dantti / Oct 6 2012 00:57

        sure, git clone git://anongit.kde.org/apper

      • Blackpaw / Oct 6 2012 01:08

        ta

  2. Valentino Crosato Junior / Oct 5 2012 20:02

    Away from linux for like 5 years, and used to OSX, I’m wondering WTF is a plasmoid? I’ll google it :)

    • dantti / Oct 5 2012 20:04

      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. :P

  3. anonymity is great / Oct 8 2012 08:15

    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.

    • dantti / Oct 8 2012 12:45

      indeed tho that would require some designers doing the animation..

  4. bonmanche / Oct 8 2012 10:00

    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?”

    • dantti / Oct 8 2012 13:09

      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.
      best

      • bonmanche / Oct 9 2012 05:41

        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!

      • dantti / Oct 9 2012 09:20

        How do you mean by clicking somewhere to customize updates?

      • bonmanche / Oct 9 2012 09:40

        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

  5. Beojan Stanislaus / Oct 10 2012 10:19

    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

    • dantti / Oct 10 2012 11:44

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

  6. Beojan Stanislaus / Oct 11 2012 12:34

    I do use packagekit git

    • dantti / Oct 11 2012 12:56

      so, pull both now and it should work..

  7. Beojan Stanislaus / Oct 11 2012 14:11

    nope:
    PackageModel.cpp has error “error: ‘package’ was not declared in this scope”

    • dantti / Oct 11 2012 14:13

      can you paste the whole output so I can know the line number? use pastekde.org

  8. Beojan Stanislaus / Oct 12 2012 07:03

    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

    • dantti / Oct 12 2012 08:39

      Fixed thanks, pull again :P

  9. Beojan Stanislaus / Oct 12 2012 10:44

    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

    • dantti / Oct 12 2012 11:01

      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..

      • Beojan Stanislaus / Oct 12 2012 11:08

        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.

      • dantti / Oct 12 2012 11:52

        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…

  10. Beojan Stanislaus / Oct 12 2012 11:54

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

    • Beojan Stanislaus / Oct 13 2012 09:20

      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.

  11. Stan aka 'Xeno' / Dec 20 2012 20:38

    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 ;) )

    • dantti / Dec 29 2012 17:05

      I think we talked already, but yes the issues were fixed…

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: