PicoGUI.org has moved - This site is for archival only

PicoGUI Logo

Latest screenshot
January 19, 2003 (micah)

Screenshot Thumbnail

This is the demo app I'm running over VNC on navi.picogui.org now. It's using the photonic and crsr_gold_small themes. There are two clients connected, each with their own cursor.

(more screenshots)

- PicoWiki
- PicoGUI Protocol
- C client API Reference
- Tutorial: Writing clients in C
- Authors

- PicoGUI v0.44 source
- Release notes
- Latest CVS and SVN snapshots
- Browse CVS
- CVS info
- Neo-PicoGUI SVN repository
- Uncategorized downloads

- Bug/feature tracker
- Micah Dowty
- Development mailing list
- List archive
- CVS commits mailing list
- Wiki users

- Pico/Linux
- PicoVR3
- Tader's Psion 5mx Linux Pages
- Revol
- FlyingCircus
- TuxScreen
- LinuxDC
- Guild of the Void *
- PyPicoGUI
- James Hollingshead's PicoGUI apps
- jetstream
- Om

Sourceforge Summary Icon
SF Summary
News Icon
Screenshot Icon
Wiki Icon
Themes Icon
Ports Icon
Hosted by:
It's nifty!

PicoGUI News (latest 10)

February 10, 2003 (micah)

Zettai has donated free Zope web hosting to the PicoGUI project! Lalo is building a new web site for PicoGUI using Plone. You can see the work in progress at http://zope.picogui.org. When it is complete, it will replace this site.

January 25, 2003 (micah)

Another diagram, in PNG and Dia.

January 24, 2003 (micah)

More details about the new architecture emerge- I created a preliminary diagram giving a very high-level outline of how it will all fit together.

Snag it in PNG, PDF, or Dia formats.

January 22, 2003 (micah)

PicoGUI 0.44 was released!

See the sidebar or the sourceforge page for downloads and release notes. This release includes pgserver embedding, much improved OpenGL support, VNC server support, and miscellaneous bugfixes.

January 22, 2003 (micah)

We're starting to plan what will amount to a large rewrite of several major subsystems in PicoGUI, and plenty of tweaking and shuffling of the rest. There's more info in the mailing list archives, but this basically amounts to:
  • Microkernelization

    This would involve breaking up pgserver into a constellation of "servers" for the widget tree, layout engine, rendering engine, themes, input, and widgets. These would communicate through a custom very lightweight RPC-like library. If you wanted pgserver to be a single binary, the RPC layer would optimize out into plain function calls. If you wanted shared libraries, the layer would become calls to dlopen()'ed libs. If you wanted them all on separate machines, you could use TCP. This would make the code easier to maintain, easier to experiment with, and more flexible. The theme server could be replaced without disturbing the others, in order to design alternative theme systems. You could connect multiple layout engines to one widget tree and view the same apps at multiple resolutions simultaneously.

  • More intelligent memory management

    All handles in pgserver would be reference counted, making it much harder to accidentally leak the server's memory when writing clients. Specialized allocators for several frequently-reused types would be provided, similar to the "zombie gropnodes" used now.

  • New rendering engine

    The "S2 engine" that I have been planning on implementing would take shape, in the form of the new default rendering engine. Going along with the microkernel idea, it will be possible to replace the S2 engine with libart or another renderer in order to do postscript and SVG rendering.

  • New layout engine

    This might be similar to the current layout engine but with some of the limitations removed, or it might be something completely different like a constraint solver. It will have optional support for floating point coordinates, and affine transformations.

  • New configuration and build system

    The SCons-based system I have been planning will be used from the ground up. The entire PicoGUI system will be configured as a whole, with usable dependency analysis and interfaces to both external libraries and external distro buildsystems.

  • More real-time

    The current input system falls victim to the same FIFO queueing delay that most GUIs are vulnerable to. PicoGUI should provide a way to quantify and limit the latency between input and response.

  • More consistent widget model

    PicoGUI widgets should be completely based on property get/set and event passing, rather than only mostly. Widgets should be able to monitor data for change and react immediately, through a node-monitor-like system for handle objects.

  • Better revision control system

    The new source tree will be developed in something better than CVS, probably Subversion or Arch.

  • New name?

    To reflect all these changes, we might have a new name. Or not. This is still undecided

