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.

Comments

As far as themes go, I'm actually not an enormous fan of Yakuake having so much be custom about it - at least as long as it lacks a simple "Just blend in with the rest of my stuff" setting. I currently have mine themed to (roughly) style the tabs to mimic Konsole with tabs-below, and have something very similar to the Oxygen titlebar but on the bottom. However, because I had to piece this together myself, it doesn't _really_ fit in with the rest of the environment. It's jarring.

If at all possible, I'd really appreciate some capability to simply use the system theme - for tabs, for window decorations, etc.


By Alex Elsayed at Mon, 02/17/2014 - 04:12

Playing around with this is actually one of my research goals for the new theming system. Being Qt Quick 2-based themes will be able to instanciate Qt Quick Controls, which can call into QStyle. There are issues to work through, but there might end up being a bundled "Native Appearance" theme that does the job dynamically.

BTW: Since I stupidly forgot in the main blog, let me add a major shout-out to everyone who worked on porting Konsole to Frameworks 5. Yakuake without it is not very useful after all.


By Eike Hein at Mon, 02/17/2014 - 06:27

Sessions in Yakuake, nice ! Thanks for your work !


By Oliv at Mon, 02/17/2014 - 09:17

Awesome. Looking forward to this!

When reworking the UI, please make sure the result suited for High DPI screens. Current version of Yakuake looks like this: http://i.imgur.com/LrSEjSr.png

Note the tiny buttons and the tabs name's and window title not fitting into the labels.

Thanks!


By mzanetti at Mon, 02/17/2014 - 11:39

Will do! High-dpi support is a primary reason to move beyond the strictly pixmap-based old theme engine, especially now that there is Plasma Next's scaling behavior to sync up with. That said, I think nothing prevents the creation of "2x" themes for today's Yakuake - they just need to be manually selected. But of course it's nicer if themes just need to be made once.


By Eike Hein at Mon, 02/17/2014 - 14:00