Towards true headless


I am working on removing most of windowing code from the VM, and in trying to unify the platform specific code of the VM. In the MinimalistHeadless branch of I made the following changes:

– Unified standard CMake building scripts for Unixes. I hate autoconf. I want to use them in Windows too.
– Refactoring the Unix entry points. I am trying to remove a lot of code for simplfying stuff.
– Null window driver for true headless.
– Optional SDL2 based traditional display backend for compatibility reasons, and because the extra Morphic worlds using OSWindow are a bit unstable.

So far I managed to run a standard Pharo 6 image using this custom VM in Linux. Windows and Mac are coming next. Hopefully this is going to fix the problems with duplicated events when using OSWindow in Windows.

I am also planning on making a standard interface for embedding the VM in an application, at least as a static library. With this new building system, this seems to be easy to do.

BTW. When I tried the minimalistic Pharo image, in a completely headless VM, I got the following error:

[ “Ugh …. now this is a biggie – a system that does not support
any of the display depths at all.”
‘Fatal error: This system has no support for any display depth at all.’
inContext: thisContext.
Smalltalk quitPrimitive “There is no way to continue from here” ] in DisplayScreen>>findAnyDisplayDepth
DisplayScreen class>>startUp

As a workaround, I am doing the following for ioHasDisplayDepth with the null driver:

sqInt ioHasDisplayDepth(sqInt depth)
return true;

In DisplayScreen class >> startUp we have the following:
startUp “DisplayScreen startUp”
Display setExtent: self actualScreenSize depth: Display nativeDepth.
Display beDisplay

Does it make sense, to always trying to create a display in startup time?

Best regards,


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: