package evidence // foregroundTracker remembers the last observed foreground window so the // Windows polling Source emits only on change. hwnd is held as uintptr so this // file stays platform-neutral (it must build and test on Linux). type foregroundTracker struct { primed bool available bool hwnd uintptr title string } // changed reports whether (available, hwnd, title) differs from the last // observation and records the new values. The first call always returns true. func (t *foregroundTracker) changed(available bool, hwnd uintptr, title string) bool { if t.primed && available == t.available && hwnd == t.hwnd && title == t.title { return false } t.primed, t.available, t.hwnd, t.title = true, available, hwnd, title return true }