In an attempt to make myself blog more, I am going to post regular (probably monthly) updates about what’s happening with Kiwi. In August, I added an AHCI driver and support for legacy mode SATA devices to the ATA driver, and made it possible to boot Kiwi from a hard disk. More recently, I have been implementing a GUI. This GUI is implemented entirely in user-mode, with a server (the window server) that clients communicate with using an RPC interface. The window server manages windows, displays them on screen, and dispatches input events from the kernel to clients. Each window has an off-screen buffer which clients render their content into (the test clients render content using Cairo, which I have ported to Kiwi), and the server composites the windows onto the screen.
A screenshot of the current progress:
The next tasks are to implement an API for creating GUI applications (currently, each client must have RPC client code compiled in and use the RPC interface directly), to port the old console application to the new GUI, and to improve the performance of the GUI.
However, I am currently working on adding security features to the kernel (users, groups, and access control lists for kernel objects). This is taking place in the security branch of the Kiwi repository, and I hope to have this finished over the next week or so. Once this is done, I will return to the GUI.