Friday, May 22, 2009

Default screenlet set

Though Screenlets API development is dead (presumably), users on gnome-look.com continue to upload widgets. Because of this, I still see some hope in the Screenlets project. While Screenlets as a whole may not be as polished as other widget frameworks such as Yahoo! Widgets and Dashboard, it still has the potential to be something great. These other frameworks do not provide the freedom and flexability that Screenlets have, provided by python+cario.

With this being said, I propose that we collaborate and continue work on this project. I'll get the ball rolling by listing my proposed TODO:
  • Create a default set of screenlets
  • Provide a method for Screenlets to have internal fonts
  • Allow screenlets to have better names in the manager (spaces! ex: "Volume Control" instead of "VolumeControl")
  • Simplify the screenlets manager
  • Provide API cario layer abstraction, to make the implementation of separate foreground/background rendering easier. Screenlets use less resources if the foreground and background are rendered separately, as done in the CPUMeter and CarioClock screenlets.
  • Add API option to allow static resizing (grab corner+drag)
  • Add API option and functionality for screenlet rotation (grabbing corner+key sequence, etc.)
  • Add API option to allow dynamic resizing by dragging a corner (useful for Web, RSS reader)
Notice the emphasis on having a default set of screenlets. Screenlets fall short with some of the most necessary widgets. For example, there are several weather widgets available, but none of the suit everybodys needs nor are very polished. If there is a default set for developers to focus on, we can be certain that the basic functionality of Screenlets is covered. We can also take advantage of this by providing similar themes for a unified look and maintaining a high standard of quality for this set.

Here are the screenlets that I propose for the default set, with some existing Screenlets to work off of:

Sidebar
Provide a place to "dock" Screenlets.
Calendar
Show and be able to iterate through a monthly calendar, possibly with highlighted event days according to Google Calendar (through Google's python API) or iCal file.
Tasks
Provide the ability to list, add, complete and remove tasks in a local task list, and possibly use Tasque as a backend.
Weather
Show the current weather conditions and forecast, and optional extended information for any international city in a way that is simple yet effective.
Sensors
Provide one main screenlet to offer information 0n specific system components in customizable views (similar to Ring Sensors, WaterMark and Manometer).
Analog clock
Display the system tine in a traditional analog clock format.
Digital clock
Display the system time in a traditional digital clock format.
RSS reader
Display a select RSS feed entries with the ability to read an entry.
Picture frame
Display a picture, or set of pictures with a slideshow and custom transitions, and the ability to resize, rotate (will need API work), and iterate through pictures -without entering the options menu. Possible support for photo sites such as flickr as well.
Notes
Allow text to be entered, modified, and displayed in a note format, with possible support for Tomboy notes.

Note that all of these Screenlets should also take advantage of fully scalable themes (SVG format), and as previously stated, there should be a unified set of themes that are expressed in all of these screenlets (ex: dark, glass, tango, etc.).

Also take note, that although these will all be an "official" set, we need to be careful and give credit to the original and contributing authors.

What can you do to help?
Offer suggestions! Make mock-up images! If you can, go ahead and dive into the code. Where to start? I suggest that we all focus on one thing at a time, for the greatest effectiveness. For the time being, I say that we should focus on the

Weather Screenlet.

Using the existing code written by Whise, I have set up an etherpad for this Screenlet. If this project gets large enough, a proper Launchpad/Trac or similar service should be used, but this will work for now.

Here is the etherpad for Weather.py based off of Weather Screenlet:

http://etherpad.com/u0B2vMnEhS

Specifically, we need:
  • International support
  • Extended weather information, similar to this weather screenlet.
  • Code simplification, cleanup, and bug fixes.
Theming will be worked on in the polishing process.

Post your feedback please!

No comments:

Post a Comment