If you use Photon, it won't play nice with the UI but it will work. What I've been working with is libscreen (what all the apps use), screen_create_context, screen_create_window.
Yes, there's no /dev/photon, the apps all use /dev/screen actually.
You can make a graphical app -- the problem is that devuser can't run them. You need to run them from the Playbook itself via a package.
So I still can't get past the problem that none of my apps will even load (tried a simple mkdir console app) when packaged in to a .bar.