roadmap of the chime feature in the analog clock

John Layt johnlayt at
Tue Feb 1 13:50:28 CET 2011

On Saturday 15 January 2011 19:29:29 sunny sharma wrote:

> To make things clear for me i would reguest you guys to tell me the further
> steps that i should take.
> So that i can clear up my mind and come up with a clear algorithm of what
> should be done.

[Catching up on my email now that I'm back from holiday]

The problem here is the old one of balancing features for the power users 
against ease of use for the majority of users, it just means we have to make 
the code do more of the work instead of the user, or rather just be smarter 
about it.

The most common features of chiming clocks are:
 * Quarters, i.e. different chimes at 00, 15, 30 and 45
 * Striking the hour, i.e. 12 strikes at midnight
 * The hour chime plays before the hour, with the first hour strike playing 
exactly on the hour

Combined with the "Speak Time" feature, we would obviously want to allow 
slightly more options, such as only chiming/speaking on the hour, turning off 
striking the hours (which can get very annoying and is meaningless for speak 
time), or chiming/speaking every x minutes.  I'm sure people can think of 
plenty more "nice-to-have-but-rarely-used" options that we don't want to 
expose most users to.

Expecting a user to configure a ui for all that is just not on.

The key to keeping it simple is to NOT allow the user to configure the sounds 
and when they play in the ui as most users will never need to do this, and 
catering for all the options is just too complex.  Instead we would define a 
Chime Theme file format that we and power users can use to configure how a 
Chime Theme works and what sound files to use, and provide the user with a 
simple list of available themes to choose from.  We could even allow 
downloading new themes from GHNS, in which case we would ship KDE with just a 
very simple theme.

Here's how a single ui section for "Audible Feedback" in the "General" tab 
would look like:

A combo for "Feedback Type" with options for:
 * None
 * Speak Time
 * Play Chimes

A combo for "Frequency" that is activated only if "Feedback Type" is not 
"None", with options for:
 * Chime Theme Defaults (only show if "Play Chimes" chosen)
 * Hourly
 * Quarters
 * Every x Minutes (better wording needed)

(Note that Hourly and Quarters are just synonyms for every 60 or 15 minutes.)

Next to this combo is a minutes input spin box activated when "Every x 
Minutes" is chosen.  Alternatively we do "Frequency" as a radio button with 
the spinbox inline in the "Every x minutes" text.

A combo for "Chime Theme" which is only activated if "Play Chimes" is 
selected, with a list of the currently available themes:
 * Beep
 * Time Pips
 * Westminster
 * Cuckoo
 * ...

Next to this could be a GHNS button to download more themes.

Optionally under this could be a tick-box for "Strike Hours" which is only 
activated if "Play Chimes" is activated, to turn off striking hours which 
could get annoying.  Alternatively it could be integrated into the "Feedback 
Type" combo as separate options for "Play Chimes and Strikes" "Play Chimes 
Only" and "Play Strikes Only".

I think 3 or 4 lines of simple config options is not too bad.  The "Feedback 
Type" and "Chime Theme" could even be merged for an even simpler interface.

The Chime Theme would actually be a self-contained folder holding a config 
file and all required sound files, and would look something like this:

    themename.desktop - Holds name of theme and default config options
    default.ogg       - Default sound to play if no specific sound

In the .desktop file itself, the config options would allow you to point to 
other sound files in other locations and set default frequency, e.g.:


There's lots of options that could be set here, but I won't detail them now.

Some possible Chime Themes:

Beep:         A simple beep with slightly different ones for hours, quarters,
              and minutes. Ship with KDE, download the rest.
Time Pips:
Ships Bells:

At first glance it may seem a fairly complex solution, but I think the 
implementation will actually be fairly simple and not add much overhead, the 
hardest part is designing the config file to be flexible enough.


P.S. This is what you get from staring at the ceiling at 4am in the morning 
thanks to jet-lag :-)

More information about the Plasma-devel mailing list