optimize modules
datetime is probably good enough. Only wakes up during minute change.
network can probably be pinged by events. E.g. onconnect, ondisconnect events of network manager can send SIGUSR2 or something to network to inform of network change events. Can still poll every 20m or so for uncaught events.
transfer may not be able to slim down much more
bluetooth maybe pushed events like network
mem may be reasonable
cpu - calling top -bn 2 is surprisingly slow and takes a lot to process the rest. This one is running most often, and usually has a CPU impact. Probably best target to focus on. May be worth writing in C, either as self-contained binary in modules, or even a function inside the client that spawns off a thread.
gpu - already reduced to single call to nvidia. Probably not much more to be done, except hide some of the info (RPM?) by default and show on click. Reduce the scope of the common query
packages - Probably fine, maybe adjusting some of the text processing to do better. Currently not -Sying pacman itself, and is relying on an external cron job to do that. Loses it's usefulness when not updating. Should bring the update call inside (but privileged command! oh joy).
uptime - Would like to see this have a timer roll off, or proportional to the uptime. Every couple minutes right after boot, then every dozen minutes, every hour.
weather - can probably sync this with NOAA update schedule
linux - runs once. Works for me.
network was changed to event-based using dbus signals ( ba6b10b )
transfer was not really used, so the numbers are now hidden by default, and just show for a short period on click.
gpu, however, ballooned in d4cfcb0