03 May 2016

feedPlanet KDE

Thursday: ownCloud at Open Tech Summit!

Coming Thursday I'll be talking and workshopping at the Open Tech Summit about getting your ownCloud up and running, either on a laptop, desktop or server or on a Pi(like) device like a Raspberry or Banana Pi. I will bring a few devices to play with, it will be fun!

If you'd like to join, there's a number of free tickets available. Go to this website to register and use the code WELOVEOWNCLOUD.

See you there!

03 May 2016 1:35pm GMT

International Drone Day in Campinas

On May 7 there will be the first International Drone Day in campinas, and I'm working with qgroundcontrol for a while, it's a very nice drone control station build entirely on C++/Qt/QML and it runs on everything you may think of (not bricks, however),and I'll be using it to showcase on the International Drone Day in campinas. There's a facebook event for those that may like to go, and live in São Paulo state.


It will be the first edition of the International Drone Day, a world wide event created by the producers of "That Drone Show" in partnership with the AMA (Academy of Model Aeronautics), if you like Drones, Qt, C++, Programming and flying things, Come. 🙂

03 May 2016 12:43pm GMT

Installing OpenSUSE on Thinkpad P50

KDE Project:

The Lenovo Thinkpad P50 is quite a nifty laptop. However installing Linux required some digging around, so I'm writing this up for others to stumble upon it when looking for answers to similar issues.

* It is very important to change the BIOS/UEFI setting from "Legacy and then UEFI" to "UEFI only". Otherwise, installing Linux from a USB key boots in Legacy mode, and after 2 hours of installation, the OpenSUSE installer finishes with the very imprecise "an error occured during boot loader installation". After reading http://www.rodsbooks.com/linux-uefi/ I changed the setting to UEFI only, re-did the installation, and voilà, the bootloader installs just fine. Compatibility is sometimes more trouble than not :-)

* Hardware consideration: since it uses a M.2 SSD (small form factor) and doesn't provide the necessary (Lenovo-specific?) cable to plug a 2.5" SSD, my initial idea of replacing the SSD with a bigger one failed. Should have bought another M.2 SSD instead.

* Grub2 in graphical mode was horribly slow (maybe due to high DPI, too many pixels to paint?). I changed /etc/default/grub to say GRUB_TERMINAL=console, and then ran `grub2-mkconfig -o /boot/grub2/grub.cfg` and `grub2-install`. Good old menu in text mode, much faster.

* The Wifi didn't work at all, because OpenSuSE Leap 42.1 includes kernel 4.1.12, but proper support for "Intel 8260" with subsystem 0130 (see lspci -vv) was only added in kernel 4.2 (see http://askubuntu.com/questions/693109/intel-wireless-8260-unclaimed-network for the one-liner change to the kernel sources, but I didn't feel like recompiling the kernel...). So I switched to OpenSuSE Tumbleweed which has kernel 4.5. Magic, the wifi works now.

* Remaining issue: when asking for an encrypted LVM group, the installer didn't create an unencrypted /boot partition; it still boots fine but I have to enter the crypto password twice (once for GRUB itself, and once for booting linux). I wonder why grub can't just pass along the now-unencrypted device or something, dunno how that works exactly. Makes me wonder if there isn't a way to give grub everything it needs in the small EFI FAT partition...

Now moving on to compiling my own Qt5, KF5, Plasma5 :-)

03 May 2016 11:38am GMT

KDE neon User Edition Testing Survey Results

We made a tech preview release of KDE neon User Edition 10 days ago and I made up a survey to get results for how people's experiences were. We got 59 responses, here's a summary:


Most people from Europe, a number from the US, the rest spread around the usual parts of the world.

How did you make the installable drive/disk?

First past the post is people who used a Virtual Machine, sensible enough for a testing release.

Next is ROSA which I discovered recently and seems to work on most OSes. Then people who use dd and risk wiping out their hard disk with a 1 letter typo. Surprisingly there are still people who write to a DVD to install, I've no idea why.

