APR
25
2015

Building on new pillars: Activities and KPeople in Plasma 5.3

With the release of Plasma 5.3 only days away, it's time to start talking about some of the new features users of Plasma Desktop will get their hands on in the new version.

Activities

Many Plasma Desktop users are already familiar with Activities as a toolbox to divide and organize their personal computing environment into shards: You can set up and name activities, distribute application windows across them, associate relevant files with them, switch between, start and stop them to your heart's content.

A previously less explored side to the Activities story is what the technology can offer while working inside any one of your activities - thus even if you don't bother with setting up more than one and just stick to the default activity created for you the first time you log into Plasma.

This changes with Plasma 5.3! New work to make it easier for applications to enter useful data into the activity's knowledge store, as well as run smart queries against it, enable some new and improved functionality in both the Application Menu and Task Manager widgets in this release.

In Application Menu, all of the Recent categories (one of which is new) are now powered by Activities. One immediate advantage of this is that their contents now change with the activity you're in, but as promised it also provides several other inherent benefits:

The three Recent categories in Application Menu 5.3
The three Recent categories in Application Menu 5.3

  • Recent Applications used to be only aware of applications launched through Application Menu itself. With launch info now retrieved from the Activities knowledge store and all other launchers (for example KRunner, but also just opening a document from Dolphin is a launch) free to enter data there, this submenu can now gather much more recent system activity in one place. Furthermore, new data sources can be added as time goes on without having to touch Application Menu itself.
     
  • Recent Documents benefits in a similar way. Over the older KRecentDocument framework used before, the Activities backend offers access to a longer, richer backlog of document use data. User control over the data is also enhanced - it's now possible to forget about individual documents from the context menu, instead of being forced into a complete wipe.
     
    But that's not all on the documents front! Activities enable both Application Menu and Task Manager to easily query for recent documents by the application they were opened in, leading to lists of recent docs in the context menus of various types of application launcher buttons:

    Per-application recent documents in Application Menu and Task Manager 5.3
    Per-application recent documents in Application Menu and Task Manager 5.3

     
  • Recent Contacts is a brand new addition to Application Menu 5.3 showing the people you've been in touch with recently, along with their realtime status information. The first part of this is handled through Activities; dealing in people data, however, is facilitated by a recent addition to KDE Frameworks 5: KPeople.
     

KPeople

Application Menu's Recent Contacts category in Plasma 5.3
Recent Contacts in Application Menu 5.3: Powered by Activities and KPeople

The KPeople framework allows applications (including the shell) to retrieve lists of people and information about them (status, contact metadata), as well as perform actions on them - e.g. initiate a chat, as used by Application Menu when you click on an entry in the Recent Contacts category.

The data backing this interface is provided by backend plugins. The first implementer of a fully-featured KPeople backend is of course our very own Telepathy instant messenging suite. In the future, other KDE communication apps will integrate with KPeople, making conversations had e.g. in KDE's IRC client Konversation pop up in Application Menu as well.

Closing thoughts

Both the enhanced Activities backend and KPeople are very fresh. While we work hard to line up everything behind them (implement additional data sources and optimize those implementations, for example), they are still exposed somewhat carefully in Plasma Desktop 5.3. The Recent Contacts category in Application Menu, for example, is disabled in this release by default, because a Telepathy release entering conversation data into the Activities knowledge store is still pending. It can be enabled from the widget's config dialog.

In future releases you can expect us to make more of these pillars as our confidence grows, with additional UI functionality built on them and more prominent placements of it in various areas of the shell. Lots of work ahead!

JAN
17
2015

Improving KDE's support for Korean (and other CJK languages)

Hunminjeongeum
The Hunminjeongeum (or 훈민정음). This 1446 document first introduced the modern Korean writing system to the Korean people and is now listed among the UNESCO Memory of the World. (Photo: Jeon Han, CC BY-SA 2.0)

In addition to my usual work on things like Plasma, I've been hacking away on bugs that pose barriers to the use of the Korean language and writing system in KDE/Qt systems lately (I took up studying Korean as a new hobby). As a bonus, many fixes also tend to help out users of other CJK (Chinese, Japanese, Korean) languages, or even generally of languages other than English.

Localization defects come in many shapes and forms and tend to be fun puzzles to solve, with lots of vertical cross-cutting through the stack. Here's a few examples from my plate in the past half year:

Kate: Input method / IME / ibus support doesn't seem to work well in KF5 version and the resulting Qt: ibus plugin badly maps text attributes to QTextCharFormat

