2006-06-25

Dingo 0.0.8 (experimental)

Dingo 0.0.8 (experimental) is here. I was hoping to get a bit more done than this before the next release, but I guess the changes are conceptually pretty significant, so I'll kick it out the door even if it isn't polished yet (that's the point of preview releases, isn't it?)

Here are the changes since Dingo 0.0.7:

  • Window selector in the panel. This is equivalent to Windows' taskbar. I'm aware of a positioning problem in Opera 9 (the problem wasn't there in the previous beta, so I'll have to figure out what happened).
  • User profiles. This is conceptually the biggest improvement of 0.0.8. Profiles store your user settings for the Dingo system and any applications that care to use it. One of the great things about profiles, like the design of the application system, is that they are completely decentralized: you can host a profile on any public website and use it in Dingo. The profiles are loaded client-side, so my website hosting Dingo doesn't even need to see your profile. Although there isn't yet a front end for selecting or modifying your profile, if you're a techie and want to play around with it, you can look through the default profile, use it as a template to set up your own profile on another website, and then use it by going to http://nanobox.chipx86.com/dingo/?profile=<your profile's URL>.
  • Custom themes. Using a custom profile, you can set up your own custom stylesheets and icon themes. Although it isn't completely implemented yet (again, this release isn't very polished), applications may try to grab icons from your specified base theme directory, which may be on a remote website using a KDE/GNOME-style icon directory structure. In fact, the default theme (Crystal SVG) was simply copied over with its original directory structure. The methods for fetching the icons will be improved in future versions.
  • Custom main menu. Again, using a custom profile, you can easily set up your own menu using the profile's straight-forward descriptive format. Menu items may even use events for dynamic menu updates. Look through the default profile to get an idea of how it works. e.target in a menu item event points to the span element containing the menu item text, which is immediately inside an li that also contains the submenu if the item has one.
  • Window icons. Sort of pointless right now, other than for quick identification, but I will later give it a menu for all of your basic window commands (maximize, minimize, move to another workspace, etc.).
  • Window edge snapping. As you move windows, they will automatically snap to the edges of other windows if you move them close enough. The default snap range is 12 pixels, but this may be modified by setting the appropriate values in a custom profile. A range of 0 is equivalent to disabling the edge snapping feature. I will later allow windows to snap to the desktop edges.
  • I've somewhat changed the way applications should be written. The preferred way is now to use void function () { ... }.startApp();. The startApp() function causes your defined app to extend a standard App class (which currently does nothing, but it provides ease for future expansion).
  • Progress cursor when a remote script is being loaded. The progress indicator should be removed directly by the requested resource once it is fetched (the .startApp() function does this automatically), but if the resource hasn't arrived within ten seconds, the system assumes the request somehow failed and removes the indicator. I have experienced some bugs in this design, and I will try to address them. I will later move the timeout delay into the profile rather than it being hardcoded.
  • Other miscellaneous changes.

Okay, so I guess there were quite a few improvements. Still, I was hoping to get at least the maximize/minimize functionality or some sort of front end to the profiles done. I guess I'll put those off to a future release.

0 comments

Post new comment

Comment moderation policy: Your comment will be reviewed before it is added to the site. This is in response to spam and other forms of abuse. I gladly accept comments containing criticism as long as the language is clean.

This weblog is powered by Blogger.