Dali Clock 2.23

Dali Clock 2.23, source and binaries for MacOS 10.4 and PalmOS.

This will probably be the last release in a while; while finishing up the OSX version, I took the opportunity to fix some stuff that had been bugging me about the X11 and PalmOS versions too.


  • OSX: prettier preferences panel (thanks riffraff!)
  • PalmOS:
    • smoother morphing;
    • bigger "seconds only" font;
    • color cycling when possible;
    • high-resolution mode when possible.
  • X11:
    • smoother morphing;
    • better contrast and variety in the cycled colors;
    • added three new, larger built-in fonts.

Let me know how it works on your various PalmOS devices; it works good on my Treo 650 (which is both color and hires) but I don't know how much variety there is among the other PDAs.

<lj-cut text="Two things still bug me about the PalmOS version..."> Two things still bug me about the PalmOS version:

  • Would someone like to make me an icon for it that is color and matches the style of modern PalmOS apps? (I'm also not clear on how you go about embedding both a color and mono icon into a .prc file, but people seem to do it).
  • To make hires mode work, I embedded a bigger font in the program. There should be four fonts: "normal" and "seconds-only" each for lores and hires modes. But right now there are only three: I couldn't embed the seconds-only-hires font, because that made my data segment big enough to push me over the "jmp-fits-in-a-short" boundary and the linker died. I gather that workarounds for this sort of thing exist, but I couldn't figure it out. If you know how to make it go, please send me a patch!

<lj-cut text="Also, I might as well mention a couple of GTK-related things...">

Also, I might as well mention a couple of GTK-related things:

  • You can embed xdaliclock in your Gnome Panel by installing the "Gnome Swallow" meta-applet. I've found it to be a little flaky, but it basically works with whatever Gnome comes with FC4.
  • Because of afforementioned flakiness, back in 2003 I started playing around with a GTK/GDK port of Dali Clock that didn't use Xlib at all (the eventual goal being to make it able to embed itself in the panel directly). I never finished it, because going through the GDK layer on top of Xlib made it use way too much CPU, and I got pissed off trying to work around it. So, the half-finished, don't-use-this-no-really GTK version of Dali Clock is in the source tarball too. There's not much chance I'll ever work on it again, but maybe one of you Gnome folks might want to. If you make it go, send me the changes.

Tags: , , , , ,
Current Music: Jem -- Just a Ride ♬

29 Responses:

  1. pdx6 says:

    Daliclock appears to work correctly on the Palm TX, but won't allow "tall mode", which is where you can have a longer screen by switch the on-screen grafiti pad off.

    • jwz says:

      What do you mean by "won't allow"? What happens? Do other apps do this?

      Since I don't have one, haven't seen one, and don't know how to run one in the emulator, I'm not sure what to make of this...

      • pdx6 says:

        I'm not a Palm developer, so I'll do my best to explain more. On the Palm TX, there are 4 video modes. The first the standard portrate mode like you have on the Treo, the second is the extended portrate mode where the typical palm grafiti pad is replaced with more screen space. Then there is landscape mode and extended landscape mode which basically flips the screen 90 degrees with the same grafiti pad/no graffiti pad on the right side.

        There are two on-screen buttons to switch between portrate and landscape, and normal and extended modes. For portrate and landscape, the clock renders normally and rotates 90 degress as expected. For extended modes in either case, the button to go "full screen" is grayed out, and if you attempt to tap it with the stylus, the clock foreground font turns white for a solid second, then returns to what ever color it was before.

        • parkrrrr says:

          It's really three modes, though. Portrait with the virtual silkscreen area and landscape with the virtual silkscreen area are the same size.

          Also, if you switch the handedness in prefs, the virtual silkscreen area (and the hard buttons) are on the left. Again, that doesn't seem to make any difference to the app. (Now if only it'd remember my handedness when some badly-written pre-OS5 app causes a soft reset...)

      • pdx6 says:

        For the last question, other apps typically extend to use the full screen. Blazer and pssh, for example, will simply re-draw the page to use the full screen once the "full screen" button has been pressed.

      • unwiredben says:

        The TX and other 320x480 devices have a "dynamic input area" that can be dismissed by user or program action. This is where the Graffiti input area appears, but it can be used by programs to show additional data.

        To support it requires extra programming to tell the OS that you can use the area and to handle the notifications that get sent when the area is lowered or raised. The PalmResize library on SourceForge is my favorite way to handle it, since it abstracts differences between different DIA implementations.

  2. I see your posts via a friend of mines friend page and I figure if anyone can assist you'd probably be able.

    I need script for a simple countdown clock to enter into my livejournal.

    I am counting down the time until 6/28/2006 12pm (my c-section date).

    Any assistance would be greatly appreciated.

  3. obreerbo says:

    The new version worked on my Fossil Abacus WristPDA - and it now recognizes the "Command" stroke and brings up the toolbar, from which I can get to the menu and change the settings, too. (Light background looks better on the watch display.) Cool!

    The right-side buttons on the watch (including all three actions of the rocker switch) all bring up the date display, which is pretty much a good thing, but perhaps it would be better if one of them brought up the settings dialog instead, at least on the WristPDA. I'll see if I can compile the source here, and, if I can make it work and make the change, I'll send a patch.

    Naturally, there's still no way I can see to use this as a "watch app"...besides the CPU issue, watch apps require special programming techniques (as they're actually "sublaunched" in the context of another application) and look like they're a pain in the ass to do correctly.

    • jwz says:

      It is a Moral Imperative that you port Dali Clock to "watch app mode" on that thing. For low-power mode it could be in HH:MM mode, so that it would only do an animation once a minute or when you asked for the date.

  4. unwiredben says:

    To get around the data space problem, you should embed the fonts as resources and lock the resources at runtime to get pointers to them. Having them as raw data is a bad use of the limited data segment. The PilRC language lets you specify binary resource as either HEX data or as a file that gets included as a resource.

    For supporting multiple icons, look at the ICONFAMILY keyword in the PilRC documentation. That lets you create a bitmap family with multiple color depths and resolutions.

    • obreerbo says:

      Something like this will be especially important as I work on the Moral Imperative given to me by Jamie (above)..."watch apps" for the Abacus WristPDA can't use any data from the data segment when they run in watch mode.

  5. If you have a color set and color cycling off, then turn color cycling back on and then turn it off again, the time will be the wrong color until you relaunch.

    Any chance of hiding the dock icon?

  6. capo_mojo says:

    Works on my Tungsten C. It does something weird though...each second isn't the same length of time. It seems to speed up and slow down intermittently. Over 10 seconds or so it averages out properly. Maybe this is a long-time feature of Dali Clock though...I haven't run any of the versions from the dismal past.

    • hawke666 says:

      This is how it's always been for me on my Zire 71.

    • jwz says:

      Yeah, that's because I don't know how to get the current time with sub-second accuracy on PalmOS.

      You can get the wall-clock in seconds; and you can get a counter that ticks every 1/100th second since boot-up, but that does not tick while the device is suspended; but that's all.

      I feel like it should be possible to write a "wall clock in sub-second resolution" routine given those inputs, but it was a pain in the butt and I gave up.

      Someone want to write that for me?

      • w8tvi says:

        You might want to check out BigClock.
        I've been watching the seconds tick by and I haven't noticed any changes in the speed they tick.
        Its also OSS.

  7. lroberson says:


    It, of course, works beautifully in my Treo 650.

    I realize this is a labor of love/side-project kinda thing, but are you accepting ideas/feature requests? ;)

  8. colonwq says:

    The new version work on my LifeDrive.

    The 'soft writing' area cannot be minimized of course just like the T|X model.


  9. It works just dead sexy on my Tungsten C... Very cool.