On Linux systems using IBus for complex writing system input (which is most of our desktops), Qt 5 would generate QInputMethodEvents with badly-formed formatting directives, causing pre-edit text (such as incomplete Hangul blocks) to turn invisible in some applications. This fixes text entry in Korean and any other language doing complex in-line composition in KWrite/Kate, KDevelop and other applications built on KDE's KTextEditor framework (and likely others).

Amarok: Podcast save location containing Korean characters are garbled

A fun mess where a chain of QString::arg() calls against a template string would go awry by replacing a URL with percent-encoded Korean into the template, causing subsequent calls to trip up on unexpected % placeholders. Your Korean podcasts will now work nicely again in Amarok.

KCodecs and kdelibs: KCharsets does not support CP949 encoding

Code page 949 is a superset of the EUC-KR character encoding. Introduced by Microsoft, it supports additional Korean characters not supported by EUC-KR and remains in use on some Korean websites and IRC networks (unfortunately - please switch to UTF-8!). QTextCodec gained support for CP949 in the Qt 4.x series, but our KCharsets was never sync'ed up to those enhancements, hiding the codec from selection UIs throughout KDE's products. The effective impact of this is reduced somewhat by Qt 5's support for ICU, which is smart enough to handle CP949 transparently in EUC-KR mode, but the situation was still confusing for users nonetheless (and left broken when running non-ICU builds of Qt).

This last one is interesting because patches to address this were actually supplied by the community in 2010 already, but they sat around unloved until recently despite not being very complicated - developers are often reluctant to engage in tickets like this because they feel out of their depth, or simply struggle with the setup necessary to reproduce a problem. I worry this may cause a bad feedback cycle of bugs not being reported by users who don't have the time or energy to educate developers about the problem space.

If you're a user of Korean (or other CJK languages) and KDE, please do report them. I'll be keeping an eye out. If you're a developer and struggling with Korean or CJK support in your application, you should consider getting in touch, too.

OCT
27
2014

Beyond the color pickers

Andy, thanks so much for picking up the topic of color pickers (pun intended).

I'd like to discuss cases when accuracy is not as important at results. In this case there's a problem of abundance of choice. You don't have time to quickly and correctly pick one from the 16777216 colors. Plus alpha value? Come on! Whenever you're confronted with a photoshop/gimp-like color picker you either choose random color, or single color that's globally predefined in a palette. I also understand that very few 'casual' users maintain own palettes for consistency.

SEP
25
2014

2.8.6 → 2.9 → 3.0 → ...

That was my first Akademy after a while, I've been following previous two with kids on my lap. I think Brno turned out to be both a pretty destination and decent host for all KDErs.
A new Kexi contributor Wojtek Kosowicz came with me. You can read about him here and his recent story here. Recently in Kexi there is a trend of new contributors coming from Poland, and specifically from Warsaw. I've heard they're a bit regretting afterwards they didn't join the Akademy too but I trust that will improve next year :)

AUG
16
2014

Konqueror is looking for a maintainer

For quite some time now (OK, many years...) I haven't had time for Konqueror.
KDE Frameworks 5 and Qt 5 have kept me quite busy.

It's time to face the facts: Konqueror needs a new maintainer.

This is a good time to publish the thoughts we had many years ago about a possible new GUI for Konqueror.

JUL
17
2014

Konversation goes Frameworks 5

The Konversation team has started porting the application to Frameworks 5 earlier this month, getting things to build and run on top of KDE's next-generation libraries.

Here's all the info you should need to help out.

At this stage of porting there are still hundreds of low-hanging fruit (porting away from deprecated APIs, porting to slightly changed APIs, etc.) that don't require extensive knowledge of either the codebase or even the problem space to tackle, so if you were looking to get your feet wet on Frameworks 5 or KDE development in general, consider chipping in!

In fact, one of the major risks associated with any porting is lowering the quality of the application by reducing functionality or just plain breaking things, and of course we'd like to avoid both. So you can even help out by just running the port and logging the things that don't work on KDE's bug tracker (handy link is on the wiki) as tasks for others to jump on.

JUL
15
2014

The Birth of Plasma 5

I'll keep things brief, since I'm inbetween KDevelop windows right now: It's out today, and in my mind it took just about nine months to make it. Nine months, now that's a timescale with some cachet.

