A few weeks ago, I started a minimal window system, which performs software rendering on the linux /dev/fb0. My aim was to learn some systems programming and familiarize myself with concepts like event and device handling, memory management, window management, drawing on the framebuffer, IPC mechanisms etc (and certainly not to create a full linux window system! :)p) I call the program winnie and the code is available on github here: https://github.com/hikiko/winnie/tree/winnie.clients-as-plugins, https://github.com/hikiko/winnie and lp.
The program is not finished yet and I don’t know if I ever finish it, since I came up with new project ideas again.. Nevertheless, you can see some videos of the development stages below if you are interested (most recent first):
Winnie can get the events from the mouse (reading /dev/psaux
) and the keyboard (/dev/tty
raw mode) and render pixels to the Linux framebuffer device (/dev/fb0
). It has a minimal window manager that can handle the frames using reparenting. Although I wrote a shared memory allocator to use with the clients, atm the clients are loaded as plugins. It was a quick trick I invented to have a first winnie implementation before the Greek Fosscomm 2013…