Well, that was quite a mouthful. Obviously it will take some time to rearrange, rewrite, and write code for the new system, but I'm confident it will be worth the effort. In PicoGUI's current state it will be fine for PDAs, but it lacks some of the features necessary to achieve the amount of scalability I've been envisioning PicoGUI having. While the new tree is being developed in a separate repository, the current CVS tree will still be developed.

Thanks to Lalo and Nathaniel for all the ideas above :)

January 19, 2003 (micah)

As a spiffy bonus before the release of PicoGUI 0.44, I've added VNC server support to pgserver. The server can output video to multiple VNC clients simultaneously, and each client gets its own mouse cursor. If you have a VNC client, point it at navi.picogui.org and you should see a simple demonstration app.

January 15, 2003 (micah)

One of the things PicoGUI is lacking the most of at this point is documentation. I've been toying with the idea of writing a PicoGUI book/reference that includes a more organized and formal version of all the documentation we have so far, plus a large amount of new material. I was planning on putting an outline on the wiki, but the wiki is flaky as usual. (If anyone feels like fixing a SFWiki, let me know :)

So, I'll just put it here:

January 12, 2003 (micah)

Happy Newyear!

I have been distracted from PicoGUI by jetstream the last few weeks. This definitely doesn't mean I've lost interest in PicoGUI though. After a demo of jetstream this week, I'm going to spend some time getting PicoGUI ready for another release.

The CVS has seen numerous bugfixes I'd like to get into a release, plus the OpenGL-related code that was added and improved for jetstream's benefit. After having the experience of using PicoGUI to build a main menu, HUD, and debugging console for jetstream, it's looking like PicoGUI will be a great fit for jetstream's UI needs :)

There are several bugfixes I'd like to do, then get PicoGUI 0.44 released. Afterwards, there are several things on my plate for improving PicoGUI:

  • New textbox widget features: clipboard, formatting, HTML
  • New build system. The autoconf/automake system we're using now is annoying for users and for developers, so I'm planning on switching to something non-linux-centric and more easily configured. I'm currently planning on using SCons.
  • New window management. This was discussed in the pgui-devel mailing list recently: I'd really like to (in addition to the current window management) create a blender-like method of arranging applications. This would scale very nicely between large and small screens, and between experienced and novice users
  • New rendering engine, the "S2 engine". I've been pondering a rendering (and possibly layout) system rewrite for pgserver for a while. This would give pgserver a performance boost on all platforms, and make full window overlapping possible if it is desired. The algorithm borrows heavily from 2D parallax-scrolling game engines.
  • Everything else on the sourceforge bug and feature tracker :)

November 16, 2002 (micah)

PicoGUI 0.43 was just released!

It includes the recent Widget Template and rootless code. Check the sidebar to the left for the download and release notes.

November 16, 2002 (micah)

Greetings, Slashdot!

Just to prevent any misunderstanding of what PicoGUI is and isn't, read:

  • The short summary of PicoGUI on the wiki
  • The FAQ
  • Look at the screenshot archive too. PicoGUI can run under a lot of different environments: low-end PDAs, rootless in X, in a window in X, emulating a PDA, in a terminal...
  • "PicoGUI" or "picogui", not "picoGUI", "pico gui", or "pico-gui" :)

Also note that the new Widget Template and rootless mode code isn't in the 0.42 release, but you can get it from CVS. Take a look at the Wiki and the pgui-devel mailing list archives, as they'll hopefully answer more questions if you have them.

(More News...)