In the other category is:
rufus (Windows only)
usb-image-creator (Ubuntu only)
suse imagewriter (unmaintained)
gnome multiwriter (Linux only and why would you want to write multiple at once?)
using: sudo cp neon-useredition-20160426-1028-amd64.iso /dev/sdb + sync (err, does this even work?)

Problems which occurred during booting of the live system

no problems for most

several people reported the black bar in the isolinux/syslinux theme. these themes are spooky voodoo.

people commented on UEFI not being supported, UEFI is even more spooky voodoo and secureboot is evil voodoo.

"The GRUB splash is practically blank. Pressing the arrow keys opened a dropdown list for language selection. Then I pressed the Esc key to get to the GRUB splash. The "Install" option isn't any different from the "Try without installing" option."

"Select the language Spanish, and half the options were translated."

Problems which occurred running the live system

Lots of "none" here too. Mostly querying the lack of applications, that's a feature for now, we'll add apps soon.

"klipper in menu? Im-config in menu? Panel icons wrong size/blurry"

"Upon mouse click in kicker panel consistently resulted in black screen with no recovery. Possible issue with Plasma 6 and AMD GPUs."

"Baloo crashed immediately (notification in system tray), but did not seem to affect system function."

Problems which occurred running the installer

'The "Continue" button is available even after all the steps.'

"You do not ship with open-vm-tools-desktop, so my virtual desktop was smaller than the Ubiquity window"

"the installer was unable to install some packages: (although the provided list was blank), so i couldn't install the system"

"Does not recognize UEFI partitions/System. Only legacy boot possible."

"1. On the second page of the installer is a non replaced variable: "$(RELEASE)" 2. While installing there is no teaser how awesome kde is :-), just a blank page."

'Text "$(RELASE)" is displayed in german version of "Download updates while installing neon" * Checkbox "Download updates while installing neon" cannot be checked'

"Can't continue installation in second step (prepare) due continue button is non-functional. Improvement: Install-Program should be in favorites"

There's bugs in here that come from Ubuntu and bugs that come from not having various bits installed. I don't think there's much point spending much time on this as I expect to change to Calamares soon.

Problems which occurred on the installed system:

Quite a few without problems

Lots complain about missing icons, this is a cache issue "On the kicker menu, there were no icons, but they appeared after a re-boot." we've fixed this, I hope.

"Can not start system, just weird colors after install. "

"After install of guest additions on VirtualBox desktop panel would load but then disappear."

"Wanted to install it on dualboot with win 10. Grub does not appear so I cannot boot kde neon which I prefere as primary OS."

"got a grub shell after install"

"Text garbage on the light blue loading screen after the GRUB menu."

"if a display goes to sleep plasma partly crashes (same happens on kubuntu) it's a qt problem as far as i know"

"Illegible characters till NVIDIA driver loaded "

"Unable to use software-properties-kde : Error: could not find a distribution template for neon/xenial" (known bug this one)

"System boots to console login prompt. X can be started after login. "

Problems which occurred when installing new software

"Plasma Discover crashed" I have this too and it's a priority to look into

"There was a problem installing kde-l10n because of conflict with plasma-desktop-data"
Problems which occurred when updating the system to latest packages:

No problems for most people but some issues:

Thanks a lot to everyone who tested and gave feedback. That gives me a good idea of the priority areas to work on. Keep on testing and reporting bugs and of course any help welcome :)

facebooktwittergoogle_pluslinkedinby feather

03 May 2016 11:27am GMT

It has happened - GSoC 2016 Selection!


I have been selected for the Google Summer of Code!

For the better part of the summer vacation, I will now be committing myself to write code for KDE to implement my project idea of implementing a virtual folder in Dolphin to make it easier to select files.

As a primer, the Google Summer of Code (GSoC) is an annual event organized by Google for drawing students to work on open source projects with a nice stipend, goodies, and fame. The GSoC is a term one would hear pretty frequently when talking about the technical prowess and coding culture of a college.

This year, BITS Pilani - Hyderabad Campus had a record number of a total of 7 selections! This is more than double of our previous record. This in some ways, might be the start of the technical culture wave this campus was looking for so long.

