Ghost Kernel

Refactoring & Window server library 2015/04/28, 22:00:00

In the last few weeks I mostly did bug fixing and cleaning up the existing code base. This worked out well, much of the kernel code is cleaner and more efficient now. Currently I'm working on a deadlock somewhere in the UI communication process.

Window server library

I've reworked the way that programs communicate with the window server. This currently happens via pipes. I also added functionality to the userspace library, so it is now actually possible to create windows, buttons and also register an "action listener" (that is called when a click event is fired) on these buttons.

As a little example, a window with a text field and a button can be created like this:

g_window* myWindow = g_window::create(); g_textfield* textfield = g_textfield::create(); textfield->setBounds(g_rectangle(10, 10, 120, 20)); myWindow->addChild(textfield); g_button* button = g_button::create(); button->setBounds(g_rectangle(10, 30, 120, 20)); button->setTitle("Press me!"); myWindow->addChild(button); myWindow->setBounds(g_rectangle(200, 200, 140, 160)); myWindow->setVisible(true);

This style is plain and simple, and anyone who has ever created a UI with Swing will easily find their way into this framework.


VFS in kernel & Unix pipes 2015/03/31, 22:00:00

Phew, that was quite a piece of work. I've finally decided to move the virtual filesystem to kernel space. The drivers still run in userspace and communicate with the kernel through messages & mapped areas. Performance is good so far, but there are still quite some improvements to do.

Filesystem paths

I moved away from the prefix:// style of filesystem paths. A single root seems much more convenient and clean. Currently all mountpoints exist in the root.

Unix pipes

The kernel now also supports unix pipes, which are used for standard input/output of programs, the communication of programs with the old window manager and probably also for other things like mouse/keyboard event transfer from the driver to programs (terminal/window manager).


I also improved the terminal of Ghost when run in headless mode. You can now create multiple terminals and switch between them using Ctrl + Tab.


Capri 2.0 released 2015/03/11, 21:00:00

The new version of the Capri script, the build system of the Ghost project, is now released on This release contains a rewrite of the parser, interpreter and command line interface.

It has support for native functionality loaded from shared libraries, has a more flexible native binding and is more portable than the previous version. Feel free to ask any questions and report bugs to me.


GhostAPI goes C-style 2015/01/22, 21:00:00

Back to development, I came to the conclusion that it is a better solution to have the basic Ghost system functions (system calls etc.) that reside in the GhostAPI as plain C functions. This makes it more compatible and, well, C++ is not needed here.

This are at the moment ~60 functions, the previous ghost::SystemCalls interface is now deprecated. More details follow. Oh and, happy new year. :)


Merry christmas! 2014/12/11, 19:32:05

It's christmas time! Best time to implement some standard C functions. I'm doing some work to improve the window manager performance, and also fix some IPC stuff. But don't expect too much before christmas, its chill-time. :D

Currently I'm also implementing a terminal application, so you can run commands, maybe also Capri scripts soon.