Cross-platform clipboard sync in Rust – polling vs OS events

Hi everyone,
I’m new here and working on a personal Rust project: a local Wi-Fi clipboard sync tool for Windows (GNU based linker), Linux, and FreeBSD.

The idea is simple: detect clipboard changes on one machine and sync text/images to others on the same network. I’m keeping the core logic OS-agnostic and planning to add platform-specific backends later.

Right now I’m stuck on some design questions:

  • Most clipboard APIs don’t expose metadata like last modified time
  • That seems to force polling + hashing to detect changes
  • Polling too fast wastes CPU, too slow adds latency
  • Event-based APIs exist (e.g. Windows clipboard notifications), but they’re OS-specific

My questions:

  • What polling intervals are considered reasonable in practice?
  • Is hybrid design (OS events where available + polling fallback) the right approach?
  • Are there existing Rust patterns/crates I should study for this problem?

Any guidance or real-world experience would really help. Thanks!

poll every second seems reasonable to me, users are unlikely to have two clipboard values in less than a second and wanting to keep both plus a second of delay is probably still not noticeable for sync across devices