The idle timeouts currently look at keyboard and mouse events to determine if a user is idle or not. However if the user is doing something like watching a video then the session is in active use, even if there are no input events. Locally there are various mechanism for applications to inform the desktop environment that they should pause idle timeouts. Unfortunately ThinLinc doesn't respect those. As an example, here is how Chromium handles it: https://github.com/chromium/chromium/blob/main/services/device/wake_lock/power_save_blocker/power_save_blocker_linux.cc A technical hurdle is that the applications talk to some desktop component, not the display server, when doing this. So we need to find out what signals are sent to the display server (e.g. DPMS?), or if we can intercept this somehow.
We should probably also propagate this signal to the client so that the local screensaver there doesn't trigger.
A mitigation could also be to warn the user that the idle timer is about to kick in. E.g. GNOME slowly fades the screen to black before the screensaver, giving the user a chance to move the mouse or press a key.