The work on the DesktopService has started. The first breakthrough came after tracking through the sourcecode for bbClean, and starting the DesktopService will now spawn an initial desktop, and render the windows desktop wallpaper in it. The desktop menu, however, hasn’t been added yet.
Progress progress. And a huge shoutout to everyone at #liquidfm@mixxnet who had to cope with my mumblings tonite as I tried to crack the DesktopService
If you haven’t already, tune in to Liquid.fm – the only internet radio you need
I would post a screenshot, but as it currently consists mostly of debug output in a console window, it would probably not be the most exciting thing to put here. So instead I’ll settle for a quick recap of the project.
The shell itself is a complete rewrite of the bbClean shell. As the code just became too hairy to handle (after years of forking and developers leaving their footprints in there without adding any comments) we went ahead and decided to simply scrap it and start over. And do it right from the beginning.
The essential shell components are refered to as “Services”, and these can be started and stopped as needed from within the shell. At the time of writing, two of these services are at least partially implemented: the TaskService which is responsible for keeping track of the running tasks (i.e. the little neat buttons that show up in your Explorer taskbar) and the DesktopService which handles the desktop and all your virtual desktops. These two services are currently functioning at a basic level. Keep in mind that we are talking about the internals right now, so there are not yet any visible interface. Just the logic behind it.
The remaining services include the TrayService which will do pretty much the same thing as the TaskService, but with the system tray (or the “System Notification Area”, you know the corner of your screen where all those icons appear), the PluginManager that is responsible for loading the plugins (that was a huge simplification, more about that at a later time) and the ConfigurationManager which loads your settings and allow the other parts of the shell to access them.