Precise user-idle detection for retreat (ext-idle-notify)
@NovusEdge is already working on this.
Since Jul 9, 2026.
- Dominant language
- GDScript
- Stars
- 2
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Context
The retreat behavior (pet ambles to a corner and sleeps) has two intended triggers:
- A — rare cadence (~every 30 min of runtime): implemented / planned as the reliable path.
- B — user inactivity (~5 min of no input → sleep until the user returns): stubbed for now.
Why B is stubbed
goob is a click-through overlay with mouse passthrough clipped to the pet's rect, so the app never sees the global cursor when it's off the pet — we can't measure idleness from cursor movement. And on the dev machine (KDE Plasma / kwin_wayland), the easy system idle sources don't work on Wayland:
org.freedesktop.ScreenSaver.GetSessionIdleTime→NotSupportedon Wayland (X11-only).logindIdleHintstaysno/ only flips at the coarse system idle timeout.- No
swayidle/kidletimepresent.
The proper cross-compositor signal is the ext-idle-notify-v1 Wayland protocol (KWin supports it), which needs a native Wayland client — a small GDExtension or an external helper binary invoked from Godot.
Task
Implement Trigger B via a real idle source:
-
ext-idle-notify-v1helper (GDExtension or external process that emits idle/resume events), or a best-effortlogind IdleHintpoll where it works. - Wire it into the stubbed
retreatidle hook in the behavior engine. - Feature-detect and degrade gracefully (cadence-only) when no idle source is available.
Until then, retreat runs on the cadence trigger only.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.