[Vm-dev] [ANN] Headless support for Cog Cocoa VM

Mariano Martinez Peck marianopeck at gmail.com
Fri Jan 18 19:15:14 UTC 2013


Hello there,

For a long time, Pharaoers and Squakers have been asking for headless
support in the Cocoa VMs just as we have with Carbon VMs. Carbon is
becoming a legacy framework so people needed this.

I wanted to thanks Square [i] International <http://www.square-i.net/> for
sponsoring me to implement such a support. Not only have they sponsored the
development but they have also agreed to release it under MIT license for
the community. This headless support will be included in the official Pharo
VM and will be, therefore, accessible to everybody.

The project is not yet finished but I do have a demo/prototype that I
wanted to share with you so that you can test it and give me feedback. This
VM should only work starting at OSX 10.6.

*How to use it?*  Basically it works this way: to have headless, just edit
the Info.plist and set the flag LSBackgroundOnly to 1 (add the key if it is
not present):

 <key>LSBackgroundOnly</key>
 <true/>

When doing this, you don't even need the -headless anymore since, setting
LSBackgroundOnly to 1, will cause the same effect (being the flag almost
mandatory). If you don't want headless, put it to false or don't even put
the key. If you don't set LSBackgroundOnly to 1 but send -headless, the VM
will still be headless but you will see a little flash. If this flash
bothers you, then set the flag. I am trying to get a way to avoid the
"flash" while also avoiding to set LSBackgroundOnly to 1, but I still
couldn't find it. Anyway, I think we can live with the current situation.

*How to test it?* You should run the image with something like RFB or
Seaside or whatever you can and then confirm if it is working even if you
are headless. As a matter of testing, I saved an image with seaside running
in the port 5555. You can get both, this Seaside image and the VM with
headless from: https://www.dropbox.com/sh/r7qk49bxywk2xce/6N7-fdyx6V
So if you run the VM headless with that image and go to localhost:5555, you
should see that Seaside is running.

I would appreciate if you can test it. And please let me know in which
version of OSX you tried. Of course, the more of you who can test it, the
better. Notice that this VM was compiled with LLVM GCC 4.2 and it may have
some problems in older OSX versions (but I think it shouldn't). I still
couldn't compile a VM with GNU GCC 4.2 as I get a crash :(

*Expected results?*  In headless mode, anything should be displayed (no
window, no menu, no item in the dock and nothing appear when switching
apps). When running headfull, everything should be normal.

*Where is the code? *The code I have modified to the VM is committed to my
own fork of the VM:
https://gitorious.org/~marianopeck/cogvm/marianopecks-blessed
Once the code is ready, I will do a pull request so that it can be
integrated.

Thanks everyone for the testing and feedback. Once again, thanks Square [i]
International for sponsoring this great feature. Also thanks Esteban
Lorenzano and Mark Smith for their incredible help.

This was just the first prototype. I will keep you informed about possible
progress.

Best regards,

-- 
Mariano
http://marianopeck.wordpress.com



-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130118/4df3f1cf/attachment.htm


More information about the Vm-dev mailing list