Maya Workflow Kit
The whole Maya workflow in Blender, in one install. Free and open source, Blender 4.5 – 5.2.
A Hammerspoon Spoon that logs when Hammerspoon's main thread stalls.
Translation pending
PluginsGitHub @hugohOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Hammerspoon Spoon that logs when Hammerspoon's main thread stalls, to find what makes hotkeys, timers and watchers sluggish
Taken from the repository README
Loading the full README.
Read the full README ↗A Hammerspoon Spoon that logs when Hammerspoon's main thread stalls, so you can find what's making your Hammerspoon setup sluggish.
Repository: https://github.com/hugoh/StallWatchdog.spoon
Nearly all of Hammerspoon runs on a single main thread: hotkeys, timers, watchers (apps, Wi-Fi, USB, screens, sleep/wake), event taps, menu bar items, alerts, and hs -c from the terminal. When any piece of code blocks it (a slow accessibility query against a busy app, hs.execute, a synchronous search over every window), everything else waits:
hs -c from a terminal times outThese stalls are often intermittent, such as a periodic check in some spoon, and the delay shows up wherever you happen to be using Hammerspoon at the time, not in the code that caused it. StallWatchdog runs a short repeating timer and warns in the Console whenever a tick arrives late:
** Warning: StallWatchdog: Main thread stalled 815 ms
The stall is logged after the blocking work returns, so read the lines logged just before it to see what was running. A regular rhythm in the timestamps (every 15 s, every 10 min) usually points at a periodic timer.
Ensure you have Hammerspoon installed, then choose a method:
StallWatchdog.spoon.zip from the latest releaseStallWatchdog.spoon folder~/.hammerspoon/Spoons/hs.reload() in the console)spoon.SpoonInstall:installSpoonFromZip(
"https://github.com/hugoh/StallWatchdog.spoon/releases/latest/download/StallWatchdog.spoon.zip"
)
cd ~/.hammerspoon/Spoons
git clone https://github.com/hugoh/StallWatchdog.spoon.git
The watchdog is off until you start it. Load it in init.lua:
hs.loadSpoon("StallWatchdog")
then switch it on and off from the Hammerspoon Console while you chase a problem:
spoon.StallWatchdog:toggle()
or from a terminal, with hs.ipc loaded:
hs -c 'spoon.StallWatchdog:toggle()'
To keep it always on, start it from init.lua instead:
hs.loadSpoon("StallWatchdog"):start()
Tune it with configure() (all optional, in seconds):
hs.loadSpoon("StallWatchdog"):configure({
interval = 0.05, -- time between ticks
threshold = 0.1, -- how late a tick may arrive before it is logged
reportInterval = 60, -- log a summary line every N seconds (false to disable)
})
While running, the Console gets a line like
60s: ticks=1200 stalls=2 worst=340ms lua=18.412MB (+200.0kB) — counts since the previous
report, plus Lua memory and its change. A steadily growing lua= points at a leak.
One timer callback every interval seconds (20 per second by default) that reads a clock and compares two numbers. It's cheap, but it isn't free, which is why the watchdog starts off.
Full API reference is generated from the docstrings in init.lua (mise run docs).