The File Tray idea for the GSoC came at a difficult time, hardly a month after the entrance exams in 2015. It was at a time I was frustrated with everything I had done and I didn't have any energy to pursue anything at all having been completely drained out by the entrance exams prior to it. From there, the project sat on the list of "Things I Might Do In The Distant Future". The project idea was known only to a few close friends and my tiny programming diary.

It was only till November 2015 when I stumbled across the GSoC. I began looking at open source file managers for which I could implement my project idea. I had been using Linux with various desktop environments for about 4 years at that point, so I had a pretty decent idea of what to look for. Writing this feature for GNOME's Nautilus was the first thing I looked into as I had been using Nautilus for a while and I was a big fan of Nautilus's simple to use interface. But, the problem was that Nautilus was a C/GTK+ project and I had no desire to move on to using C after having C++ in my comfort zone for a very long time. Fortunately, Dolphin, one of the best file managers I had used since my days of using KDE, used C++/Qt, a toolset I am much better with. I felt my project idea was a natural fit for Dolphin's Split view mode. KDE also had an excellent record in the GSoC with a very good number of slots and a high percentage of successful projects. This began my tryst with Open Source development.

From there on, I taught myself Qt and during a Diwali vacation on campus, I managed to make a very rough prototype application of my project after coding for 6 hours straight from 11pm to 5am the next day. Following this, I subscribed to KDE's mailing lists and after lurking around for a while, I started asking for feedback on my GSoC idea. With surprisingly positive feedback from numerous KDE developers, I realized that there might just be a non-zero chance of getting selected.

Things quickly began falling into place and I then moved on to the next step of hunting around for bugs I could fix and new features I could implement for Dolphin. The bug-fixing was as enjoyable as it was occasionally frustrating. Reading over 20000 lines of code certainly took its toll when I had no idea when how different parts of the application meshed together. In the end, thanks to the guidance of Dolphin maintainer, Emmanuel Pescosta, I managed to fix a couple of things for Dolphin and moved on to the next step of making a proposal for my GSoC application.

Starting off with making a competent proposal was like launching off ground zero as there were very few people who had successfully completed the GSoC from our campus and most of these people had graduated well before this time. I started digging around for proposals accepted by KDE in previous GSoC's. What I couldn't get from all the proposals was some sound advice from seniors. In particular, Naveen Jafer bhaiya (who also went on to achieve a GSoC project of his own!) helped me with making my proposal as good as possible. In the end, after painstakingly checking every word in my proposal for what felt like the fiftieth time I submitted it on 25 March, only to spend an anxious month waiting for the results which came out at 1230am IST on April 23. While it still hasn't sunk in yet (!), I am sure that this will make for an awesome summer vacation!

03 May 2016 10:53am GMT

Converging Kubes

Kube, our PIM-Client in the making, is supposed to run on a variety of platforms and form-factors. We aim to provide a consistent look and feel across them all. If you know how to use Kube on your desktop machine, you will know how to use it on your Android phone or tablet as well. So what we are going to do, is building a UI for the phone, allowing it to display multiple pages on the tablet and in the end serving it on the desktop as well. Good idea, right?

Not quite. While consistency is our goal, we don't believe in "one UI to rule them all", at least not in the sense of just getting an enlarged version of your tablet app as a desktop application. Instead, what you will get with Kube is a specifically optimized user interface for each form-factor you are running it on. Thanks to QtQuick, the only difference will be "a little" UI code, the core will stay the same.

To achieve our UI goals, we are employing Kirigami UI. It offers us:

1) A set of UI Components that seamlessly integrate with QtQuick Controls to build a pretty UIs for Kube.

2) but more importantly: UI/UX patterns, that make the UI not only pretty but usable and bring us closer to our goal of convergence, despite beeng specially tailored for the form-factor.

No good blogpost without a picture. So here it is: A first look at Kube on mobile, build with Kirigami.

Kube Mail Mobile Mockup

03 May 2016 9:50am GMT

Running Plasma-Wayland on KDE Neon

This morning I installed KDE Neon on my good old ExoPC as I need to test some touch functionality on Wayland. So here are the steps on how to switch Neon to use Wayland:

