Winnie - a framebuffer window system.



Winnie is an experimental and minimal window system I wrote for fun and to familiarize myself with the concepts of device handling, event management, window management and memory management on Linux.

Winnie receives events from the mouse (reading /dev/psaux) and the keyboard (/dev/tty raw mode) and renders pixels to the Linux framebuffer device (/dev/fb0). It supports a simple window manager that can handle the window/frame hierarchy (for example send focus, signal to maximize, mark areas as dirty to redraw etc). The window system clients are currently plugins that implement some winnie callbacks provided by the window system to handle the events it receives from the mouse, the keyboard or the system clock. I intended to use a shared memory IPC mechanism, I started, to support fully standalone applications but I finally used the plugins trick in order to have a first winnie implementation before the FOSSComm2013.

There's also an SDL backend that allows debugging under X.









FOSSComm2013 (@Harokopeio University of Athens):

The slides (greek :p).



Code:

Official winnie GitHub repository: https://github.com/hikiko/winnie
Clients-as-plugins winnie branch: https://github.com/hikiko/winnie/tree/winnie.clients-as-plugins




Screenshots and videos from earlier winnie development stages: