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,
- Cyanogenmod/AOSP based android system
- Ubuntu/Neon system inside chroot or container
This new setup can bring some nice advantages for us,
- Easier to run Plasma Mobile stack with any operating system
- Theoretically possible to run Plasma on every device supported by Cyanogenmod
- Control over android stack for Plasma
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... ...done. 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.
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.
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.
Hola Kubuntu users
Ubuntu ‘recently’ deprecated jockey and moved to ubuntu-drivers-common. ubuntu-drivers-common is a python backend which will try to figure out which drivers are best suited to your system. Up till Kubuntu 13.10 we were still relying on the backend called Jockey which is python2 , however for the 14.04 cycle, one of our major tasks was to rehaul the driver manager interface and use the fancy new ubuntu-drivers-common backend which is python3 based.
By leveraging this new backend, we are now at feature parity with Ubuntu when it comes to driver handling. Packages are now available to trusty users and can be acquired by installing the ‘kubuntu-driver-manager’ package.
Once installed you’ll find it in your System Settings Menu under “Driver Manager for Kubuntu”
If you find any bugs , please report them here
KStars now gives you an option to correct for General Relativistic effects near the sun!
According to Einstein’s Theory of General Relativity, light rays bend around the sun because of the sun’s gravity, and this correction is predicted to be about 0.0005 of a degree for light rays that just graze the sun’s surface. During the Solar Eclipse of 29th May 1919, Arthur Eddington verified this theory experimentally.
KStars now lets you simulate this experiment, which essentially measured the apparent positions of stars near the edge of the sun and showed that General Relativity accounted for the difference in the observed and expected positions of the stars.
Fire up KStars, hit ‘0’ to center the sun, and zoom in quite a bit to see the stars at the edge of the sun. Now hit ‘r’ to toggle the relativistic corrections!