Devising the Plasma Mobile Emulator
The aim of my proposal was to develop emulator for plasma mobiles which would be the solution for developing, testing and accessing plasma phones without having real phone.
For making this proposal a reality, the work-flow that I and my mentor Bhushan Shah had decided were:
Step 1 : Focusing on the working of Docker Container and then creating Docker Container with kwin_wayland and plasma-mobile essentials.
Step 2 : Implementing support for different DPI in the nested environment of kwin_wayland.
Step 3 : Adding support for touch events into FakeInput interface.
Step 4 : Integration of translating touch events into click events.
Step 5 : Screenshot and screen recording, but this was to be done only if time would permit.
Step 6 : Polishing of codebase and bug-fix.
Step 7 : Documentation on usage of emulator.
However, in the course of project the actual things I have worked on are:
- Created Docker container with kwin_wayland running inside.
- Added support for events in the KWayland fakeinput_interface, autotested these added functionalities as well, and integrated it in kwin_wayland.
https://phabricator.kde.org/D1672 (Add support for fakeinput interface and protocol.) https://phabricator.kde.org/D1758 (Integrated FakeInput touch events into input redirection.)
- In Plasma Mobile emulator, KWin needed to be child of the emulator window, to achieve that, created a declarative plugin which created the anonymous wayland server which in turn
got the nested kwin_wayland started. https://phabricator.kde.org/D1989
- Rendered the kwin_wayland on QML, for that I triggered repaint of the QQuickItem when damaged signal of SurfaceInterface was triggered.
- Allowed input in QQuickitem using QQuick input events.
The work which is still pending are:
- Different Resolution.
- Screenshots and Screen Recording. (Future Development)
- Documentation on usage of Emulator.