Install package plasma-workspace-wayland:

sudo apt install plasma-workspace-wayland

Log out and select in session drop down Plasma (Wayland), log in and enjoy your Wayland session.

If you want to verify that it truly is a Wayland session, just open any KDE application, open the "Help" Menu, go to "About <Application Name>", click "Version" tab, it should say "The Wayland windowing system" is being used.

03 May 2016 8:09am GMT

#22: GSoC with KDE – 1

Hey all !

As I said, in my last post, I am one of the student developers for KDE this year during this Google Summer of Code. I'll be working on a project related to Plasma. I'll go through the details, as I progress with my project.

It's currently community bonding period, and we are expected to bond with the community and get to know the people. I've been hanging around IRC as usual. I recently only joined the telegram group kde-soc, and it's pretty helpful for those with University blocked ports.

Also, I've been working withe the KDE VDG Group for coming up with some cool UI's for my project. I plan to have a plasmoid, which will have different cards. This plasmoid will be scrollable, so we can scroll cards on it. Each card will display some important information pertaining to a user's Flight, Hotel, Event or Restaurant reservation. Few days back, I created some basic parts in Inkscape, and sent it to the good folks at VDG. Andres Betts was quick to respond with his views on it, and asked me, how would they would look on a proper desktop.

Here are the Inkscape mockups I came up with. (The flight one is actually Vishesh's😉 )

event_drawing Flight hotel_drawing restaurant_drawing

He told me to, make these in QML and see, exactly how would they look on a Plasma Desktop.

dark light

They seemed good, and he said, he would come up with some mockups for the same. Also, the typeface needs to be made good. Personally, I also think the cliparts could be better. I used these, since I couldn't find anything better from Google Images.

Things that still need to be done, as for the UIs is to find a way, to make these different cards uniform and aligned. Also, I plan to show just a small abstract of the information on the Plasmoid Card. When the user clicks on it, then the card would expand.

I have set up a scratch repository here. Also, I maintain a github mirror, for those who prefer github. It's good, that I set up everything and pushed some code beforehand, since I won't be able to actually code until a week later, after the formal coding period begins. (Courtesy of final University Exams -_- ).

Your valuable opinions and suggestions are welcome.


03 May 2016 8:02am GMT

02 May 2016

feedPlanet KDE

Akademy 2016 travel support

If you want to attend Akademy 2016 but are a bit short on money, that is no excuse :)

Read https://mail.kde.org/pipermail/kde-community/2016q2/002758.html for more info on how the KDE e.V. can help you!

02 May 2016 11:27pm GMT

Zanshin 0.4.0 is out: port to Qt5 done

We are happy and proud to announce the immediate availability of Zanshin 0.4.0.

This release marks the end of our port to Qt5 and KDE Frameworks 5. It also means we're now compatible with the newest Akonadi and KDEPIM releases. It doesn't bring any new feature but the port itself is big news.

Despite the lack of features, we wanted to make this version as solid as possible, that's why we spent quite some time running quality tools on the code base to find potential issues. It results in quite a few fixes ranging from potential memory leaks, to pure optimizations.

We also wanted a slightly improved look. Nothing radical or fancy, but we spent time improving the layouts to have a better visual alignment all around and less unwanted margins. It looks even more tidy now!

Of course all the features you grew accustomed to are still here and it's time to rediscover them on this new technical backend.

As usual, you can grab 0.4.0 while it is fresh! You can download the sources obviously, which is the best way to have something up to date but a bit more involving. Packages are available for openSUSE Tumbleweed from the home:ervin repository, give it a bit of time for other distributions to catch up.

Now it's time for us to relax a bit and start preparing our next release, this time with new features and probably further visual changes.

02 May 2016 8:44pm GMT

Reordering a Qt Quick ListView via drag'n'drop - part 2

Welcome to this second article in the "Reordering a Qt Quick ListView via drag'n'drop" series. If you haven't read it already, I suggest you start with the first article.

In this article we are going to add a handy feature to our ListView: the ability to automatically scroll the ListView when dragging an item to its top or bottom edge. This is nice when you want to drag an item to a place which is not currently visible.

