Dashboard Tips

Change the Dashboard shelf’s background image:

In 10.4, when you press the ‘+’ symbol in the bottom left corner while Dashboard is active,
the Dashboard shelf slides up into view containing all your widgets.
The background image used for the shelf can be found here:

…System/Library/CoreServices/Dock.app/Contents/Resources/perf.png

You can replace this image with any PNG image you like and it’ll be tiled, or you can use a single, full width image.
The shelf is 118 pixels high and as wide as your monitor (1024 pixels in my case),
so you can use those dimensions to construct your own shelf background.
The bottom area (where the widget names appear) will need to be lighter in color for best results,
as the text is both light and shadowed.
The height of the text area is 14 pixels.
Note also that you do not need to make your PNG file the full width of your monitor —
the image will repeat horizontally if it’s not full-width.

I used a tiny 2KB PNG to create the above full shelf background.

Speed up Dashboard by clearing out its cache:
Over the course of the past few months, Dashboard had become painfully slow for me,
sometimes taking 10 to 20 seconds to load.

I took a look at:


~/Library/Caches/ DashboardClient

…and found that the Dashboard cache was 20MB !!!.
This seemed excessive (plus, I had a fairly recent backup), so I took a gamble and deleted all the files in the DashboardClient folder. Dashboard now loads almost instantaneously for me.

Quickly free memory used by Dashboard widgets:
If you only use Dashboard on rare occasions, and don’t want all those widgets to stay running forever,
try the following AppleScript:
 

tell application “Dock”
quit
launch
end tell

This will relaunch the Dock and, since all the Dashboard widgets are subprocesses of the dock, they will be closed. Widgets will stay closed until Dashboard is invoked again.

This is a handy way to quickly free up the RAM used by open Dashboard widgets.
Run it, and the RAM is released. Press F12 again after that, and you’ll see that your open Widgets are all still open (you’ll just have to wait through that slight delay as Dashboard ‘activates’ them again).

Detach widgets from the Dashboard:

If you’d like one of your Dashboard widgets to be available all the time, instead of only when you have activated Dashboard via F12, then activate the Dashboard dvelopment mode.
Open the Terminal and type defaults write:
com.apple.dashboard devmode YES
 

…and press Return. Then logout and log back in again.
Now debugging mode is activated.

To get a widget off of the Dashboard and onto your desktop, just do the following:
 

1 – Activate Dashboard by pressing F12 (or whatever key you’ve assigned to Dashboard).
2 – Begin dragging the widget.
3 – Press F12 again, before letting up on the mouse button.
4 – Drop the widget wherever you want it.

You can do the same thing in reverse to drag the widget back onto the Dashboard. Also of interest: while a widget is frontmost, you can press Command-R to reload it. (This may be necessary if a widget is buggy and gets messed up somehow.) There’s even a nifty Core Image-based twirl effect to accompany the reload. 

However, I find it extremely useful — there are certain widgets that you’d just rather see and use all the time, instead of only in Dashboard mode. Note that the widgets float above all windows, so this trick is most useful if you have some spare desktop space.

To disable this mode, repeat the above command, but replace YES with NO, and then logout/login again. Note that you can also restart the Dock to make the changes take effect (the Dock controls the Dashboard).

Widget Limbo !

When you have dragged a widget out of the Dashboard layer you can make it go into Widget Limbo like this: press and hold the mouse button over the widget; do not move the mouse. Press F12. Release the mouse button.

The widget will now belong outside (beneath) Dashboard, but only be visible (in a darkened state) when Dashboard is active. So it’s not possible to close it nor move it. (Normally you can hold the Option key to close a widget).