Back in September, we had this, as best as memory serves:

  • A rough initial ramp-up of the freshly-refactored low-level Plasma libraries on top of Qt 5 / Qt Quick 2.
  • And on top of a similarly rough-and-in-motion Frameworks 5.
  • A Plasma shell application that could render a basic wallpaper (with no config yet).
  • A few "test this library API" widgets.
  • Very broken and very empty panels.
  • And we were still running this inside the old Plasma Desktop 4, since we didn't have kwin yet, or an actual session.

Since then, we:

  • Rewrote about 80% of the core Plasma Desktop components from scratch, with significant improvements in some areas (e.g. the tray and notifications).
  • Ported the rest over from 4.x, often with significant cleanup and non-trivial changes.
  • Created hundreds of new visual assets from scratch.
  • Ported many, many support and system integration bits, such as network management, while continuing to make significant improvements to them.
  • Kept contributing fixes and features to Qt 5 in a major way.
  • Continued porting and modularizing KDE's libraries, and finally shipped them as Frameworks 5.0.
  • Not insignificantly, kept up supporting and releasing KDE 4 in parallel (with a major overhaul of the semantic desktop implementation in 4.13).

Kick-ass. It's been an amazingly productive time in the KDE community lately (not just in Plasma and Frameworks - KF5 porting of apps is going on as well!), and we'll be back in just three months with yet more.

Back to KDevelop.

JUN
3
2014

My part for Randa

I just give it back to KDE at least some in return of all i received in all last 10 years.
Please, if you in some ways had KDE improved your day by day , help to fund Randa meetings.

MAR
16
2014

Konsole new features 2.13

With the KDE SC 4.13 release soon, a few new features made it into Konsole.

FEB
17
2014

A Yakuake update: Frameworks 5, Wayland, More

Things have been rather quiet in Yakuake land for a while. 2014 is going to shake things up, though, so it's time for a brief look at what's been going on and where things are headed next.


Frameworks 5

Not long ago I pushed an initial port of Yakuake to Frameworks 5, the next generation of KDE's platform libraries, to Yakuake's git repository. The new code lives on a branch called frameworks for now.

Yakuake on Frameworks 5 is functional and free of the use of any deprecated APIs. The port is mostly complete, too, missing just a few more touches to the first run dialog and skin handling. Here's a screenshot:

Yakuake on Frameworks 5
Ah yup: Looks no different.


Wayland

One of the broader initatives the community is engaged in this year is enabling our workspaces and applications to use Wayland. Yakuake may just have a small role to play in that.

Historically, Yakuake's relationship with window managers has been plenty interesting. It's managed to crash several of the popular ones at one point or another; it's an unusual application with unusual behavior that exercises window manager code differently from more typical apps. More recently, it was perhaps the first non-workspace process to communicate and collaborate tightly with the compositor, asking KWin to perform the slide-in/out animations on its behalf if available.

The latter is a model for things to come. In Wayland, application windows know intentionally little about the environment they exist in, and instead have to petition and rely on the window manager for things like positioning with no recourse. Yakuake on X11 does this legwork by itself; on Wayland, the comm protocol to the window manager will have to be rich enough to allow for equivalent results.

Having Yakuake ported and ready will allow for it to serve as a useful testcase there.


General feature plans

Yakuake's theming system has been showing its age for a while, so I'm looking to implement a replacement for it. The new system will be based on QML, taking some inspiration from KWin's Aurorae decoration engine. The result should allow themes to support anti-aliased edges and shadows, along with much more flexible control over the placement of Yakuake's UI elements. Existing themes will continue to be supported however (by way of new-format theme that knows how to load and display the old ones -- the config UI will list both types transparently in the same list, though).

The other major feature that's been a long time coming is proper support for session restore. This has mostly been held back by missing functionality in the API of the Konsole component that provides Yakuake with terminal emulation. Unfortunately that situation remains unchanged for now, but I'm still hoping to eventually get around to some Konsole hacking to satisfy Yakuake's needs there.


Schedule thoughts

Frameworks 5 uptake in distributions has been very promising so far, with several distros (I'm aware of Fedora and Kubuntu, but there are no doubt others) packaging the preview releases soon after they were announced. It's still pre-release software, though, and APIs might still change until the stable release this summer. Until it's out, the repo's master branch will therefore continue to contain the KDE 4 codebase, and there will be another maintenance release cut from it sometime soon.

Development of the new theming system will be targeted at Qt 5 and Frameworks 5, however, due to significant API changes in the new Qt Quick and QML generation. As with the next KDE 4-based release there's currently no firm date for this - Aaron makes a good case for not rushing things - except to say it will be some time this year.

Pages