Here is this new behavior in action:

Drag scrolling

We are going to implement this by using the MouseArea of the DraggableItem introduced in the first article. When the mouse cursor in this MouseArea is close enough to the borders of the ListView we will trigger scrolling animations. This is a bit less elegant than adding MouseAreas at the top and bottom of the ListView, but has the nice advantage of not requiring any change in the ListView.

The first thing we are going to do is add a few properties to our component:

// Size of the area at the top and bottom of the list where drag-scrolling happens
property int scrollEdgeSize: 6

// Internal: set to -1 when drag-scrolling up and 1 when drag-scrolling down
property int _scrollingDirection: 0

// Internal: shortcut to access the attached ListView from everywhere.
// Shorter than root.ListView.view
property ListView _listView: ListView.view

Now we can declare two animations to scroll the list:

SmoothedAnimation {
    id: upAnimation
    target: _listView
    property: "contentY"
    to: 0
    running: _scrollingDirection == -1

SmoothedAnimation {
    id: downAnimation
    target: _listView
    property: "contentY"
    to: _listView.contentHeight - _listView.height
    running: _scrollingDirection == 1

These two animations operate on the ListView and will make it scroll by animating its contentY property, depending on the value of _scrollingDirection. All that remain is to update _scrollingDirection when dragging to the top or bottom edge of the ListView. We do this by changing the binding of scrollingDirection when we enter the "dragging" state:

_scrollingDirection: {
    var yCoord = _listView.mapFromItem(dragArea, 0, dragArea.mouseY).y;
    if (yCoord < scrollEdgeSize) {
    } else if (yCoord > _listView.height - scrollEdgeSize) {
    } else {

Here we define a complex expression for scrollingDirection: first we compute the y coordinate relative to the ListView. Then we check its value to see if we are on either the top or bottom edge, and update the value accordingly.

We can now scroll the ListView by dragging items to its top or bottom edge. You might notice an annoying bug though: when you drop an item below the last item the dropped item does not become visible. To workaround this, we need a little hack: once the ListView has moved the dropped item at its final position, we can call the ListView.positionViewAtIndex() method to ensure our item is visible. The trick is, even if the code connected to the moveItemRequested moves the Item synchronously, we cannot call positionViewAtIndex right after the signal has been emitted: we need to wait until the ListView has actually adjusted itself after the move. To do so, we can use a Timer object to delay the call to positionViewAtIndex. This is what emitMoveItemRequested now looks like:

function emitMoveItemRequested() {
    var dropArea = contentItemWrapper.Drag.target;
    if (!dropArea) {
    var dropIndex = dropArea.dropIndex;
    if (model.index < dropIndex) {
    if (model.index === dropIndex) {
    root.moveItemRequested(model.index, dropIndex);

And this is our Timer:

Timer {
    id: makeDroppedItemVisibleTimer
    interval: 0
    onTriggered: {
        _listView.positionViewAtIndex(model.index, ListView.Contain);

An interval of 0 means the timer will be triggered as soon as we are back to the event loop. Note that this only works because in our example the code connected to the DraggableItem.moveItemRequested signal is synchronous: it does not delay the move of the dropped item. If the code were asynchronous, you would have to find a way to call ListView.positionViewAtIndex after the move is done, which most likely would require calling it outside of DraggableItem.

We are done with drag-scrolling, the user can now scroll long lists to find the place to drop the dragged item. The source code for this article is available in the associated GitHub repository, under the "2-drag-scroll" tag.

02 May 2016 5:52pm GMT

Say Hi! to the new GENIVI Development Platform

On Wednesday February 17th, the GENIVI Alliance released a QEMU image of the GENIVI Demo Platform ivi9 Beta version, together with everything needed (instructions, source code, recepies, etc.) to build GDP-ivi9 with Yocto. A few weeks later, on March 8th, the first release candidate was published.

Finally, last April 19th GDP-ivi9 was published targeting QEMU, Renesas Porter and RPi2. Check the release announcement and download the different images and source code from the GDP download page.

I joined the GDP project in November 2015, leading a small team of developers from Codethink with the idea of moving GDP from a demo platform towards a collaboration platform. In summary, going from +r-- to +rwx.

What was GDP?

GENIVI Demo Platform was the compilation of middleware components developed by GENIVI integrated with Yocto or Baserock, based on poky, designed to showcase and test the work done by GENIVI's Expert Groups.

What is GENIVI Development Platform?

At GENIVI's 14th All Members Meeting (AMM) is was announced that GDP would change his name, from Demo Platform to Development Platform, reflecting the new spirit that has arisen during the delivery of the GDP-ivi9 version.

The general idea will be to mature those GENIVI's modules that were developed as proof of concepts (PoC) and provide up to date software together with a SDK, to attract developers to participate as contributors, having GDP as their number one Open Source platform for automotive.

Find further information about GENIVI Development Platform at GENIVI's public wiki, in the GDP project pages. The name change, recently announced will be reflected in the wiki in the coming weeks.

Coming actions

During the coming weeks, the GDP delivery team will focus on the following topics:
Feel free to propose enhancements or new features to GDP. The only thing you have to do is create a subtask under the ticket GDP-154, describe it and explain the benefits and potential risks/challenges. We will discuss them through the mailing list. I am looking forward of seeing Plasma 5 as part of GDP.

GENIVI 14th AMM and other events to promote GDP.

After te release of the new version, GDP maintainers and myself have been concentrated in making sure GDP was ready for GENIVI's 14th All Members Meeting (AMM), that took place in Paris from April 25th to 29th.

I participated as speaker in 3 sessions and my colleagues at Codethink delivered a couple of Hands on Sessions about GDE-ivi9. It has been a lot of work but a good finish line for this release cycle. We will publish the slides the coming days.

A few weeks earlier I presented the GDP project at the Embedded Linux Conference (ELC), that took place in San Diego from April 4th to 6th. It was my first time at this conference and I enjoyed it. I also participated at the Collaboration Summit, invited by AGL and the Linux Foundation. I will provide some more details about these events in a later post.

I plan to attend to QtCon to promote GDP among Qt/KDE developers and to the Automotive Linux Summit, that will take place in Japan, to spread the word about this open project for automotive. I have also confirmed my presence in June 2nd at the OpenExpo, in Madrid. It will be my first event in Spain in quite some time.


It has been a very busy 6 months but very productive. Leading a small but promising Open Source project, that might have a big influence within automotive in the future, working together with my colleagues at Codethink and GDP community members, has been very interesting. I am learning a lot about this industry...by doing.
Agustin Benito Bethencourt (Toscalix) @toscalix Linkedin profile: http://linkedin.com/in/toscalix

02 May 2016 2:33pm GMT

New GDQuest tutorials!

Nathan speaking:

9 new Krita tutorials came out since the last time I made a news post here. And so did my shoulder. Out of its socket. Ouch!

But that's a whole other story. If I'm here today, it's to bring you 2 pieces of good news:

1. You may have noticed that the videos that came out on the channel until last week were just an introduction to the course. From now on, the vast majority of the tutorials that are coming out on the GDquest channel will be dedicated to Krita's tools.

2. There is now a dedicated course page where you can find all of the Krita tutorials. This is also where you will find all of the extra course material that goes along with the training: exercises, cheat sheets, exclusive tips! You can find it at this address: http://gdquest.com/game-art-quest/volume-1/course-public/
Be sure to bookmark the page! I will add exclusive content over time.

Here are some of the latest videos so you can get a sense of what came out lately:

Painting with the freehand brush tool

Navigation on the canvas in Krita

Bonus: Overview of Pureref

Pureref is a powerful free application for Windows, Mac and Linux. It allows you to overlay reference pictures on top of Krita and to arrange them freely. This is a great companion for any artist out there, whether you're an illustrator or you work in games.

Thank you for your time,


02 May 2016 1:26pm GMT

Plasma Mobile : New base system

Last Akademy, the Plasma team revealed the first prototype of the new Plasma Mobile. Plasma Mobile is designed to work on any existing operating system stack, and so far, our reference images were based on Ubuntu Touch. Ubuntu Touch runs the Android system inside an LXC container to make use of Android Hardware Abstraction Layer, binary drivers and other proprietary services required to make use of hardware. To create our reference image, we used to fetch the Ubuntu Touch rootfs, remove Unity/Mir packages and install KF5, kwin_wayland, plasma and other applications on top of it.

Our initial Ubuntu Touch base was Ubuntu 15.04. Eventually, our image started to diverge from the Ubuntu Touch base. For example, we upgraded libhybris to upstream version because libhybris available in Ubuntu archive diverged too much from upstream to be useful in our context. We also had to upgrade to a newer Qt version, and we also needed to upgrade the base system to Ubuntu 16.04 (Xenial Xerus) because we did not have the resources for managing different branches for packaging the latest git KF5/Plasma for 15.04.

To simplify things further, we wanted to experiment if we can get our own operating system stack that can run on mobile devices. After we gathered and analyzed our requirements, we came up with the following base system architecture,

This new setup can bring some nice advantages for us,

There are various solutions available to run the Linux system on the Android base inside the chroot. For example, Linux Deploy android application. However they require a complete android system, and support only VNC viewer or similar solutions for GUI. Since we wanted to run full KWin/Wayland session that would not work for us. Eventually I came across LXC for android. This allows one to run Linux system inside the container on Android.

LXC requires various kernel features enabled to run containers, I needed to enable them in the Cyanognenmod kernel for Nexus 5. After various fixes here and there, I got a console working for Ubuntu system:

root@hammerhead:/data/lxc/lxc # lxc-start -n system -F
 * Setting up X socket directories...

Ubuntu Xenial Xerus (development branch) ubuntu-phablet console

ubuntu-phablet login: phablet
Last login: Wed May 12 08:39:00 UTC 1971 on lxc/console
Welcome to Ubuntu Xenial Xerus (development branch) (GNU/Linux 3.4.0-cyanogenmod-g15e5a99-dirty armv7l)

 * Documentation:  https://help.ubuntu.com/

Next thing to do in the line was to run the libhybris tests inside the container, this worked as expected after bind mounting /system and /vendor inside the container.

Test hwcomposer running

After that, we attempted to run kwin_wayland, to our surprise this didn't work as expected, and all Qt applications crashed with,

WARNING: QApplication was not created in the main() thread.
Segmentation fault

After researching a lot we got to know that Ubuntu Touch ships some patches in bionic to fix this issue. After applying those patches on bionic, KWin showed fancy lockscreen on phone.

Oh its gorgeous

Input, however didn't work as expected, as kwin failed to register session to logind inside container. KWin requires logind to open the input devices and get input events through its libinput backend. Martin Gräßlin investigated the problem and came up with solution which fetched the XDG_SESSION_ID variable and run TakeControl on that logind session, that in-addition to working input on new phone system, allows to start KWin/Wayland on another tty.

There are several problems with this new stack, and currently I am working on fixing those issues and having 1:1 feature parity with current Ubuntu Touch based setup. Currently there is no easy way to install a zip file to flash this new base, it requires installing stripped-down Cyanogenmod ROM, installing lxc from daily builds and putting Plasma Mobile rootfs in the right place. This is currently documented at KDE community wiki. In upcoming weeks I will be working on deployable image which you can directly flash to your device.

02 May 2016 5:50am GMT

01 May 2016

feedPlanet KDE

Akonadi Resource for Microsoft Exchange Web Services (EWS)

Whether you are a Microsoft hater or a lover, when you have ever had a chance to work for a medium or large corporation, you have probably stumbled upon Microsoft Exchange mail server. While it can be made to talk to regular e-mail clients using standards such as IMAP, POP3 and SMTP, some corporate admins choose not to enable any of the standard mail protocols leaving the user with no choice other than to use Microsoft Outlook. Even if it is possible to use regular e-mail clients they will not be able to explore the full potential of Exchange, as it is not only a mail server but rather a groupware server which includes support for calendar, tasks, contacts and many more.

Why not talk to Exchange in its own language?

Exchange actually knows three of them:

MAPI was the primary way to communicate with Exchange until version 2007. It is now considered legacy and it's for a good reason - it's a complex protocol, not an easy one to work with. ActiveSync is focused towards mobile applications.

Exchange Web Services were introduced with Exchange 2007 and since then have become the new primary standard to communicate with Exchange.

There are not many e-mail clients that are able to use native Exchange protocols. Evolution is able to work with both MAPI and EWS, but the support is buggy. An extension exists for Thunderbird (ExQuilla), but it requires a license and also has some bugs.

The situation on the Akonadi front

Akonadi has so far seen support for two of the Exchange native protocols. A resource exists for MAPI (akonadi-exchange). It started off as a read-only resource to access the Global Address List and the calendar and has since evolved to allow retrieval of e-mail. Unfortunately because of MAPI complexness it is buggy and pulls it some Samba4 dependencies.

Another resource exists for ActiveSync. Unfortunately access to Exchange using this standard is often heavily restricted or even completely blocked by corporate admins due to security concerns.

Exchange Web Services

When I first started exploring Exchange Web Services I noticed that it is relatively easy to use and quite well documented by Microsoft itself (big thanks to the EU forcing MS to documents its standards). Given the lack of fully-featured Exchange support I have given it a try to develop an Akonadi resource that would use EWS in order to allow KDE PIM to access the full potential of Exchange.

After nearly six months of development the day has come to publish the initial release of this resource.

Current status

The initial version (0.8.0) focuses on e-mail support. It is possible to both send and receive e-mail without use of IMAP, POP3 or SMTP (yes, by default Outlook doesn't send e-mail through SMTP, but uses the native protocol to do it). Full control over mailbox folder is also possible. You can copy, delete e-mail and manage all folders.

Once notable feature is server-side tag support. Thanks to Exchange support for custom properties it is possible to save Akonadi tags into Exchange so that they can be retrieved on another machine or after a system reinstall.

Support for other items is partial. Calendar is read-only - events are retrieved, reminders work, but there is no possibility to add, modify or delete events as well as invite attendees or respond to invitations from others.

Personal address book is also read-only. There is no support for the Global Address List and tasks.

Development of all the missing features will require more time and will be subject to subsequent releases. It is however worth to note that a number of changes will have to be introduced to Akonadi as in some cases it is based on assumptions, which are not true for Exchange.

Can I try it out?

Of course, you're welcome to do so. The project is hosted on GitHub, where you can retrieve the latest bleeding edge state of development or - in case you prefer a stable solution - one of available releases (currently there is only one).

I have prepared packages for Fedora 23 and Ubuntu 16.04, but since I'm not a packaging expert please bare with me in case there are some issues.

Being a Gentoo user I have obviously prepared an overlay.

Note: While I have done my best to develop good quality software I am only a human and humans make mistakes. In this case mistakes could even cause your e-mail to be lost, so please use with caution.

Next steps

Once e-mail support is stable I intend to focus on calendar support, which should make the resource much more useful.

Apart from the resource itself I also intend to work on the KDE PIM packages itself in order to better integrate with the EWS resource. I already had to introduce some workarounds that I would like to get rid of.

In the long term I hope to make this resource part of KDE PIM so that people can use Exchange with it without the need to install any third-party software and rely on my poor packaging😉

01 May 2016 7:01pm GMT

Danbooru Client 0.6.0 released

A new version of Danbooru Client is now available!

What is Danbooru Client?

Danbooru Client is an application to access Danbooru-based image boards (Wikipedia definition).

It offers a convenient, KF5 and Qt5-based GUI coupled with a QML image view to browse, view, and download images hosted in two of the most famous Danbooru boards (konachan.com and yande.re).

Highglights of the new version

Coming up next

Sooner or later I'll get to finish the multiple API support, but given that there's close to no interest for these programs (people are happy to use a browser) and that I work on this very irregularly (every 6-7 months at best), there's no ETA at all. It might be done this year, perhaps the next.

Release details

Currently, there is only a source tarball. For security, I have signed it with my public GPG key (A29D259B) and I have also provided a SHA-512 hash of the release.

01 May 2016 12:59pm GMT